AuditExtensionTest::testAuditOnRecordDelete()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
rs 9.4285
cc 1
eloc 15
nc 1
nop 0
1
<?php
2
3
namespace SilverStripe\DataObjectAuditor\Tests\Extensions;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\DataObjectAuditor\Models\Audit;
7
use SilverStripe\DataObjectAuditor\Models\AuditValue;
8
use SilverStripe\DataObjectAuditor\Tests\Stubs\MockObject;
9
10
/**
11
 * Class AuditExtensionTest
12
 */
13
class AuditExtensionTest extends SapphireTest
14
{
15
    protected static $fixture_file = '../fixtures.yml';
16
17
    protected static $extra_dataobjects = [
18
        MockObject::class
19
    ];
20
21
    public function testNoAuditOnRecordInsert()
22
    {
23
        $mock = MockObject::create()
24
            ->setField('Field1', 'Field1Value')
25
            ->setField('Field2', 'Field2Value');
26
        $mockID = $mock->write();
27
28
        $this->assertNull(Audit::get()->filter([
29
            Audit::DB_MODEL_ID => $mockID,
30
            Audit::DB_MODEL_NAME => MockObject::class
31
        ])->first());
32
    }
33
34
    public function testAuditOnRecordUpdate()
35
    {
36
        $mock = $this->objFromFixture(MockObject::class, 'test1');
37
        $prevVal = $mock->getField('Field1');
38
        $newVal = 'moo';
39
        $auditRecord = Audit::get()->filter([
40
            Audit::DB_MODEL_ID => $mock->ID,
41
            Audit::DB_MODEL_NAME => MockObject::class
42
        ]);
43
        $this->assertNull($auditRecord->last());
44
        $fetchedMock = MockObject::get()->byID($mock->ID);
45
        $fetchedMock->setField('Field1', $newVal)->write();
46
        $this->assertNotNull($auditRecord->last());
47
        $auditValue = $auditRecord->last()->getPreviousFieldValue('Field1');
48
        $this->assertEquals($prevVal, $auditValue);
49
        $this->assertEquals($auditRecord->last()->getField(Audit::DB_MUTATION_PEFORMED), 'update');
50
    }
51
52
    public function testAuditOnRecordDelete()
53
    {
54
        $mock = $this->objFromFixture(MockObject::class, 'test2');
55
        $field1Val = $mock->getField('Field1');
56
        $field2Val = $mock->getField('Field2');
57
        $mockID = $mock->ID;
58
        $mock->delete();
59
        $auditRecord = Audit::get()->filter([
60
            Audit::DB_MODEL_ID => $mockID,
61
            Audit::DB_MODEL_NAME => MockObject::class
62
        ])->last();
63
        $auditF1Value = $auditRecord->getPreviousFieldValue('Field1');
64
        $auditF2Value = $auditRecord->getPreviousFieldValue('Field2');
65
        $this->assertEquals($field1Val, $auditF1Value);
66
        $this->assertEquals($field2Val, $auditF2Value);
67
        $this->assertEquals($auditRecord->getField(Audit::DB_MUTATION_PEFORMED), 'delete');
68
    }
69
}
70