Completed
Push — master ( 0d4b62...49eab6 )
by Adrien
07:35
created

providerGetAccessibleSubQuery()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ApplicationTest\Repository;
6
7
use Application\Model\Account;
8
use Application\Model\Transaction;
9
use Application\Model\TransactionLine;
10
use Application\Model\User;
11
use Application\Repository\TransactionLineRepository;
12
use ApplicationTest\Traits\LimitedAccessSubQuery;
13
use Cake\Chronos\Date;
14
15
/**
16
 * @group Repository
17
 */
18
class TransactionLineRepositoryTest extends AbstractRepositoryTest
19
{
20
    use LimitedAccessSubQuery;
21
22
    /**
23
     * @var TransactionLineRepository
24
     */
25
    private $repository;
26
27
    public function setUp(): void
28
    {
29
        parent::setUp();
30
        $this->repository = _em()->getRepository(TransactionLine::class);
31
    }
32
33
    public function providerGetAccessibleSubQuery(): array
34
    {
35
        $all = [14000, 14001, 14002, 14003, 14004, 14005, 14006, 14007];
36
37
        return [
38
            ['anonymous', []],
39
            ['bookingonly', []],
40
            ['individual', []],
41
            ['member', [14000, 14002, 14003, 14004]],
42
            ['responsible', $all],
43
            ['administrator', $all],
44
        ];
45
    }
46
47
    public function testFindByDebitOrCredit(): void
48
    {
49
        $user = _em()->getRepository(User::class)->getByLogin('administrator');
50
        User::setCurrent($user);
51
52
        $account = _em()->getReference(Account::class, 10096);
53
        self::assertCount(4, $account->getTransactionLines(), 'Account must have 4 transactions');
54
55
        $transaction = new Transaction();
56
        $transaction->setName('foo');
57
        $transaction->setTransactionDate(Date::today());
58
        _em()->persist($transaction);
59
60
        $transactionLine = new TransactionLine();
61
        _em()->persist($transactionLine);
62
        $transactionLine->setTransaction($transaction);
63
        $transactionLine->setTransactionDate(Date::today());
64
        $transactionLine->setDebit($account);
65
        $transactionLine->setBalance('20');
66
67
        $transactionLine2 = new TransactionLine();
68
        _em()->persist($transactionLine2);
69
        $transactionLine2->setTransaction($transaction);
70
        $transactionLine2->setTransactionDate(Date::today());
71
        $transactionLine2->setCredit($account);
72
        $transactionLine2->setBalance('20');
73
74
        _em()->flush();
75
76
        self::assertCount(6, $account->getTransactionLines(), 'Account must have two new transactions');
77
78
        $otherAccount = _em()->getReference(Account::class, 10035);
79
        $transactionLine->setDebit($otherAccount);
80
        _em()->flush();
81
82
        self::assertCount(5, $account->getTransactionLines(), 'Original account with one less transaction');
83
        self::assertSame($transactionLine->getDebit(), $otherAccount);
84
    }
85
}
86