Failed Conditions
Push — master ( 7c4d30...258d19 )
by Adrien
07:17
created

AccountRepositoryTest::testGetOrCreate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 0
dl 0
loc 13
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ApplicationTest\Repository;
6
7
use Application\DBAL\Types\AccountTypeType;
8
use Application\Model\Account;
9
use Application\Model\User;
10
use Application\Repository\AccountRepository;
11
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
12
13
/**
14
 * @group Repository
15
 */
16
class AccountRepositoryTest extends AbstractRepositoryTest
17
{
18
    /**
19
     * @var AccountRepository
20
     */
21
    private $repository;
22
23
    public function setUp(): void
24
    {
25
        parent::setUp();
26
        $this->repository = _em()->getRepository(Account::class);
27
    }
28
29
    public function testOneUserCanHaveOnlyOneAccount(): void
30
    {
31
        $this->expectException(UniqueConstraintViolationException::class);
32
        $this->getEntityManager()->getConnection()->insert('account', ['owner_id' => 1000, 'iban' => uniqid()]);
33
    }
34
35
    public function testGetOrCreate(): void
36
    {
37
        $user = new User();
38
        $user->setFirstName('Foo');
39
        $user->setLastName('Bar');
40
41
        $account = $this->repository->getOrCreate($user);
42
43
        self::assertSame($user, $account->getOwner());
44
        self::assertSame('Foo Bar', $account->getName());
45
        self::assertSame(AccountTypeType::LIABILITY, $account->getType());
46
        self::assertSame('20300009', $account->getCode());
47
        self::assertSame('Acomptes de clients', $account->getParent()->getName());
48
    }
49
}
50