@@ -17,7 +17,7 @@ public function testContactPerson()
1717 $ Company = "Test Company " ;
1818 $ GivenName = "John " ;
1919 $ SurName = "Doe " ;
20- $ EmailAddress = ['jdoe@test.company ' , 'john.doe@test.company ' ];
20+ $ EmailAddress = ['jdoe@test.company ' , 'mailto: john.doe@test.company ' ];
2121 $ TelephoneNumber = ['1-234-567-8901 ' ];
2222 $ ContactPersonAttributes = ['testattr ' => 'testval ' , 'testattr2 ' => 'testval2 ' ];
2323
@@ -48,7 +48,10 @@ public function testContactPerson()
4848
4949 $ this ->assertEquals (count ($ EmailAddress ), $ contactPersonElement ->getElementsByTagName ('EmailAddress ' )->length );
5050 foreach ($ contactPersonElement ->getElementsByTagName ('EmailAddress ' ) as $ element ) {
51- $ this ->assertTrue (in_array ($ element ->nodeValue , $ EmailAddress ));
51+ $ this ->assertTrue (
52+ in_array ($ element ->nodeValue , $ EmailAddress ) ||
53+ in_array (preg_replace ('/^mailto:/ ' , '' , $ element ->nodeValue ), $ EmailAddress )
54+ );
5255 }
5356
5457 $ this ->assertEquals (count ($ TelephoneNumber ), $ contactPersonElement ->getElementsByTagName ('TelephoneNumber ' )->length );
@@ -62,6 +65,72 @@ public function testContactPerson()
6265 }
6366
6467
68+ /**
69+ * Test more methods inside ContactPerson
70+ *
71+ * @return void
72+ */
73+ public function testContactPersonExtraMethods ()
74+ {
75+ $ contactType = "administrative " ;
76+ $ Company = "Test Company " ;
77+ $ GivenName = "John " ;
78+ $ SurName = "Doe " ;
79+ $ EmailAddress = ['jdoe@test.company ' , 'mailto:john.doe@test.company ' ];
80+ $ AnotherEmail = 'john@doe.xyz ' ;
81+ $ TelephoneNumber = ['1-234-567-8901 ' ];
82+ $ MoreTelephoneNumber = '+31-887874000 ' ;
83+ $ ContactPersonAttributes = ['testattr ' => 'testval ' , 'testattr2 ' => 'testval2 ' ];
84+ $ ExtraAttribute = ['another ' => 'this ' ];
85+
86+ $ mdNamespace = Constants::NS_MD ;
87+ $ document = DOMDocumentFactory::fromString (<<<XML
88+ <md:Test xmlns:md=" {$ mdNamespace }" Binding="urn:something" Location="https://whatever/" xmlns:test="urn:test" test:attr="value">
89+ </md:Test>
90+ XML
91+ );
92+ $ contactPerson = new ContactPerson ();
93+ $ contactPerson ->setContactType ($ contactType );
94+ $ contactPerson ->setCompany ($ Company );
95+ $ contactPerson ->setGivenName ($ GivenName );
96+ $ contactPerson ->setSurName ($ SurName );
97+ $ contactPerson ->setEmailAddress ($ EmailAddress );
98+ $ contactPerson ->setTelephoneNumber ($ TelephoneNumber );
99+ $ contactPerson ->setContactPersonAttributes ($ ContactPersonAttributes );
100+
101+ $ contactPerson ->addEmailAddress ($ AnotherEmail );
102+ $ contactPerson ->addTelephoneNumber ($ MoreTelephoneNumber );
103+ $ contactPerson ->addContactPersonAttributes (key ($ ExtraAttribute ), array_pop ($ ExtraAttribute ));
104+
105+ $ contactPerson ->toXML ($ document ->firstChild );
106+
107+ $ contactPersonElement = $ document ->getElementsByTagName ('ContactPerson ' )->item (0 );
108+
109+ $ this ->assertEquals (count ($ EmailAddress ) + 1 , $ contactPersonElement ->getElementsByTagName ('EmailAddress ' )->length );
110+ foreach ($ contactPersonElement ->getElementsByTagName ('EmailAddress ' ) as $ element ) {
111+ $ this ->assertTrue (
112+ in_array ($ element ->nodeValue , $ EmailAddress ) ||
113+ in_array (preg_replace ('/^mailto:/ ' , '' , $ element ->nodeValue ), $ EmailAddress ) ||
114+ preg_replace ('/^mailto:/ ' , '' , $ element ->nodeValue ) === $ AnotherEmail
115+ );
116+ }
117+
118+ $ this ->assertEquals (
119+ count ($ TelephoneNumber ) + 1 ,
120+ $ contactPersonElement ->getElementsByTagName ('TelephoneNumber ' )->length
121+ );
122+ foreach ($ contactPersonElement ->getElementsByTagName ('TelephoneNumber ' ) as $ element ) {
123+ $ this ->assertTrue (in_array ($ element ->nodeValue , $ TelephoneNumber ) ||
124+ $ element ->nodeValue === $ MoreTelephoneNumber
125+ );
126+ }
127+
128+ foreach ($ ContactPersonAttributes + $ ExtraAttribute as $ attr => $ val ) {
129+ $ this ->assertEquals ($ val , $ contactPersonElement ->getAttribute ($ attr ));
130+ }
131+ }
132+
133+
65134 public function testContactPersonFromXML ()
66135 {
67136 $ mdNamespace = Constants::NS_MD ;
@@ -73,7 +142,7 @@ public function testContactPersonFromXML()
73142 <md:Company>Test Company</md:Company>
74143 <md:GivenName>John</md:GivenName>
75144 <md:SurName>Doe</md:SurName>
76- <md:EmailAddress>jdoe@test.company</md:EmailAddress>
145+ <md:EmailAddress>mailto: jdoe@test.company</md:EmailAddress>
77146 <md:EmailAddress>john.doe@test.company</md:EmailAddress>
78147 <md:TelephoneNumber>1-234-567-8901</md:TelephoneNumber>
79148 </md:ContactPerson>
@@ -106,8 +175,8 @@ public function testMultipleNamesXML()
106175 <md:GivenName>John</md:GivenName>
107176 <md:GivenName>Jonathon</md:GivenName>
108177 <md:SurName>Doe</md:SurName>
109- <md:EmailAddress>jdoe@test.company</md:EmailAddress>
110- <md:EmailAddress>john.doe@test.company</md:EmailAddress>
178+ <md:EmailAddress>mailto: jdoe@test.company</md:EmailAddress>
179+ <md:EmailAddress>mailto: john.doe@test.company</md:EmailAddress>
111180 <md:TelephoneNumber>1-234-567-8901</md:TelephoneNumber>
112181 </md:ContactPerson>
113182</md:Test>
@@ -130,8 +199,8 @@ public function testEmptySurNameXML()
130199 <md:ContactPerson contactType="other">
131200 <md:Company>Test Company</md:Company>
132201 <md:GivenName>John</md:GivenName>
133- <md:EmailAddress>jdoe@test.company</md:EmailAddress>
134- <md:EmailAddress>john.doe@test.company</md:EmailAddress>
202+ <md:EmailAddress>mailto: jdoe@test.company</md:EmailAddress>
203+ <md:EmailAddress>mailto: john.doe@test.company</md:EmailAddress>
135204 <md:TelephoneNumber>1-234-567-8901</md:TelephoneNumber>
136205 </md:ContactPerson>
137206</md:Test>
0 commit comments