Completed
Push — master ( 580deb...21a700 )
by Morris
82:20
created

ConverterTests::providesNewUsers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 8
Ratio 100 %

Code Coverage

Tests 2
CRAP Score 1.2963

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 8
loc 8
ccs 2
cts 6
cp 0.3333
rs 9.4286
cc 1
eloc 6
nc 1
nop 0
crap 1.2963
1
<?php
2
/**
3
 * @author Thomas Müller <[email protected]>
4
 *
5
 * @copyright Copyright (c) 2015, ownCloud, Inc.
6
 * @license AGPL-3.0
7
 *
8
 * This code is free software: you can redistribute it and/or modify
9
 * it under the terms of the GNU Affero General Public License, version 3,
10
 * as published by the Free Software Foundation.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
 * GNU Affero General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Affero General Public License, version 3,
18
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
19
 *
20
 */
21
22
namespace OCA\DAV\Tests\Unit;
23
24
use OCA\DAV\CardDAV\Converter;
25
use Test\TestCase;
26
27
class ConverterTests extends  TestCase {
28
29
	/**
30
	 * @dataProvider providesNewUsers
31
	 */
32 4
	public function testCreation($expectedVCard, $displayName = null, $eMailAddress = null, $cloudId = null) {
33 4
		$user = $this->getUserMock($displayName, $eMailAddress, $cloudId);
34
35 4
		$converter = new Converter();
36 4
		$vCard = $converter->createCardFromUser($user);
37 4
		$cardData = $vCard->serialize();
38
39 4
		$this->assertEquals($expectedVCard, $cardData);
40 4
	}
41
42 1 View Code Duplication
	public function providesNewUsers() {
43
		return [
44 1
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n"],
45
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:Dr. Foo Bar\r\nN:Bar;Dr.;Foo;;\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
46
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:Dr. Foo Bar\r\nN:Bar;Dr.;Foo;;\r\nEMAIL;TYPE=OTHER:[email protected]\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n", "Dr. Foo Bar", "[email protected]"],
47
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:Dr. Foo Bar\r\nN:Bar;Dr.;Foo;;\r\nCLOUD:[email protected]\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n", "Dr. Foo Bar", null, "[email protected]"],
48
		];
49
	}
50
51
	/**
52
	 * @dataProvider providesNewUsers
53
	 */
54 4
	public function testUpdateOfUnchangedUser($expectedVCard, $displayName = null, $eMailAddress = null, $cloudId = null) {
55 4
		$user = $this->getUserMock($displayName, $eMailAddress, $cloudId);
56
57 4
		$converter = new Converter();
58 4
		$vCard = $converter->createCardFromUser($user);
59 4
		$updated = $converter->updateCard($vCard, $user);
60 4
		$this->assertFalse($updated);
61 4
		$cardData = $vCard->serialize();
62
63 4
		$this->assertEquals($expectedVCard, $cardData);
64 4
	}
65
66
	/**
67
	 * @dataProvider providesUsersForUpdateOfRemovedElement
68
	 */
69 3
	public function testUpdateOfRemovedElement($expectedVCard, $displayName = null, $eMailAddress = null, $cloudId = null) {
70 3
		$user = $this->getUserMock($displayName, $eMailAddress, $cloudId);
71
72 3
		$converter = new Converter();
73 3
		$vCard = $converter->createCardFromUser($user);
74
75 3
		$user1 = $this->getMockBuilder('OCP\IUser')->disableOriginalConstructor()->getMock();
76 3
		$user1->method('getUID')->willReturn('12345');
77 3
		$user1->method('getDisplayName')->willReturn(null);
78 3
		$user1->method('getEMailAddress')->willReturn(null);
79 3
		$user1->method('getCloudId')->willReturn(null);
80 3
		$user1->method('getAvatarImage')->willReturn(null);
81
82 3
		$updated = $converter->updateCard($vCard, $user1);
83 3
		$this->assertTrue($updated);
84 3
		$cardData = $vCard->serialize();
85
86 3
		$this->assertEquals($expectedVCard, $cardData);
87 3
	}
88
89 View Code Duplication
	public function providesUsersForUpdateOfRemovedElement() {
90
		return [
91
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
92
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar", "[email protected]"],
93
				["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar", null, "[email protected]"],
94
		];
95
	}
96
97
	/**
98
	 * @dataProvider providesNames
99
	 * @param $expected
100
	 * @param $fullName
101
	 */
102 6
	public function testNameSplitter($expected, $fullName) {
103
104 3
		$converter = new Converter();
105 3
		$r = $converter->splitFullName($fullName);
106 6
		$r = implode(';', $r);
107 6
		$this->assertEquals($expected, $r);
108 3
	}
109
110
	public function providesNames() {
111
		return [
112
				['Sauron;;;;', 'Sauron'],
113
				['Baggins;Bilbo;;;', 'Bilbo Baggins'],
114
				['Tolkien;John;Ronald Reuel;;', 'John Ronald Reuel Tolkien'],
115
		];
116
	}
117
118
	/**
119
	 * @param $displayName
120
	 * @param $eMailAddress
121
	 * @param $cloudId
122
	 * @return \PHPUnit_Framework_MockObject_MockObject
123
	 */
124 11
	protected function getUserMock($displayName, $eMailAddress, $cloudId) {
125 11
		$image0 = $this->getMockBuilder('OCP\IImage')->disableOriginalConstructor()->getMock();
126 11
		$image0->method('mimeType')->willReturn('JPEG');
127 11
		$image0->method('data')->willReturn('123456789');
128 11
		$user = $this->getMockBuilder('OCP\IUser')->disableOriginalConstructor()->getMock();
129 11
		$user->method('getUID')->willReturn('12345');
130 11
		$user->method('getDisplayName')->willReturn($displayName);
131 11
		$user->method('getEMailAddress')->willReturn($eMailAddress);
132 11
		$user->method('getCloudId')->willReturn($cloudId);
133 11
		$user->method('getAvatarImage')->willReturn($image0);
134 11
		return $user;
135
	}
136
}
137