ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
ilTermsOfServiceAcceptanceDatabaseGatewayTest.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Services/TermsOfService/classes/class.ilTermsOfServiceAcceptanceDatabaseGateway.php';
5require_once 'Services/TermsOfService/classes/class.ilTermsOfServiceAcceptanceEntity.php';
6
12{
16 protected $backupGlobals = false;
17
21 public function setUp()
22 {
23 }
24
28 public function testInstanceCanBeCreated()
29 {
30 $database = $this->getMockBuilder('ilDB')->disableOriginalConstructor()->getMock();
31 $gateway = new ilTermsOfServiceAcceptanceDatabaseGateway($database);
32 $this->assertInstanceOf('ilTermsOfServiceAcceptanceDatabaseGateway', $gateway);
33 }
34
39 {
41 $entity->setUserId(666);
42 $entity->setIso2LanguageCode('de');
43 $entity->setSource('/path/to/file');
44 $entity->setSourceType(0);
45 $entity->setText('PHP Unit');
46 $entity->setTimestamp(time());
47 $entity->setHash(md5($entity->getText()));
48
49 $expected_id = 4711;
50
51 $database = $this->getMockBuilder('ilDB')->disableOriginalConstructor()->getMock();
52 $result = $this->getMockBuilder('MDB2_BufferedResult_mysqli')->disableOriginalConstructor()->getMock();
53
54 $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));
55 $database->expects($this->once())->method('numRows')->with($result)->will($this->returnValue(0));
56 $database->expects($this->once())->method('nextId')->with('tos_versions')->will($this->returnValue($expected_id));
57
58 $expectedVersions = array(
59 'id' => array('integer', $expected_id),
60 'lng' => array('text', $entity->getIso2LanguageCode()),
61 'src' => array('text', $entity->getSource()),
62 'src_type' => array('integer', $entity->getSourceType()),
63 'text' => array('clob', $entity->getText()),
64 'hash' => array('text', $entity->getHash()),
65 'ts' => array('integer', $entity->getTimestamp())
66 );
67 $expectedTracking = array(
68 'tosv_id' => array('integer', $expected_id),
69 'usr_id' => array('integer', $entity->getUserId()),
70 'ts' => array('integer', $entity->getTimestamp())
71 );
72 $database->expects($this->exactly(2))->method('insert')->with(
73 $this->logicalOr('tos_versions', 'tos_acceptance_track'),
74 $this->logicalOr($expectedVersions, $expectedTracking)
75 );
76
77 $gateway = new ilTermsOfServiceAcceptanceDatabaseGateway($database);
78 $gateway->trackAcceptance($entity);
79 }
80
85 {
87 $entity->setUserId(666);
88 $entity->setIso2LanguageCode('de');
89 $entity->setSource('/path/to/file');
90 $entity->setSourceType(0);
91 $entity->setText('PHP Unit');
92 $entity->setTimestamp(time());
93 $entity->setHash(md5($entity->getText()));
94
95 $expected_id = 4711;
96
97 $database = $this->getMockBuilder('ilDB')->disableOriginalConstructor()->getMock();
98 $result = $this->getMockBuilder('MDB2_BufferedResult_mysqli')->disableOriginalConstructor()->getMock();
99
100 $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));
101 $database->expects($this->once())->method('numRows')->with($result)->will($this->returnValue(1));
102 $database->expects($this->once())->method('fetchAssoc')->with($result)->will($this->returnValue(array('id' => $expected_id)));
103
104 $expectedTracking = array(
105 'tosv_id' => array('integer', $expected_id),
106 'usr_id' => array('integer', $entity->getUserId()),
107 'ts' => array('integer', $entity->getTimestamp())
108 );
109 $database->expects($this->once())->method('insert')->with('tos_acceptance_track', $expectedTracking);
110
111 $gateway = new ilTermsOfServiceAcceptanceDatabaseGateway($database);
112 $gateway->trackAcceptance($entity);
113 }
114
119 {
120 $entity = new ilTermsOfServiceAcceptanceEntity();
121
122 $expected = array(
123 'id' => 4711,
124 'usr_id' => 6,
125 'lng' => 'de',
126 'src' => '/path/to/file',
127 'src_type' => 0,
128 'text' => 'PHP Unit',
129 'accepted_ts' => time()
130 );
131
132 $database = $this->getMockBuilder('ilDB')->disableOriginalConstructor()->getMock();
133 $database->expects($this->once())->method('fetchAssoc')->will($this->onConsecutiveCalls($expected));
134 $gateway = new ilTermsOfServiceAcceptanceDatabaseGateway($database);
135 $gateway->loadCurrentAcceptanceOfUser($entity);
136
137 $this->assertEquals($expected['id'], $entity->getId());
138 $this->assertEquals($expected['usr_id'], $entity->getUserId());
139 $this->assertEquals($expected['lng'], $entity->getIso2LanguageCode());
140 $this->assertEquals($expected['src'], $entity->getSource());
141 $this->assertEquals($expected['src_type'], $entity->getSourceType());
142 $this->assertEquals($expected['text'], $entity->getText());
143 $this->assertEquals($expected['accepted_ts'], $entity->getTimestamp());
144 }
145
150 {
151 $entity = new ilTermsOfServiceAcceptanceEntity();
152 $entity->setUserId(4711);
153
154 $database = $this->getMockBuilder('ilDB')->disableOriginalConstructor()->getMock();
155 $database->expects($this->once())->method('quote')->with($entity->getUserId(), 'integer')->will($this->returnValue($entity->getUserId()));
156 $database->expects($this->once())->method('manipulate')->with('DELETE FROM tos_acceptance_track WHERE usr_id = ' . $entity->getUserId());
157 $gateway = new ilTermsOfServiceAcceptanceDatabaseGateway($database);
158 $gateway->deleteAcceptanceHistoryByUser($entity);
159 }
160}
$result