24 : void
25 {
27 $entity->withUserId(666);
28 $entity->withDocumentId(4711);
29 $entity->withTitle('Document PHP Unit');
30 $entity->withSerializedCriteria('');
31 $entity->withText('PHP Unit');
32 $entity->withTimestamp(time());
33 $entity->withHash(md5($entity->getText()));
34
35 $expected_id = 4711;
36
37 $database = $this->getMockBuilder(ilDBInterface::class)->getMock();
38 $result = $this->getMockBuilder(ilDBStatement::class)->getMock();
39
40 $database
41 ->expects($this->once())
42 ->method('queryF')
43 ->with(
44 'SELECT id FROM tos_versions WHERE hash = %s AND doc_id = %s',
45 ['text', 'integer'],
46 [$entity->getHash(), $entity->getDocumentId()]
47 )->will($this->returnValue(
$result));
48
49 $database
50 ->expects($this->once())
51 ->method('numRows')
53 will($this->returnValue(0));
54
55 $database
56 ->expects($this->once())
57 ->method('nextId')
58 ->with('tos_versions')
59 ->will($this->returnValue($expected_id));
60
61 $expectedVersions = [
62 'id' => ['integer', $expected_id],
63 'doc_id' => ['integer', $entity->getDocumentId()],
64 'title' => ['text', $entity->getTitle()],
65 'text' => ['clob', $entity->getText()],
66 'hash' => ['text', $entity->getHash()],
67 'ts' => ['integer', $entity->getTimestamp()]
68 ];
69 $expectedTracking = [
70 'tosv_id' => ['integer', $expected_id],
71 'usr_id' => ['integer', $entity->getUserId()],
72 'criteria' => ['clob', $entity->getSerializedCriteria()],
73 'ts' => ['integer', $entity->getTimestamp()]
74 ];
75
76 $database
77 ->expects($this->exactly(2))
78 ->method('insert')
79 ->with(
80 $this->logicalOr('tos_versions', 'tos_acceptance_track'),
81 $this->logicalOr($expectedVersions, $expectedTracking)
82 );
83
85 $gateway->trackAcceptance($entity);
86 }