Test the Organizational person and minor associated fixes.
authorGunnar Wrobel <p@rdus.de>
Mon, 13 Apr 2009 09:10:15 +0000 (11:10 +0200)
committerGunnar Wrobel <p@rdus.de>
Mon, 13 Apr 2009 09:10:15 +0000 (11:10 +0200)
framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Organizationalperson.php
framework/Kolab_Server/test/Horde/Kolab/Server/OrgPersonTest.php

index 28ff1b2..3176b9f 100644 (file)
@@ -69,6 +69,7 @@ class Horde_Kolab_Server_Object_Organizationalperson extends Horde_Kolab_Server_
             self::ATTRIBUTE_POSTALCODE,
             self::ATTRIBUTE_CITY,
             self::ATTRIBUTE_FAX,
+            self::ATTRIBUTE_POSTALADDRESS,
         ),
         'derived' => array(
             self::ATTRIBUTE_POSTALADDRESS => array(
@@ -93,11 +94,12 @@ class Horde_Kolab_Server_Object_Organizationalperson extends Horde_Kolab_Server_
                     self::ATTRIBUTE_SN,
                     self::ATTRIBUTE_STREET,
                     self::ATTRIBUTE_POSTOFFICEBOX,
+                    self::ATTRIBUTE_POSTALADDRESS,
                     self::ATTRIBUTE_POSTALCODE,
                     self::ATTRIBUTE_CITY,
                 ),
+                'method' => 'setPostalAddress',
             ),
-            'method' => 'setPostalAddress',
         ),
         'object_classes' => array(
             self::OBJECTCLASS_ORGANIZATIONALPERSON,
@@ -131,8 +133,8 @@ class Horde_Kolab_Server_Object_Organizationalperson extends Horde_Kolab_Server_
             return $postal;
         }
         $postal_parts = explode('$', $postal);
-        if (isset($postal_parts[2])) {
-            return $this->unquote($postal_parts[2]);
+        if (isset($postal_parts[1])) {
+            return $this->unquote($postal_parts[1]);
         } else {
             return '';
         }
@@ -152,7 +154,7 @@ class Horde_Kolab_Server_Object_Organizationalperson extends Horde_Kolab_Server_
         $empty      = true;
         $postalData = array();
         foreach ($attributes as $attribute) {
-            if (!empty($info[$attribute])) {
+            if (isset($info[$attribute])) {
                 if (is_array($info[$attribute])) {
                     $new = $info[$attribute][0];
                 } else {
@@ -161,9 +163,9 @@ class Horde_Kolab_Server_Object_Organizationalperson extends Horde_Kolab_Server_
                 $postalData[$attribute] = $this->quote($new);
                 $empty                  = false;
             } else {
-                $old = $this->_get($attribute, true);
+                $old = $this->get($attribute, true);
                 if (!empty($old)) {
-                    $postalData[$attribute] = $this->quote($old);
+                    $postalData[$attribute] = $old;
                     $empty                  = false;
                 } else {
                     $postalData[$attribute] = '';
@@ -175,10 +177,10 @@ class Horde_Kolab_Server_Object_Organizationalperson extends Horde_Kolab_Server_
             return;
         }
 
-        if (!empty($postalData[self::ATTRIBUTE_STREET])) {
-            $postalData['street_segment'] = $postalData[self::ATTRIBUTE_STREET];
-        } else {
+        if (!empty($postalData[self::ATTRIBUTE_POSTOFFICEBOX])) {
             $postalData['street_segment'] = $postalData[self::ATTRIBUTE_POSTOFFICEBOX];
+        } else {
+            $postalData['street_segment'] = $postalData[self::ATTRIBUTE_STREET];
         }
 
         $info[$key] = sprintf('%s$%s$%s$%s %s',
index c0d86a7..51ddf24 100644 (file)
@@ -110,43 +110,11 @@ class Horde_Kolab_Server_OrgPersonTest extends Horde_Kolab_Test_Server
      */
     public function testHandlingAJobTitle($server)
     {
-        $result = $server->add($this->objects[0]);
-        $this->assertNoError($result);
-
-        $cn = $this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN];
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE),
-                            '');
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => 'Teacher'));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE),
-                            'Teacher');
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => 'öäü/)(="§%$&§§$\'*'));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE),
-                            'öäü/)(="§%$&§§$\'*');
-
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => ''));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE),
-                            '');
-
-        $result = $server->delete($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_UID));
-        $this->assertNoError($result);
-        $cn_result = $server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]);
-        $this->assertNoError($cn_result);
-        $this->assertFalse($server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]));
+        $person = $this->assertAdd($server, $this->objects[0],
+                                   array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => ''));
+        $this->assertSimpleSequence($person, $server,
+                                    Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE,
+                                    array('Teacher', 'öäü/)(="§%$&§§$\'*', '', '0'));
     }
 
     /**
@@ -158,69 +126,31 @@ class Horde_Kolab_Server_OrgPersonTest extends Horde_Kolab_Test_Server
      */
     public function testHandlingAPostalAddress($server)
     {
-        $result = $server->add($this->objects[0]);
-        $this->assertNoError($result);
-
-        $cn = $this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN];
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW),
-                            'Kolab_Server_OrgPersonTest_123$$$ ');
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_456'));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW),
-                            'Kolab_Server_OrgPersonTest_456$$$ ');
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_123',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => 'Street 1',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '12345',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => 'c/o here',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => 'Nowhere'));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals('Kolab_Server_OrgPersonTest_123$c/o here$Street 1$12345 Nowhere',
-                            $person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW));
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => 'öäü/)(="§%$&§§$\'*',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => ''));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals('Kolab_Server_OrgPersonTest_123$c/o here$öäü/)(="§%\5c24&§§\5c24\'*$12345 Nowhere',
-                            $person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW));
-
-
-        $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => '',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => '',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => '',
-                            Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => ''));
-
-        $person = $this->fetchNew($server, $cn);
-
-        $this->assertEquals('Kolab_Server_OrgPersonTest_123$$$ ',
-                            $person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW));
-
-        $result = $server->delete($cn_result);
-        $this->assertNoError($result);
-        $cn_result = $server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]);
-        $this->assertNoError($cn_result);
-        $this->assertFalse($server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]));
-    }
-
-    private function fetchNew($server, $cn)
-    {
-        $cn_result = $server->uidForCn($cn);
-        $this->assertNoError($cn_result);
-
-        $person = $server->fetch($cn_result);
-        $this->assertNoError($person);
-
-        return $person;
+        $person = $this->assertAdd($server, $this->objects[0],
+                                   array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW => 'Kolab_Server_OrgPersonTest_123$$$ '));
+
+        $this->assertStoreFetch($person, $server,
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_456'),
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW => 'Kolab_Server_OrgPersonTest_456$$$ '));
+
+        $this->assertStoreFetch($person, $server,
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_123',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => 'Street 1',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '12345',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => 'c/o here',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => 'Nowhere'),
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW => 'Kolab_Server_OrgPersonTest_123$c/o here$Street 1$12345 Nowhere'));
+        $this->assertStoreFetch($person, $server,
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => 'öäü/)(="§%$&§§$\'*',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => ''),
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW => 'Kolab_Server_OrgPersonTest_123$c/o here$öäü/)(="§%\24&§§\24\'*$12345 Nowhere'));
+
+        $this->assertStoreFetch($person, $server,
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => '',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => '',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => '',
+                                      Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => ''),
+                                array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESSRAW => 'Kolab_Server_OrgPersonTest_123$$$ '));
     }
 }