1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Created by PhpStorm. |
4
|
|
|
* User: tobis |
5
|
|
|
* Date: 8/19/14 |
6
|
|
|
* Time: 1:50 PM |
7
|
|
|
*/ |
8
|
|
|
|
9
|
|
|
namespace OCA\Chat\OCH\Db; |
10
|
|
|
|
11
|
|
|
use \OCA\Chat\App\Container; |
12
|
|
|
use \OCA\Chat\OCH\Db\User; |
13
|
|
|
use \OCA\Chat\OCH\Db\UserMapper; |
14
|
|
|
|
15
|
|
|
class UserMapperTest extends \PHPUnit_Framework_TestCase { |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* @var \OCA\Chat\App\Container |
19
|
|
|
*/ |
20
|
|
|
public $container; |
21
|
|
|
|
22
|
|
|
/** |
23
|
|
|
* @var \OCA\Chat\OCH\Db\UserMapper |
24
|
|
|
*/ |
25
|
|
|
public $userMapper; |
26
|
|
|
|
27
|
|
|
/** |
28
|
|
|
* @var \OCA\Chat\OCH\Db\UserOnlineMapper |
29
|
|
|
*/ |
30
|
|
|
public $userOnlineMapper; |
31
|
|
|
|
32
|
|
|
|
33
|
|
|
|
34
|
|
|
public function setUp(){ |
35
|
|
|
$this->container = new Container(); |
36
|
|
|
$this->userMapper = $this->container->query('UserMapper'); |
37
|
|
|
$this->userOnlineMapper = $this->container->query('UserOnlineMapper'); |
38
|
|
|
} |
39
|
|
|
|
40
|
|
|
public function findSessionsByConversationProvider(){ |
41
|
|
|
$convId = md5(time() - 354235); |
42
|
|
|
$sessionId1 = md5(time() + rand(0, 1000)); |
43
|
|
|
$sessionId2 = md5(time() + rand(0, 1000)); |
44
|
|
|
$user1 = new User(); |
45
|
|
|
$user1->setUser('foo'); |
46
|
|
|
$user1->setConversationId($convId); |
47
|
|
|
$user1->setJoined(time() -3434); |
48
|
|
|
|
49
|
|
|
$user2 = new User(); |
50
|
|
|
$user2->setUser('bar'); |
51
|
|
|
$user2->setConversationId($convId); |
52
|
|
|
$user2->setJoined(time() -4345675); |
53
|
|
|
|
54
|
|
|
$session1 = new UserOnline(); |
55
|
|
|
$session1->setSessionId($sessionId1); |
56
|
|
|
$session1->setUser('foo'); |
57
|
|
|
$session1->setLastOnline(time() -400); |
58
|
|
|
|
59
|
|
|
$session2 = new UserOnline(); |
60
|
|
|
$session2->setSessionId($sessionId2); |
61
|
|
|
$session2->setUser('bar'); |
62
|
|
|
$session2->setLastOnline(time() -3435); |
63
|
|
|
|
64
|
|
|
|
65
|
|
|
return array( |
66
|
|
|
array( |
67
|
|
|
array($user1, $user2), |
68
|
|
|
array($session1, $session2), |
69
|
|
|
$convId, |
70
|
|
|
$sessionId1, |
71
|
|
|
$sessionId2 |
72
|
|
|
) |
73
|
|
|
); |
74
|
|
|
} |
75
|
|
|
|
76
|
|
|
/** |
77
|
|
|
* @dataProvider findSessionsByConversationProvider |
78
|
|
|
*/ |
79
|
|
|
public function testFindSessionsByConversation($users, $sessions, $convId, $sessionId1, $sessionId2){ |
80
|
|
|
foreach($users as $user){ |
81
|
|
|
$this->userMapper->insert($user); |
82
|
|
|
// $result->setSessionId($sessionIds[$user->getUser()]); |
|
|
|
|
83
|
|
|
} |
84
|
|
|
|
85
|
|
|
foreach($sessions as $session){ |
86
|
|
|
$this->userOnlineMapper->insert($session); |
87
|
|
|
} |
88
|
|
|
|
89
|
|
|
$result = $this->userMapper->findSessionsByConversation($convId); |
90
|
|
|
|
91
|
|
|
$sessions = array(); |
92
|
|
|
$users = array(); |
93
|
|
|
foreach($result as $r){ |
94
|
|
|
$sessions[] = $r->getSessionId(); |
95
|
|
|
$users[] = $r->getUser(); |
96
|
|
|
// $this->assertEquals($expected->getUser(), $r->getUser()); |
|
|
|
|
97
|
|
|
// $this->assertEquals($expected->getSessionId(), $r->getSessionId()); |
98
|
|
|
// $this->assertEquals($expected->getJoined(), $r->getJoined()); |
99
|
|
|
// $this->assertEquals($expected->getConversationId(), $r->getConversationId()); |
100
|
|
|
} |
101
|
|
|
$this->assertTrue(in_array('foo', $users)); |
102
|
|
|
$this->assertTrue(in_array('bar', $users)); |
103
|
|
|
$this->assertTrue(in_array($sessionId1, $sessions)); |
104
|
|
|
$this->assertTrue(in_array($sessionId2, $sessions)); |
105
|
|
|
|
106
|
|
|
|
107
|
|
|
} |
108
|
|
|
|
109
|
|
|
/** |
110
|
|
|
* @return array |
111
|
|
|
*/ |
112
|
|
|
public function findByUserProvider(){ |
113
|
|
|
$user1 = new User(); |
114
|
|
|
$user1->setConversationId(md5(time() + 32324)); |
115
|
|
|
$user1->setJoined(time() -34434); |
116
|
|
|
$user1->setUser('foo'); |
117
|
|
|
|
118
|
|
|
$user2 = new User(); |
119
|
|
|
$user2->setConversationId(md5(time() + 3890)); |
120
|
|
|
$user2->setJoined(time() - 35434); |
121
|
|
|
$user2->setUser('foo'); |
122
|
|
|
|
123
|
|
|
$user3 = new User(); |
124
|
|
|
$user3->setConversationId(md5(time() + 53890)); |
125
|
|
|
$user3->setJoined(time() - 35434434); |
126
|
|
|
$user3->setUser('bar'); |
127
|
|
|
|
128
|
|
|
return array( |
129
|
|
|
array( |
130
|
|
|
$user1, |
131
|
|
|
$user2, |
132
|
|
|
$user3 |
133
|
|
|
) |
134
|
|
|
); |
135
|
|
|
} |
136
|
|
|
|
137
|
|
|
/** |
138
|
|
|
* @param User $user1 |
139
|
|
|
* @param User $user2 |
140
|
|
|
* @param User $user3 |
141
|
|
|
* @dataProvider findByUserProvider |
142
|
|
|
*/ |
143
|
|
|
public function testFindByUser(User $user1, User $user2, User $user3){ |
144
|
|
|
$this->userMapper->insert($user1); |
145
|
|
|
$this->userMapper->insert($user2); |
146
|
|
|
$this->userMapper->insert($user3); |
147
|
|
|
|
148
|
|
|
|
149
|
|
|
$result = $this->userMapper->findByUser('foo'); |
150
|
|
|
|
151
|
|
|
$this->assertEquals(2, count($result)); |
152
|
|
|
$this->assertEquals($result[0]->getUser(), 'foo'); |
153
|
|
|
$this->assertEquals($result[1]->getUser(), 'foo'); |
154
|
|
|
} |
155
|
|
|
|
156
|
|
|
/** |
157
|
|
|
* @param User $user1 |
158
|
|
|
* @param User $user2 |
159
|
|
|
* @param User $user3 |
160
|
|
|
* @dataProvider findByUserProvider |
161
|
|
|
*/ |
162
|
|
|
public function testFindConvsIdByUser(User $user1, User $user2, User $user3){ |
163
|
|
|
$this->userMapper->insert($user1); |
164
|
|
|
$this->userMapper->insert($user2); |
165
|
|
|
$this->userMapper->insert($user3); |
166
|
|
|
|
167
|
|
|
|
168
|
|
|
$result = $this->userMapper->findConvsIdByUser('foo'); |
169
|
|
|
|
170
|
|
|
$this->assertEquals(2, count($result)); |
171
|
|
|
$this->assertTrue(in_array($user1->getConversationId(), $result)); |
172
|
|
|
$this->assertTrue(in_array($user2->getConversationId(), $result)); |
173
|
|
|
} |
174
|
|
|
|
175
|
|
|
public function findUsersInConvProvider(){ |
176
|
|
|
$id = md5(time() + 34234); |
177
|
|
|
$user1 = new User(); |
178
|
|
|
$user1->setConversationId($id); |
179
|
|
|
$user1->setJoined(time() -34434); |
180
|
|
|
$user1->setUser('foo'); |
181
|
|
|
|
182
|
|
|
$user2 = new User(); |
183
|
|
|
$user2->setConversationId($id); |
184
|
|
|
$user2->setJoined(time() - 35434); |
185
|
|
|
$user2->setUser('foo'); |
186
|
|
|
|
187
|
|
|
$user3 = new User(); |
188
|
|
|
$user3->setConversationId(md5(time() -3)); |
189
|
|
|
$user3->setJoined(time() - 35434); |
190
|
|
|
$user3->setUser('bar'); |
191
|
|
|
|
192
|
|
|
return array( |
193
|
|
|
array( |
194
|
|
|
$user1, |
195
|
|
|
$user2, |
196
|
|
|
$user3, |
197
|
|
|
$id |
198
|
|
|
) |
199
|
|
|
); |
200
|
|
|
} |
201
|
|
|
|
202
|
|
|
/** |
203
|
|
|
* @param User $user1 |
204
|
|
|
* @param User $user2 |
205
|
|
|
* @param User $user3 |
206
|
|
|
* @dataProvider findUsersInConvProvider |
207
|
|
|
*/ |
208
|
|
|
public function testFindUsersInConv(User $user1, User $user2, User $user3, $id){ |
209
|
|
|
$this->userMapper->insert($user1); |
210
|
|
|
$this->userMapper->insert($user2); |
211
|
|
|
$this->userMapper->insert($user3); |
212
|
|
|
|
213
|
|
|
$result = $this->userMapper->findUsersInConv($id); |
214
|
|
|
|
215
|
|
|
$this->assertEquals(1, count($result)); |
216
|
|
|
$this->assertTrue(in_array($user1->getUser(), $result)); |
217
|
|
|
$this->assertTrue(in_array($user2->getUser(), $result)); |
218
|
|
|
|
219
|
|
|
} |
220
|
|
|
|
221
|
|
|
public function insertUniqueProvider(){ |
222
|
|
|
$user = new User(); |
223
|
|
|
$user->setUser('foo'); |
224
|
|
|
$user->setConversationId(md5(time() -2342)); |
225
|
|
|
$user->setJoined(234234234); |
226
|
|
|
return array( |
227
|
|
|
array( |
228
|
|
|
$user |
229
|
|
|
) |
230
|
|
|
); |
231
|
|
|
} |
232
|
|
|
|
233
|
|
|
/** |
234
|
|
|
* @param User $user |
235
|
|
|
* @dataProvider insertUniqueProvider |
236
|
|
|
*/ |
237
|
|
|
public function testInsertUnique(User $user){ |
238
|
|
|
$this->userMapper->insertUnique($user); |
239
|
|
|
$this->userMapper->insertUnique($user); |
240
|
|
|
$this->userMapper->insertUnique($user); |
241
|
|
|
|
242
|
|
|
$result = $this->userMapper->findAll(); |
243
|
|
|
|
244
|
|
|
$this->assertEquals(1, count($result)); |
245
|
|
|
$this->assertEquals($user->getUser(), $result[0]->getUser()); |
246
|
|
|
$this->assertEquals($user->getConversationId(), $result[0]->getConversationId()); |
247
|
|
|
$this->assertEquals($user->getJoined(), $result[0]->getJoined()); |
248
|
|
|
|
249
|
|
|
|
250
|
|
|
|
251
|
|
|
} |
252
|
|
|
|
253
|
|
|
/** |
254
|
|
|
* Remove all records from the table so future test can run without problems |
255
|
|
|
*/ |
256
|
|
|
public function tearDown(){ |
257
|
|
|
$query = \OCP\DB::prepare('DELETE FROM `' . $this->userMapper->getTableName() . '`'); |
258
|
|
|
$query->execute(array()); |
259
|
|
|
|
260
|
|
|
$query = \OCP\DB::prepare('DELETE FROM `' . $this->userOnlineMapper->getTableName() . '`'); |
261
|
|
|
$query->execute(array()); |
262
|
|
|
} |
263
|
|
|
|
264
|
|
|
|
265
|
|
|
|
266
|
|
|
} |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.