ConversationMapperTest::existsByUserProvider()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 46
Code Lines 36

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 46
rs 8.9411
cc 1
eloc 36
nc 1
nop 0
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 ConversationMapperTest extends \PHPUnit_Framework_TestCase {
16
17
	/**
18
	 * @var \OCA\Chat\App\Container
19
	 */
20
	public $container;
21
22
	/**
23
	 * @var \OCA\Chat\OCH\Db\ConversationMapper
24
	 */
25
	public $conversationMapper;
26
27
	/**
28
	 * @var \OCA\Chat\OCH\Db\UserMapper
29
	 */
30
	public $userMapper;
31
32
33
34
	public function setUp(){
35
		$this->container = new Container();
36
		$this->conversationMapper = $this->container->query('ConversationMapper');
37
		$this->userMapper = $this->container->query('UserMapper');
38
	}
39
40
	public function convProvider(){
41
		$conv1 = new Conversation();
42
		$conv1->setConversationId(md5(time()));
43
44
		$conv2 = new Conversation();
45
		$conv2->setConversationId(md5(time() - 3434));
46
47
48
		$conv3 = new Conversation();
49
		$conv3->setConversationId(md5(time() - 3432452345334));
50
51
52
		$conv4 = new Conversation();
53
		$conv4->setConversationId(md5(time() - 23455854634));
54
55
		return array(
56
			array(
57
				$conv1,
58
				$conv2,
59
				$conv3,
60
				$conv4
61
			)
62
		);
63
	}
64
65
	/**
66
	 * @dataProvider convProvider
67
	 * @param $conv1 \OCA\Chat\OCH\Db\Conversation;
68
	 * @param $conv2 \OCA\Chat\OCH\Db\Conversation
69
	 */
70
	public function testFindByConversationId($conv1, $conv2){
71
		$this->conversationMapper->insert($conv1);
72
		$this->conversationMapper->insert($conv2);
73
74
		$result1 = $this->conversationMapper->findByConversationId($conv1->getConversationId());
75
		$result2 = $this->conversationMapper->findByConversationId($conv2->getConversationId());
76
77
		$this->assertEquals(
78
			$conv1->getConversationId(),
79
			$result1->getConversationId()
80
		);
81
		$this->assertEquals(
82
			$conv1->getId(),
83
			$result1->getId()
84
		);
85
		$this->assertEquals(
86
			$conv2->getConversationId(),
87
			$result2->getConversationId()
88
		);
89
		$this->assertEquals(
90
			$conv2->getId(),
91
			$result2->getId()
92
		);
93
	}
94
	/**
95
	 * This also tests existsByConvId
96
	 * @dataProvider convProvider
97
	 * @param $conv1 \OCA\Chat\OCH\Db\Conversation
98
	 * @param $conv2 \OCA\Chat\OCH\Db\Conversation
99
	 * @param $conv3 \OCA\Chat\OCH\Db\Conversation
100
	 * @param $conv4 \OCA\Chat\OCH\Db\Conversation
101
	 */
102
	public function testDelete($conv1, $conv2, $conv3, $conv4){
103
		$this->conversationMapper->insert($conv1);
104
		$this->conversationMapper->insert($conv2);
105
		$this->conversationMapper->insert($conv3);
106
		$this->conversationMapper->insert($conv4);
107
108
		// Delete 2 conversation
109
		$this->conversationMapper->deleteConversation($conv1->getConversationId());
110
		$this->conversationMapper->deleteConversation($conv4->getConversationId());
111
112
		$this->assertEquals(
113
			false,
114
			$this->conversationMapper->existsByConvId($conv1->getConversationId())
115
		);
116
		$this->assertEquals(
117
			false,
118
			$this->conversationMapper->existsByConvId($conv4->getConversationId())
119
		);
120
		$this->assertEquals(
121
			true,
122
			$this->conversationMapper->existsByConvId($conv2->getConversationId())
123
		);
124
		$this->assertEquals(
125
			true,
126
			$this->conversationMapper->existsByConvId($conv3->getConversationId())
127
		);
128
	}
129
130
	public function existsByUserProvider(){
131
		$conv1Id = md5(time());
132
		$conv1 = new Conversation();
133
		$conv1->setConversationId($conv1Id);
134
135
		$user1InConv1 = new User();
136
		$user1InConv1->setConversationId($conv1Id);
137
		$user1InConv1->setUser('foo');
138
		$user1InConv1->setJoined(time() - 53353);
139
140
		$user2InConv1 = new User();
141
		$user2InConv1->setConversationId($conv1Id);
142
		$user2InConv1->setUser('bar');
143
		$user2InConv1->setJoined(time() - 53353);
144
145
		$conv2Id = md5(time() - 3434);
146
		$conv2 = new Conversation();
147
		$conv2->setConversationId($conv2Id);
148
149
		$user1InConv2 = new User();
150
		$user1InConv2->setConversationId($conv2Id);
151
		$user1InConv2->setUser('foo');
152
		$user1InConv2->setJoined(time() - 53353);
153
154
		$user2InConv2 = new User();
155
		$user2InConv2->setConversationId($conv2Id);
156
		$user2InConv2->setUser('bar');
157
		$user2InConv2->setJoined(time() - 53353);
158
159
		$user3InConv2 = new User();
160
		$user3InConv2->setConversationId($conv2Id);
161
		$user3InConv2->setUser('foobar');
162
		$user3InConv2->setJoined(time() - 53353);
163
164
		return array(
165
			array(
166
				$conv1,
167
				$user1InConv1,
168
				$user2InConv1,
169
				$conv2,
170
				$user1InConv2,
171
				$user2InConv2,
172
				$user3InConv2
173
			)
174
		);
175
	}
176
177
	/**
178
	 * @dataProvider existsByUserProvider
179
	 * @param $conv1 \OCA\Chat\OCH\Db\Conversation
180
	 * @param $user1InConv1 \OCA\Chat\OCH\Db\User
181
	 * @param $user2InConv1 \OCA\Chat\OCH\Db\User
182
	 * @param $conv2 \OCA\Chat\OCH\Db\Conversation
183
	 * @param $user1InConv2 \OCA\Chat\OCH\Db\User
184
	 * @param $user2InConv2 \OCA\Chat\OCH\Db\User
185
	 * @param $user3InConv2 \OCA\Chat\OCH\Db\User
186
	 */
187
	public function testExistsByUsers(
188
		$conv1,
189
		$user1InConv1,
190
		$user2InConv1,
191
		$conv2,
192
		$user1InConv2,
193
		$user2InConv2,
194
		$user3InConv2
195
	){
196
		// Insert dummy data
197
		$this->conversationMapper->insert($conv1);
198
		$this->userMapper->insert($user1InConv1);
199
		$this->userMapper->insert($user2InConv1);
200
		$this->conversationMapper->insert($conv2);
201
		$this->userMapper->insert($user1InConv2);
202
		$this->userMapper->insert($user2InConv2);
203
		$this->userMapper->insert($user3InConv2);
204
205
		// Test if we can find $conv1, by providing $user1Inconv1 and $user2InConv1
206
		$result1 = $this->conversationMapper->existsByUsers(array(
207
			$user1InConv1->getUser(),
208
			$user2InConv1->getUser()
209
		));
210
211
		$this->assertEquals($conv1->getConversationId(), $result1['conv_id']);
212
213
		// Test if we can find $conv2, by providing $user1Inconv2 and $user2InConv2 $user3InConv2
214
		$result2 = $this->conversationMapper->existsByUsers(array(
215
			$user1InConv2->getUser(),
216
			$user2InConv2->getUser(),
217
			$user3InConv2->getUser(),
218
		));
219
220
		$this->assertEquals($conv2->getConversationId(), $result2['conv_id']);
221
222
223
	}
224
225
226
227
	/**
228
	 * Remove all records from the table so future test can run without problems
229
	 */
230
	public function tearDown(){
231
		$query = \OCP\DB::prepare('DELETE FROM `' . $this->conversationMapper->getTableName() . '`');
232
		$query->execute(array());
233
234
		$query = \OCP\DB::prepare('DELETE FROM `' . $this->userMapper->getTableName() . '`');
235
		$query->execute(array());
236
 	}
237
238
239
240
}