UserOnlineMapperTest   A
last analyzed

Complexity

Total Complexity 16

Size/Duplication

Total Lines 152
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 16
c 2
b 0
f 0
lcom 1
cbo 4
dl 0
loc 152
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 4 1
A tearDown() 0 4 1
B getOnlineUsersProvider() 0 26 1
A testGetOnlineUsers() 0 12 3
A testGetAll() 0 16 3
A testFindByUser() 0 18 3
A testDeleteBySessionId() 0 20 3
A testUpdateLastOnline() 0 10 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 UserOnlineMapperTest extends \PHPUnit_Framework_TestCase {
16
17
	/**
18
	 * @var \OCA\Chat\App\Container
19
	 */
20
	public $container;
21
22
	/**
23
	 * @var \OCA\Chat\OCH\Db\UserOnlineMapper
24
	 */
25
	public $userOnlineMapper;
26
27
	public function setUp(){
28
		$this->app = new Container();
0 ignored issues
show
Bug introduced by
The property app does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
29
		$this->userOnlineMapper  = $this->app->query('UserOnlineMapper');
30
	}
31
32
	public function getOnlineUsersProvider(){
33
		$user1 = new UserOnline();
34
		$user1->setUser('foo');
35
		$user1->setLastOnline(time() -34);
36
		$user1->setSessionId(md5(time() -32575334));
37
38
		$user2 = new UserOnline();
39
		$user2->setUser('foo');
40
		$user2->setLastOnline(time() -42352);
41
		$user2->setSessionId(md5(time() -75698));
42
43
		$user3 = new UserOnline();
44
		$user3->setUser('bar');
45
		$user3->setLastOnline(time() -346574);
46
		$user3->setSessionId(md5(time() -4567));
47
48
		return array(
49
			array(
50
				array(
51
					$user1,
52
					$user2,
53
					$user3
54
				)
55
			)
56
		);
57
	}
58
	
59
	/**
60
	 * @dataProvider getOnlineUsersProvider
61
	 */
62
	public function testGetOnlineUsers($users){
63
		foreach($users as $user){
64
			$this->userOnlineMapper->insert($user);
65
		}
66
67
		$result = $this->userOnlineMapper->getOnlineUsers();
68
69
		foreach($users as $user){
70
			$this->assertTrue(in_array($user->getUser(), $result));
71
		}
72
73
	}
74
75
	/**
76
	 * @dataProvider getOnlineUsersProvider
77
	 */
78
	public function testGetAll($users){
79
		$expectedUsers = array();
80
		foreach($users as $user){
81
			$r = $this->userOnlineMapper->insert($user);
82
			$expectedUsers[$r->getId()] = $r;
83
		}
84
85
		$result = $this->userOnlineMapper->getAll();
86
87
		foreach($result as $r){
88
			$expected = $expectedUsers[$r->getId()];
89
			$this->assertEquals($expected->getUser(), $r->getUser());
90
			$this->assertEquals($expected->getSessionId(), $r->getSessionId());
91
			$this->assertEquals($expected->getLastOnline(), $r->getLastOnline());
92
		}
93
	}
94
95
	/**
96
	 * @dataProvider getOnlineUsersProvider
97
	 */
98
	public function testFindByUser($users){
99
		$expectedUsers = array();
100
		foreach($users as $user){
101
			$r = $this->userOnlineMapper->insert($user);
102
			$expectedUsers[$r->getId()] = $r;
103
		}
104
105
		$result = $this->userOnlineMapper->findByUser('foo');
106
107
		$this->assertEquals(2, count($result));
108
109
		foreach($result as $r){
110
			$expected = $expectedUsers[$r->getId()];
111
			$this->assertEquals($expected->getUser(), $r->getUser());
112
			$this->assertEquals($expected->getSessionId(), $r->getSessionId());
113
			$this->assertEquals($expected->getLastOnline(), $r->getLastOnline());
114
		}
115
	}
116
117
	/**
118
	 * @dataProvider getOnlineUsersProvider
119
	 */
120
	public function testDeleteBySessionId($users){
121
		$expectedUsers = array();
122
		foreach($users as $user){
123
			$r = $this->userOnlineMapper->insert($user);
124
			$expectedUsers[$r->getId()] = $r;
125
		}
126
127
		$result = $this->userOnlineMapper->getAll();
128
		$this->assertEquals(3, count($result));
129
130
		$sessionToRemove = $users[1]->getSessionId();
131
		$this->userOnlineMapper->deleteBySessionId($sessionToRemove);
132
133
		$result = $this->userOnlineMapper->getAll();
134
		$this->assertEquals(2, count($result));
135
136
		foreach($result as $r){
137
			$this->assertNotEquals($sessionToRemove, $r->getSessionId());
138
		}
139
	}
140
141
	/**
142
	 * @dataProvider getOnlineUsersProvider
143
	 */
144
	public function testUpdateLastOnline($users){
145
		$this->userOnlineMapper->insert($users[0]);
146
147
		$time = time();
148
		$this->userOnlineMapper->updateLastOnline($users[0]->getSessionId(), $time);
149
		$result = $this->userOnlineMapper->getAll();
150
151
		$this->assertEquals($time, $result[0]->getLastOnline());
152
153
	}
154
155
156
	/**
157
	 * Remove all records from the table so future test can run without problems
158
	 */
159
	public function tearDown(){
160
		$query = \OCP\DB::prepare('DELETE FROM `' . $this->userOnlineMapper->getTableName() . '`');
161
		$query->execute(array());
162
	}
163
164
165
166
}