Blame view

sources/apps/contacts/tests/lib/contact_test.php 3.79 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
29
30
31
32
33
  <?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;
  use OCA\Contacts\Utils\JSONSerializer;
  
  require_once __DIR__ . '/backend/mock.php';
  
  class ContactTest extends \PHPUnit_Framework_TestCase {
  
  	/**
  	* @var array
  	*/
  	protected $abinfo;
  	/**
  	* @var OCA\Contacts\AddressBook
  	*/
  	protected $ab;
  	/**
  	* @var OCA\Contacts\Contact
  	*/
  	protected $contact;
  	/**
  	* @var OCA\Contacts\Backend\AbstractBackend
  	*/
  	protected $backend;
6d9380f96   Cédric Dupont   Update sources OC...
34
  	public function setUp() {
d1bafeea1   Kload   [fix] Upgrade to ...
35
36
37
38
39
40
  
  		$this->backend = new Backend\Mock('foobar');
  		$this->abinfo = $this->backend->getAddressBook('foo');
  		$this->ab = new AddressBook($this->backend, $this->abinfo);
  		$this->contact = $this->ab->getChild('123');
  	}
6d9380f96   Cédric Dupont   Update sources OC...
41
  	public function tearDown() {
d1bafeea1   Kload   [fix] Upgrade to ...
42
43
44
45
  		unset($this->backend);
  		unset($this->ab);
  		unset($this->contact);
  	}
6d9380f96   Cédric Dupont   Update sources OC...
46
  	public function testGetDisplayName() {
d1bafeea1   Kload   [fix] Upgrade to ...
47
48
49
50
  
  		$this->assertEquals('Max Mustermann', $this->contact->getDisplayName());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
51
  	public function testGetMetaData() {
d1bafeea1   Kload   [fix] Upgrade to ...
52
53
54
55
56
57
58
59
  
  		$props = $this->contact->getMetaData();
  		$this->assertEquals('Max Mustermann', $props['displayname']);
  		$this->assertEquals('foobar', $props['owner']);
  		$this->assertEquals(\OCP\PERMISSION_ALL, $props['permissions']);
  		$this->assertEquals($this->ab->getId(), $props['parent']);
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
60
  	public function testGetPermissions() {
d1bafeea1   Kload   [fix] Upgrade to ...
61
62
63
64
65
  
  		$this->assertEquals($this->ab->getPermissions(), $this->contact->getPermissions());
  		$this->assertEquals(\OCP\PERMISSION_ALL, $this->contact->getPermissions());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
66
  	public function testGetParent() {
d1bafeea1   Kload   [fix] Upgrade to ...
67
68
69
70
  
  		$this->assertEquals($this->ab, $this->contact->getParent());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
71
  	public function testGetBackend() {
d1bafeea1   Kload   [fix] Upgrade to ...
72
73
74
75
  
  		$this->assertEquals($this->backend, $this->contact->getBackend());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
76
  	public function testDelete() {
d1bafeea1   Kload   [fix] Upgrade to ...
77
78
79
80
  
  		$this->assertTrue($this->contact->delete());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
81
  	public function testIsSaved() {
d1bafeea1   Kload   [fix] Upgrade to ...
82
83
84
85
86
87
88
89
  
  		$this->assertTrue($this->contact->isSaved());
  
  		$this->contact->FN = 'Don Quixote';
  
  		$this->assertEquals(false, $this->contact->isSaved());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
90
  	public function testSave() {
d1bafeea1   Kload   [fix] Upgrade to ...
91
92
93
94
95
96
97
98
  
  		$this->contact->FN = 'Don Quixote';
  
  		$this->assertTrue($this->contact->save());
  
  		$this->assertTrue($this->contact->isSaved());
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
99
  	public function testSetByChecksum() {
d1bafeea1   Kload   [fix] Upgrade to ...
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  		// TODO: Move JSONSerializer tests to a TestUtils class or something
  		$serialized = JSONSerializer::serializeContact($this->contact);
  
  		$this->assertTrue(is_array($serialized));
  
  		$this->assertArrayHasKey('data', $serialized);
  
  		$this->assertArrayHasKey('EMAIL', $serialized['data']);
  
  		$checksum = $serialized['data']['EMAIL'][0]['checksum'];
  		$newchecksum = $this->contact->setPropertyByChecksum($checksum, 'EMAIL', 'mmustermann@example.org');
  
  		$this->assertNotEquals($checksum, $newchecksum);
  
  		$this->assertEquals('mmustermann@example.org', (string)$this->contact->EMAIL);
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
117
  	public function testSetByChecksumFail() {
d1bafeea1   Kload   [fix] Upgrade to ...
118
119
120
121
122
123
124
125
126
127
128
129
  
  		try {
  			$this->contact->setPropertyByChecksum('87654321', 'EMAIL', 'mmustermann@example.org');
  		} catch(\Exception $e) {
  			$this->assertEquals('Property not found', $e->getMessage());
  			$this->assertEquals(404, $e->getCode());
  			return;
  		}
  
  		$this->fail('Expected Exception 404.');
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
130
  	public function testUnsetByChecksum() {
d1bafeea1   Kload   [fix] Upgrade to ...
131
132
133
134
135
136
137
138
139
140
141
  
  		$serialized = JSONSerializer::serializeContact($this->contact);
  		$checksum = $serialized['data']['EMAIL'][0]['checksum'];
  
  		$this->assertTrue(isset($this->contact->EMAIL));
  
  		$this->contact->unsetPropertyByChecksum($checksum);
  
  		$this->assertTrue(!isset($this->contact->EMAIL));
  
  	}
6d9380f96   Cédric Dupont   Update sources OC...
142
  	public function testSetByName() {
d1bafeea1   Kload   [fix] Upgrade to ...
143
144
145
146
147
148
149
150
151
152
153
154
  
  		$this->assertTrue(!isset($this->contact->NICKNAME));
  
  		$this->assertTrue($this->contact->setPropertyByName('NICKNAME', 'Maxie'));
  
  		$this->assertTrue(isset($this->contact->NICKNAME));
  
  		$this->assertEquals((string)$this->contact->NICKNAME, 'Maxie');
  
  	}
  
  }