PushMessageMapperTest::pushMessageProvider()   B
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 26
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 26
rs 8.8571
cc 3
eloc 19
nc 3
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: tobis
5
 * Date: 8/19/14
6
 * Time: 3:20 PM
7
 */
8
9
namespace OCA\Chat\OCH\Db;
10
11
use OCA\Chat\App\Container;
12
13
class PushMessageMapperTest extends \PHPUnit_Framework_TestCase {
14
15
	/**
16
	 * @var \OCA\Chat\App\Container
17
	 */
18
	public $container;
19
20
	/**
21
	 * @var \OCA\Chat\OCH\Db\PushMessageMapper
22
	 */
23
	public $pushMessageMapper;
24
25
	/**
26
	 * @var \OCA\Chat\OCH\Db\UserOnlineMapper
27
	 */
28
	public $userOnlineMapper;
29
30
	/**
31
	 * @var \OCA\Chat\OCH\Db\UserMapper
32
	 */
33
	public $userMapper;
34
35
	public function setUp(){
36
		$this->container = new Container();
37
		$this->pushMessageMapper = $this->container->query('PushMessageMapper');
38
		$this->userOnlineMapper = $this->container->query('UserOnlineMapper');
39
		$this->userMapper = $this->container->query('UserMapper');
40
	}
41
42
	public function pushMessageProvider(){
43
		$msgs = array();
44
		$senders = array('bar', 'foobar');
45
		$sessionId = md5(time() + rand(0, 1000));
46
47
		for ($i =0; $i < 20; $i++){
48
			$msg = new PushMessage();
49
			$rand = rand(0,1);
50
			$msg->setSender($senders[$rand]);
51
			$msg->setReceiver('foo');
52
			if($i > 10){
53
				$msg->setReceiverSessionId($sessionId);
54
			} else {
55
				$msg->setReceiverSessionId(md5(time() + rand(0, 1000)));
56
			}
57
			$msg->setCommand('{"command": "true}');
58
			$msgs[] = $msg;
59
		}
60
61
		return array(
62
			array(
63
				$msgs,
64
				$sessionId,
65
			)
66
		);
67
	}
68
69
	/**
70
	 * @dataProvider pushMessageProvider
71
	 */
72
	public function testFindBysSessionId($msgs, $sessionId){
73
		foreach($msgs as $msg){
74
			$this->pushMessageMapper->insert($msg);
75
		}
76
		$result = $this->pushMessageMapper->findBysSessionId($sessionId);
77
78
		$this->assertEquals(9, count($result));
79
80
		foreach($result as $r){
81
			$this->assertEquals($sessionId, $r->getReceiverSessionId());
82
		}
83
84
	}
85
86
	public function sessionsOfAUserProvider(){
87
		$session1 = new UserOnline();
88
		$session1->setSessionId(md5(time() + rand(0, 1000)));
89
		$session1->setUser('foo');
90
		$session1->setLastOnline(time() + rand(0, 100));
91
92
		$session2 = new UserOnline();
93
		$session2->setSessionId(md5(time() + rand(0, 1000)));
94
		$session2->setUser('bar');
95
		$session2->setLastOnline(time() + rand(0, 100));
96
97
		$session3 = new UserOnline();
98
		$session3->setSessionId(md5(time() + rand(0, 1000)));
99
		$session3->setUser('bar');
100
		$session3->setLastOnline(time() + rand(0, 100));
101
102
		return array(
103
			array(
104
				array( $session1, $session2, $session3)
105
			)
106
		);
107
	}
108
109
	/**
110
	 * @dataProvider sessionsOfAUserProvider
111
	 * @param $users
112
	 */
113
	public function testCreateForAllSessionsOfAUser($users){
114
		foreach($users as $user){
115
			$this->userOnlineMapper->insert($user);
116
		}
117
118
		$this->pushMessageMapper->createForAllSessionsOfAUser('bar', 'foo', 'testMessage');
119
		$result = $this->pushMessageMapper->findAll();
120
		foreach($result as $r){
121
			$this->assertEquals('foo', $r->getSender());
122
			$this->assertEquals('bar', $r->getReceiver());
123
			$this->assertEquals('testMessage', $r->getCommand());
124
		}
125
	}
126
127
	public function createForAllUsersInConvProvider(){
128
		$convId = md5(time() - 354235);
129
		$sessionId1 = md5(time() + rand(0, 1000));
130
		$sessionId2 = md5(time() + rand(0, 1000));
131
		$user1 = new User();
132
		$user1->setUser('foo');
133
		$user1->setConversationId($convId);
134
		$user1->setJoined(time() -3434);
135
136
		$user2 = new User();
137
		$user2->setUser('bar');
138
		$user2->setConversationId($convId);
139
		$user2->setJoined(time() -4345675);
140
141
		$session1 = new UserOnline();
142
		$session1->setSessionId($sessionId1);
143
		$session1->setUser('foo');
144
		$session1->setLastOnline(time() -400);
145
146
		$session2 = new UserOnline();
147
		$session2->setSessionId($sessionId2);
148
		$session2->setUser('bar');
149
		$session2->setLastOnline(time() -3435);
150
151
152
		return array(
153
			array(
154
				array($user1, $user2),
155
				array($session1, $session2),
156
				$convId
157
			)
158
		);
159
	}
160
161
162
	/**
163
	 * @dataProvider createForAllUsersInConvProvider
164
	 * @param $users
165
	 */
166
	public function testCreateForAllUsersInConv($usersInConv, $sessions, $convId){
167
		foreach($usersInConv as $user){
168
			$this->userMapper->insert($user);
169
		}
170
171
		foreach($sessions as $session){
172
			$this->userOnlineMapper->insert($session);
173
		}
174
175
		$this->pushMessageMapper->createForAllUsersInConv('bar', $convId, 'testCommand');
176
		$result = $this->pushMessageMapper->findAll();
177
		$this->assertEquals('bar', $result[0]->getSender());
178
		$this->assertEquals('foo', $result[0]->getReceiver());
179
		$this->assertEquals('testCommand', $result[0]->getCommand());
180
		$this->assertEquals('bar', $result[1]->getSender());
181
		$this->assertEquals('bar', $result[1]->getReceiver());
182
		$this->assertEquals('testCommand', $result[1]->getCommand());
183
	}
184
185
186
	/**
187
	 * Remove all records from the table so future test can run without problems
188
	 */
189
	public function tearDown(){
190
		$query = \OCP\DB::prepare('DELETE FROM `' . $this->pushMessageMapper->getTableName() . '`');
191
		$query->execute(array());
192
193
		$query = \OCP\DB::prepare('DELETE FROM `' . $this->userOnlineMapper->getTableName() . '`');
194
		$query->execute(array());
195
196
		$query = \OCP\DB::prepare('DELETE FROM `' . $this->userMapper->getTableName() . '`');
197
		$query->execute(array());
198
	}
199
	
200
201
202
}