55use PhpSpec \ObjectBehavior ;
66use Prophecy \Argument ;
77use Thepixeldeveloper \Sitemap \Url ;
8+ use Thepixeldeveloper \Sitemap \Subelements \Image ;
9+ use Thepixeldeveloper \Sitemap \Subelements \Video ;
10+ use XMLWriter ;
811
912class UrlsetSpec extends ObjectBehavior
1013{
@@ -24,4 +27,26 @@ function it_should_return_the_urls_added(Url $url)
2427
2528 $ this ->getUrls ()->shouldReturn ([$ url ]);
2629 }
30+
31+ function it_should_only_append_attributes_once_for_each_subelement_type (XMLWriter $ xmlWriter , Url $ url , Image $ image , Video $ video )
32+ {
33+ $ xmlWriter ->startElement ('urlset ' )->shouldBeCalled ();
34+ $ xmlWriter ->writeAttribute ('xmlns:xsi ' , 'http://www.w3.org/2001/XMLSchema-instance ' )->shouldBeCalled ();
35+ $ xmlWriter ->writeAttribute ('xsi:schemaLocation ' , 'http://www.sitemaps.org/schemas/sitemap/0.9 ' . 'http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd ' )->shouldBeCalled ();
36+ $ xmlWriter ->writeAttribute ('xmlns ' , 'http://www.sitemaps.org/schemas/sitemap/0.9 ' )->shouldBeCalled ();
37+
38+ $ url ->getSubelementsThatAppend ()->willReturn ([$ image , $ video ]);
39+ $ this ->appendSubelementAttribute ($ xmlWriter , $ image )->shouldReturn (true );
40+ $ this ->appendSubelementAttribute ($ xmlWriter , $ image )->shouldReturn (false );
41+ $ this ->appendSubelementAttribute ($ xmlWriter , $ video )->shouldReturn (true );
42+ $ this ->appendSubelementAttribute ($ xmlWriter , $ video )->shouldReturn (false );
43+
44+ $ image ->appendAttributeToCollectionXML ($ xmlWriter )->shouldBeCalled ();
45+ $ video ->appendAttributeToCollectionXML ($ xmlWriter )->shouldBeCalled ();
46+ $ url ->generateXML ($ xmlWriter )->shouldBeCalled ();
47+ $ xmlWriter ->endElement ()->shouldBeCalled ();
48+
49+ $ this ->addUrl ($ url );
50+ $ this ->generateXML ($ xmlWriter );
51+ }
2752}
0 commit comments