UserMapperTest   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 252
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 14
c 3
b 0
f 0
lcom 1
cbo 5
dl 0
loc 252
rs 10

11 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 5 1
B findSessionsByConversationProvider() 0 35 1
B testFindSessionsByConversation() 0 29 4
B findByUserProvider() 0 24 1
A testFindByUser() 0 12 1
A testFindConvsIdByUser() 0 12 1
B findUsersInConvProvider() 0 26 1
A testFindUsersInConv() 0 12 1
A insertUniqueProvider() 0 11 1
A testInsertUnique() 0 15 1
A tearDown() 0 7 1
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()]);
0 ignored issues
show
Unused Code Comprehensibility introduced by
80% of this comment could be valid code. Did you maybe forget this after debugging?

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.

Loading history...
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());
0 ignored issues
show
Unused Code Comprehensibility introduced by
71% of this comment could be valid code. Did you maybe forget this after debugging?

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.

Loading history...
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
}