Failed Conditions
Push — master ( 276992...d29638 )
by Adrien
06:52
created

ExpenseClaimTest::testGetPermissions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 36
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 26
nc 1
nop 0
dl 0
loc 36
rs 9.504
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ApplicationTest\Model;
6
7
use Application\DBAL\Types\ExpenseClaimStatusType;
8
use Application\Model\AccountingDocument;
9
use Application\Model\ExpenseClaim;
10
use Application\Model\Transaction;
11
use Application\Model\User;
12
use PHPUnit\Framework\TestCase;
13
14
class ExpenseClaimTest extends TestCase
15
{
16
    public function testDocumentRelation(): void
17
    {
18
        $document = new AccountingDocument();
19
20
        $expense = new ExpenseClaim();
21
        $document->setExpenseClaim($expense);
22
23
        $expense2 = new ExpenseClaim();
24
25
        self::assertCount(1, $expense->getAccountingDocuments());
26
27
        $document->setExpenseClaim($expense2);
28
29
        self::assertCount(0, $expense->getAccountingDocuments());
30
        self::assertCount(1, $expense2->getAccountingDocuments());
31
    }
32
33
    public function testTransactionRelation(): void
34
    {
35
        $transaction = new Transaction();
36
        $transaction2 = new Transaction();
37
38
        $expense = new ExpenseClaim();
39
40
        $transaction->setExpenseClaim($expense);
41
        $transaction2->setExpenseClaim($expense);
42
43
        self::assertCount(2, $expense->getTransactions());
44
45
        $expense2 = new ExpenseClaim();
46
47
        $transaction2->setExpenseClaim($expense2);
48
49
        self::assertCount(1, $expense->getTransactions());
50
        self::assertCount(1, $expense2->getTransactions());
51
    }
52
53
    public function testGetPermissions(): void
54
    {
55
        $expenseClaim = new ExpenseClaim();
56
57
        $actual = $expenseClaim->getPermissions();
58
        $expected = [
59
            'create' => false,
60
            'read' => false,
61
            'update' => false,
62
            'delete' => false,
63
        ];
64
        self::assertEquals($expected, $actual, 'should be able to get permissions as anonymous');
65
66
        // Make the current user as creator
67
        $user = new User();
68
        User::setCurrent($user);
69
        $expenseClaim->timestampCreation();
70
71
        $actual2 = $expenseClaim->getPermissions();
72
        $expected2 = [
73
            'create' => true,
74
            'read' => true,
75
            'update' => true,
76
            'delete' => true,
77
        ];
78
        self::assertEquals($expected2, $actual2, 'should be able to get permissions as creator');
79
80
        $expenseClaim->setStatus(ExpenseClaimStatusType::PROCESSED);
81
        $actual3 = $expenseClaim->getPermissions();
82
        $expected3 = [
83
            'create' => true,
84
            'read' => true,
85
            'update' => false,
86
            'delete' => false,
87
        ];
88
        self::assertEquals($expected3, $actual3, 'should be able to get permissions as creator');
89
    }
90
}
91