4 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceAcceptanceDatabaseGateway.php';
5 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceAcceptanceEntity.php';
23 if(!defined(
'MDB2_AUTOQUERY_INSERT'))
25 define(
'MDB2_AUTOQUERY_INSERT', 1);
36 $database = $this->getMockBuilder(
'ilDB')->disableOriginalConstructor()->getMock();
38 $this->assertInstanceOf(
'ilTermsOfServiceAcceptanceDatabaseGateway', $gateway);
47 $entity->setUserId(666);
48 $entity->setIso2LanguageCode(
'de');
49 $entity->setSource(
'/path/to/file');
50 $entity->setSourceType(0);
51 $entity->setText(
'PHP Unit');
52 $entity->setTimestamp(time());
53 $entity->setHash(md5($entity->getText()));
57 $database = $this->getMockBuilder(
'ilDB')->disableOriginalConstructor()->getMock();
58 $result = $this->getMockBuilder(
'MDB2_BufferedResult_mysqli')->disableOriginalConstructor()->getMock();
60 $database->expects($this->once())->method(
'queryF')->with(
'SELECT id FROM tos_versions WHERE hash = %s AND lng = %s', array(
'text',
'text'), array($entity->getHash(), $entity->getIso2LanguageCode()))->will($this->returnValue(
$result));
61 $database->expects($this->once())->method(
'numRows')->with(
$result)->will($this->returnValue(0));
62 $database->expects($this->once())->method(
'nextId')->with(
'tos_versions')->will($this->returnValue($expected_id));
64 $expectedVersions = array(
65 'id' => array(
'integer', $expected_id),
66 'lng' => array(
'text', $entity->getIso2LanguageCode()),
67 'src' => array(
'text', $entity->getSource()),
68 'src_type' => array(
'integer', $entity->getSourceType()),
69 'text' => array(
'clob', $entity->getText()),
70 'hash' => array(
'text', $entity->getHash()),
71 'ts' => array(
'integer', $entity->getTimestamp())
73 $expectedTracking = array(
74 'tosv_id' => array(
'integer', $expected_id),
75 'usr_id' => array(
'integer', $entity->getUserId()),
76 'ts' => array(
'integer', $entity->getTimestamp())
78 $database->expects($this->exactly(2))->method(
'insert')->with(
79 $this->logicalOr(
'tos_versions',
'tos_acceptance_track'),
80 $this->logicalOr($expectedVersions, $expectedTracking)
84 $gateway->trackAcceptance($entity);
93 $entity->setUserId(666);
94 $entity->setIso2LanguageCode(
'de');
95 $entity->setSource(
'/path/to/file');
96 $entity->setSourceType(0);
97 $entity->setText(
'PHP Unit');
98 $entity->setTimestamp(time());
99 $entity->setHash(md5($entity->getText()));
103 $database = $this->getMockBuilder(
'ilDB')->disableOriginalConstructor()->getMock();
104 $result = $this->getMockBuilder(
'MDB2_BufferedResult_mysqli')->disableOriginalConstructor()->getMock();
106 $database->expects($this->once())->method(
'queryF')->with(
'SELECT id FROM tos_versions WHERE hash = %s AND lng = %s', array(
'text',
'text'), array($entity->getHash(), $entity->getIso2LanguageCode()))->will($this->returnValue(
$result));
107 $database->expects($this->once())->method(
'numRows')->with(
$result)->will($this->returnValue(1));
108 $database->expects($this->once())->method(
'fetchAssoc')->with(
$result)->will($this->returnValue(array(
'id' => $expected_id)));
110 $expectedTracking = array(
111 'tosv_id' => array(
'integer', $expected_id),
112 'usr_id' => array(
'integer', $entity->getUserId()),
113 'ts' => array(
'integer', $entity->getTimestamp())
115 $database->expects($this->once())->method(
'insert')->with(
'tos_acceptance_track', $expectedTracking);
118 $gateway->trackAcceptance($entity);
132 'src' =>
'/path/to/file',
134 'text' =>
'PHP Unit',
135 'hash' => md5(
'PHP Unit'),
136 'accepted_ts' => time()
139 $database = $this->getMockBuilder(
'ilDB')->disableOriginalConstructor()->getMock();
140 $database->expects($this->once())->method(
'fetchAssoc')->will($this->onConsecutiveCalls($expected));
142 $gateway->loadCurrentAcceptanceOfUser($entity);
144 $this->assertEquals($expected[
'id'], $entity->getId());
145 $this->assertEquals($expected[
'usr_id'], $entity->getUserId());
146 $this->assertEquals($expected[
'lng'], $entity->getIso2LanguageCode());
147 $this->assertEquals($expected[
'src'], $entity->getSource());
148 $this->assertEquals($expected[
'src_type'], $entity->getSourceType());
149 $this->assertEquals($expected[
'text'], $entity->getText());
150 $this->assertEquals($expected[
'accepted_ts'], $entity->getTimestamp());
151 $this->assertEquals($expected[
'hash'], $entity->getHash());
160 $entity->setUserId(4711);
162 $database = $this->getMockBuilder(
'ilDB')->disableOriginalConstructor()->getMock();
163 $database->expects($this->once())->method(
'quote')->with($entity->getUserId(),
'integer')->will($this->returnValue($entity->getUserId()));
164 $database->expects($this->once())->method(
'manipulate')->with(
'DELETE FROM tos_acceptance_track WHERE usr_id = ' . $entity->getUserId());
166 $gateway->deleteAcceptanceHistoryByUser($entity);
testAcceptanceHistoryOfAUserIsDeleted()
testAcceptanceIsTrackedAndCreatesANewTermsOfServicesVersion()
testInstanceCanBeCreated()
testCurrentAcceptanceOfUserIsLoaded()
testAcceptanceIsTrackedAndRefersToAnExistingTermsOfServicesVersion()