diff --git a/src/Service/Generator.php b/src/Service/Generator.php index ae30f6b..0fe9163 100644 --- a/src/Service/Generator.php +++ b/src/Service/Generator.php @@ -52,7 +52,8 @@ public function fetch(string $name): ?XmlConstraint return $this->getRoot(); } - $this->populate($name); + $baseName = preg_replace('/(.*?)(_\d+)?/', '\1', $name); + $this->populate($baseName); if (array_key_exists($name, $this->urlsets)) { return $this->urlsets[$name]; diff --git a/tests/Unit/Service/GeneratorTest.php b/tests/Unit/Service/GeneratorTest.php index fe36392..54b7bc7 100644 --- a/tests/Unit/Service/GeneratorTest.php +++ b/tests/Unit/Service/GeneratorTest.php @@ -50,19 +50,28 @@ public function setUp(): void public function testFetch(): void { - $generator = $this->generator(); - - $section = $generator->fetch('void'); - self::assertNull($section); + self::assertNull($this->generator()->fetch('default')); $triggered = false; - $listener = function (SitemapPopulateEvent $event) use (&$triggered) { - self::assertEquals($event->getSection(), 'foo'); + $this->eventDispatcher->addListener(SitemapPopulateEvent::class, function (SitemapPopulateEvent $event) use (&$triggered) { + self::assertEquals($event->getSection(), 'default'); + $event->getUrlContainer()->addUrl(new UrlConcrete('http://acme.com/page-1'), 'default'); + $event->getUrlContainer()->addUrl(new UrlConcrete('http://acme.com/page-2'), 'default'); $triggered = true; - }; - $this->eventDispatcher->addListener(SitemapPopulateEvent::class, $listener); + }); + + $default = $this->generator()->fetch('default'); + self::assertInstanceOf(Urlset::class, $default); + self::assertStringContainsString('http://acme.com/page-1', $default->toXml()); + self::assertStringNotContainsString('http://acme.com/page-2', $default->toXml()); + + $default0 = $this->generator()->fetch('default_0'); + self::assertInstanceOf(Urlset::class, $default0); + self::assertStringNotContainsString('http://acme.com/page-1', $default0->toXml()); + self::assertStringContainsString('http://acme.com/page-2', $default0->toXml()); + + self::assertNull($this->generator()->fetch('default_1')); - $generator->fetch('foo'); self::assertTrue($triggered, 'Event listener was triggered'); }