97 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace Magento\Sitemap\Block;
 | 
						|
 | 
						|
use Magento\Framework\View\LayoutInterface;
 | 
						|
use Magento\Sitemap\Model\SitemapFactory;
 | 
						|
use Magento\Store\Model\StoreManagerInterface;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test for \Magento\Sitemap\Block\Robots.
 | 
						|
 */
 | 
						|
class RobotsTest extends TestCase
 | 
						|
{
 | 
						|
    private const STUB_SITEMAP_FILENAME = 'sitemap_file.xml';
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var LayoutInterface
 | 
						|
     */
 | 
						|
    private $layout;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var SitemapFactory
 | 
						|
     */
 | 
						|
    private $sitemapFactory;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var StoreManagerInterface
 | 
						|
     */
 | 
						|
    private $storeManager;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheridoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->layout = Bootstrap::getObjectManager()->get(LayoutInterface::class);
 | 
						|
        $this->sitemapFactory = Bootstrap::getObjectManager()->get(SitemapFactory::class);
 | 
						|
        $this->storeManager = Bootstrap::getObjectManager()->get(StoreManagerInterface::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test toHtml with few websites
 | 
						|
     *
 | 
						|
     * @magentoDataFixture Magento/Store/_files/multiple_websites_with_store_groups_stores.php
 | 
						|
     * @magentoConfigFixture default_store sitemap/search_engines/submission_robots 1
 | 
						|
     * @magentoConfigFixture second_store_view_store sitemap/search_engines/submission_robots 1
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function testToHtml(): void
 | 
						|
    {
 | 
						|
        $secondSitemapFile = 'second_' . self::STUB_SITEMAP_FILENAME;
 | 
						|
 | 
						|
        $this->createSitemap(self::STUB_SITEMAP_FILENAME, 1);
 | 
						|
        $this->createSitemap($secondSitemapFile, 2);
 | 
						|
 | 
						|
        $this->assertStringContainsString(self::STUB_SITEMAP_FILENAME, $this->getToHtmlOutput(1));
 | 
						|
        $this->assertStringContainsString($secondSitemapFile, $this->getToHtmlOutput(2));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns toHtml output per store
 | 
						|
     *
 | 
						|
     * @param int $storeId
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    private function getToHtmlOutput(int $storeId): string
 | 
						|
    {
 | 
						|
        $this->storeManager->setCurrentStore($storeId);
 | 
						|
        $block = $this->layout->createBlock(Robots::class);
 | 
						|
 | 
						|
        return $block->toHtml();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Create Sitemap
 | 
						|
     *
 | 
						|
     * @param string $fileName
 | 
						|
     * @param int $storeId
 | 
						|
     * @param string $siteMath
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    private function createSitemap(string $fileName, int $storeId, string $siteMath = '/'): void
 | 
						|
    {
 | 
						|
        $model = $this->sitemapFactory->create();
 | 
						|
        $model->setData(['sitemap_filename' => $fileName, 'store_id' => $storeId, 'sitemap_path' => $siteMath]);
 | 
						|
        $model->save();
 | 
						|
    }
 | 
						|
}
 |