Blame view

sources/apps/contacts/tests/lib/addressbook_test.php 3.92 KB
d1bafeea1   Kload   [fix] Upgrade to ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  <?php
  /**
   * Copyright (c) 2013 Thomas Tanghus (thomas@tanghus.net)
   * This file is licensed under the Affero General Public License version 3 or
   * later.
   * See the COPYING-README file.
   */
  
  namespace OCA\Contacts;
  
  use Sabre\VObject\Reader;
  
  require_once __DIR__ . '/backend/mock.php';
  
  class AddressBookTest extends \PHPUnit_Framework_TestCase {
  
  	/**
  	* @var array
  	*/
  	protected $abinfo;
  	/**
  	* @var OCA\Contacts\AddressBook
  	*/
  	protected $ab;
  	/**
  	* @var OCA\Contacts\Backend\AbstractBackend
  	*/
  	protected $backend;
6d9380f96   Cédric Dupont   Update sources OC...
29
  	public function setUp() {
d1bafeea1   Kload   [fix] Upgrade to ...
30
31
32
33
34
35
36
37
  
  		\Sabre\VObject\Component::$classMap['VCARD']	= '\OCA\Contacts\VObject\VCard';
  
  		$this->backend = new Backend\Mock('foobar');
  		$this->abinfo = $this->backend->getAddressBook('foo');
  		$this->ab = new AddressBook($this->backend, $this->abinfo);
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
38
  	public function tearDown() {
d1bafeea1   Kload   [fix] Upgrade to ...
39
40
41
  		unset($this->backend);
  		unset($this->ab);
  	}
6d9380f96   Cédric Dupont   Update sources OC...
42
  	public function testGetDisplayName() {
d1bafeea1   Kload   [fix] Upgrade to ...
43
44
45
46
  
  		$this->assertEquals('d-name', $this->ab->getDisplayName());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
47
  	public function testGetPermissions() {
d1bafeea1   Kload   [fix] Upgrade to ...
48
49
50
51
  
  		$this->assertEquals(\OCP\PERMISSION_ALL, $this->ab->getPermissions());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
52
  	public function testGetBackend() {
d1bafeea1   Kload   [fix] Upgrade to ...
53
54
55
56
  
  		$this->assertEquals($this->backend, $this->ab->getBackend());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
57
  	public function testGetChild() {
d1bafeea1   Kload   [fix] Upgrade to ...
58
59
60
61
62
63
  
  		$contact = $this->ab->getChild('123');
  		$this->assertInstanceOf('OCA\\Contacts\\Contact', $contact);
  		$this->assertEquals('Max Mustermann', $contact->getDisplayName());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
64
  	public function testAddChild() {
d1bafeea1   Kload   [fix] Upgrade to ...
65
66
67
68
69
70
71
72
  
  		$carddata = file_get_contents(__DIR__ . '/../data/test2.vcf');
  		$vcard = Reader::read($carddata);
  		$id = $this->ab->addChild($vcard);
  		$this->assertNotEquals(false, $id);
  
  		return $this->ab;
  	}
6d9380f96   Cédric Dupont   Update sources OC...
73
  	public function testDeleteChild() {
d1bafeea1   Kload   [fix] Upgrade to ...
74
75
76
77
78
  
  		$this->assertTrue($this->ab->deleteChild('123'));
  		$this->assertEquals(array(), $this->ab->getChildren());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
79
  	public function testGetChildNotFound() {
d1bafeea1   Kload   [fix] Upgrade to ...
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  
  		try {
  			$contact = $this->ab->getChild('Nowhere');
  		} catch(\Exception $e) {
  			$this->assertEquals('Contact not found', $e->getMessage());
  			$this->assertEquals(404, $e->getCode());
  			return;
  		}
  
  		$this->fail('Expected Exception 404.');
  
  	}
  
  	/**
  	* @depends testAddChild
  	*/
6d9380f96   Cédric Dupont   Update sources OC...
96
  	public function testGetChildren($ab) {
d1bafeea1   Kload   [fix] Upgrade to ...
97
98
99
100
101
102
103
104
105
  
  		$contacts = $ab->getChildren();
  
  		$this->assertCount(2, $contacts);
  
  		$this->assertEquals('Max Mustermann', $contacts[0]->getDisplayName());
  		$this->assertEquals('John Q. Public', $contacts[1]->getDisplayName());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
106
  	public function testDelete() {
d1bafeea1   Kload   [fix] Upgrade to ...
107
108
109
110
111
  
  		$this->assertTrue($this->ab->delete());
  		$this->assertEquals(array(), $this->backend->addressBooks);
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
112
  	public function testGetLastModified() {
d1bafeea1   Kload   [fix] Upgrade to ...
113
114
115
116
  
  		$this->assertNull($this->ab->lastModified());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
117
  	public function testUpdate() {
d1bafeea1   Kload   [fix] Upgrade to ...
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
  
  		$this->assertTrue(
  			$this->ab->update(array('displayname' => 'bar'))
  		);
  
  		$this->assertEquals('bar', $this->backend->addressBooks[0]['displayname']);
  		$props = $this->ab->getMetaData();
  
  		return $this->ab;
  
  	}
  
  	/**
  	* @depends testUpdate
  	*/
6d9380f96   Cédric Dupont   Update sources OC...
133
  	public function testGetMetaData($ab) {
d1bafeea1   Kload   [fix] Upgrade to ...
134
135
136
137
138
  
  		$props = $ab->getMetaData();
  		$this->assertEquals('bar', $props['displayname']);
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
  	public function testArrayAccess() {
  
  		$carddata = file_get_contents(__DIR__ . '/../data/test2.vcf');
  		$vcard = Reader::read($carddata);
  
  		$contact = $this->ab['123'];
  
  		// Test get
  		$this->assertTrue(isset($this->ab['123']));
  		$this->assertInstanceOf('OCA\\Contacts\\Contact', $contact);
  		$this->assertEquals('Max Mustermann', $contact->getDisplayName());
  
  		// Test unset
  		unset($this->ab['123']);
  
  		$this->assertTrue(!isset($this->ab['123']));
  
  		// Test set
  		try {
  			$this->ab[] = $vcard;
  		} catch(\Exception $e) {
  			return;
  		}
  
  		$this->fail('Expected Exception');
  
  	}
  
  	/**
  	* @depends testAddChild
  	*/
  	public function testIterator($ab) {
  
  		$count = 0;
  
  		foreach($ab as $contact) {
  			$this->assertInstanceOf('OCA\\Contacts\\Contact', $contact);
  			$count += 1;
  		}
  
  		$this->assertEquals(2, $count);
  	}
  
  	/**
  	* @depends testAddChild
  	*/
  	public function testCountable($ab) {
  
  		$this->assertEquals(2, count($ab));
  
  	}
d1bafeea1   Kload   [fix] Upgrade to ...
190
  }