@@ -23,7 +23,7 @@ public function testContactPerson() : void
2323 $ Company = "Test Company " ;
2424 $ GivenName = "John " ;
2525 $ SurName = "Doe " ;
26- $ EmailAddress = ['jdoe@test.company ' , 'john.doe@test.company ' ];
26+ $ EmailAddress = ['jdoe@test.company ' , 'mailto: john.doe@test.company ' ];
2727 $ TelephoneNumber = ['1-234-567-8901 ' ];
2828 $ ContactPersonAttributes = ['testattr ' => 'testval ' , 'testattr2 ' => 'testval2 ' ];
2929
@@ -54,7 +54,10 @@ public function testContactPerson() : void
5454
5555 $ this ->assertEquals (count ($ EmailAddress ), $ contactPersonElement ->getElementsByTagName ('EmailAddress ' )->length );
5656 foreach ($ contactPersonElement ->getElementsByTagName ('EmailAddress ' ) as $ element ) {
57- $ this ->assertTrue (in_array ($ element ->nodeValue , $ EmailAddress ));
57+ $ this ->assertTrue (
58+ in_array ($ element ->nodeValue , $ EmailAddress ) ||
59+ in_array (preg_replace ('/^mailto:/ ' , '' , $ element ->nodeValue ), $ EmailAddress )
60+ );
5861 }
5962
6063 $ this ->assertEquals (count ($ TelephoneNumber ), $ contactPersonElement ->getElementsByTagName ('TelephoneNumber ' )->length );
@@ -68,6 +71,72 @@ public function testContactPerson() : void
6871 }
6972
7073
74+ /**
75+ * Test more methods inside ContactPerson
76+ *
77+ * @return void
78+ */
79+ public function testContactPersonExtraMethods (): void
80+ {
81+ $ contactType = "administrative " ;
82+ $ Company = "Test Company " ;
83+ $ GivenName = "John " ;
84+ $ SurName = "Doe " ;
85+ $ EmailAddress = ['jdoe@test.company ' , 'mailto:john.doe@test.company ' ];
86+ $ AnotherEmail = 'john@doe.xyz ' ;
87+ $ TelephoneNumber = ['1-234-567-8901 ' ];
88+ $ MoreTelephoneNumber = '+31-887874000 ' ;
89+ $ ContactPersonAttributes = ['testattr ' => 'testval ' , 'testattr2 ' => 'testval2 ' ];
90+ $ ExtraAttribute = ['another ' => 'this ' ];
91+
92+ $ mdNamespace = Constants::NS_MD ;
93+ $ document = DOMDocumentFactory::fromString (<<<XML
94+ <md:Test xmlns:md=" {$ mdNamespace }" Binding="urn:something" Location="https://whatever/" xmlns:test="urn:test" test:attr="value">
95+ </md:Test>
96+ XML
97+ );
98+ $ contactPerson = new ContactPerson ();
99+ $ contactPerson ->setContactType ($ contactType );
100+ $ contactPerson ->setCompany ($ Company );
101+ $ contactPerson ->setGivenName ($ GivenName );
102+ $ contactPerson ->setSurName ($ SurName );
103+ $ contactPerson ->setEmailAddress ($ EmailAddress );
104+ $ contactPerson ->setTelephoneNumber ($ TelephoneNumber );
105+ $ contactPerson ->setContactPersonAttributes ($ ContactPersonAttributes );
106+
107+ $ contactPerson ->addEmailAddress ($ AnotherEmail );
108+ $ contactPerson ->addTelephoneNumber ($ MoreTelephoneNumber );
109+ $ contactPerson ->addContactPersonAttributes (key ($ ExtraAttribute ), array_pop ($ ExtraAttribute ));
110+
111+ $ contactPerson ->toXML ($ document ->firstChild );
112+
113+ $ contactPersonElement = $ document ->getElementsByTagName ('ContactPerson ' )->item (0 );
114+
115+ $ this ->assertEquals (count ($ EmailAddress ) + 1 , $ contactPersonElement ->getElementsByTagName ('EmailAddress ' )->length );
116+ foreach ($ contactPersonElement ->getElementsByTagName ('EmailAddress ' ) as $ element ) {
117+ $ this ->assertTrue (
118+ in_array ($ element ->nodeValue , $ EmailAddress ) ||
119+ in_array (preg_replace ('/^mailto:/ ' , '' , $ element ->nodeValue ), $ EmailAddress ) ||
120+ preg_replace ('/^mailto:/ ' , '' , $ element ->nodeValue ) === $ AnotherEmail
121+ );
122+ }
123+
124+ $ this ->assertEquals (
125+ count ($ TelephoneNumber ) + 1 ,
126+ $ contactPersonElement ->getElementsByTagName ('TelephoneNumber ' )->length
127+ );
128+ foreach ($ contactPersonElement ->getElementsByTagName ('TelephoneNumber ' ) as $ element ) {
129+ $ this ->assertTrue (in_array ($ element ->nodeValue , $ TelephoneNumber ) ||
130+ $ element ->nodeValue === $ MoreTelephoneNumber
131+ );
132+ }
133+
134+ foreach ($ ContactPersonAttributes + $ ExtraAttribute as $ attr => $ val ) {
135+ $ this ->assertEquals ($ val , $ contactPersonElement ->getAttribute ($ attr ));
136+ }
137+ }
138+
139+
71140 /**
72141 * @return void
73142 */
@@ -83,7 +152,7 @@ public function testContactPersonFromXML() : void
83152 <md:GivenName>John</md:GivenName>
84153 <md:SurName>Doe</md:SurName>
85154 <md:EmailAddress>jdoe@test.company</md:EmailAddress>
86- <md:EmailAddress>john.doe@test.company</md:EmailAddress>
155+ <md:EmailAddress>mailto: john.doe@test.company</md:EmailAddress>
87156 <md:TelephoneNumber>1-234-567-8901</md:TelephoneNumber>
88157 </md:ContactPerson>
89158</md:Test>
@@ -118,8 +187,8 @@ public function testMultipleNamesXML() : void
118187 <md:GivenName>John</md:GivenName>
119188 <md:GivenName>Jonathon</md:GivenName>
120189 <md:SurName>Doe</md:SurName>
121- <md:EmailAddress>jdoe@test.company</md:EmailAddress>
122- <md:EmailAddress>john.doe@test.company</md:EmailAddress>
190+ <md:EmailAddress>mailto: jdoe@test.company</md:EmailAddress>
191+ <md:EmailAddress>mailto: john.doe@test.company</md:EmailAddress>
123192 <md:TelephoneNumber>1-234-567-8901</md:TelephoneNumber>
124193 </md:ContactPerson>
125194</md:Test>
@@ -145,8 +214,8 @@ public function testEmptySurNameXML() : void
145214 <md:ContactPerson contactType="other">
146215 <md:Company>Test Company</md:Company>
147216 <md:GivenName>John</md:GivenName>
148- <md:EmailAddress>jdoe@test.company</md:EmailAddress>
149- <md:EmailAddress>john.doe@test.company</md:EmailAddress>
217+ <md:EmailAddress>mailto: jdoe@test.company</md:EmailAddress>
218+ <md:EmailAddress>mailto: john.doe@test.company</md:EmailAddress>
150219 <md:TelephoneNumber>1-234-567-8901</md:TelephoneNumber>
151220 </md:ContactPerson>
152221</md:Test>
0 commit comments