215 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace Magento\GraphQl\Cms;
 | 
						|
 | 
						|
use Magento\Cms\Model\GetPageByIdentifier;
 | 
						|
use Magento\TestFramework\ObjectManager;
 | 
						|
use Magento\TestFramework\TestCase\GraphQlAbstract;
 | 
						|
 | 
						|
/**
 | 
						|
 * Get CMS Page test
 | 
						|
 */
 | 
						|
class CmsPageTest extends GraphQlAbstract
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Verify the fields of CMS Page selected by page_id
 | 
						|
     *
 | 
						|
     * @magentoApiDataFixture Magento/Cms/_files/pages.php
 | 
						|
     */
 | 
						|
    public function testGetCmsPageById()
 | 
						|
    {
 | 
						|
        $cmsPage = ObjectManager::getInstance()->get(GetPageByIdentifier::class)->execute('page100', 0);
 | 
						|
        $pageId = $cmsPage->getPageId();
 | 
						|
        $cmsPageData = $cmsPage->getData();
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage(id: $pageId) {
 | 
						|
    url_key
 | 
						|
    title
 | 
						|
    content
 | 
						|
    content_heading
 | 
						|
    page_layout
 | 
						|
    meta_title
 | 
						|
    meta_description
 | 
						|
    meta_keywords
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
 | 
						|
        $response = $this->graphQlQuery($query);
 | 
						|
        $this->assertEquals($cmsPageData['identifier'], $response['cmsPage']['url_key']);
 | 
						|
        $this->assertEquals($cmsPageData['title'], $response['cmsPage']['title']);
 | 
						|
        $this->assertEquals($cmsPageData['content'], $response['cmsPage']['content']);
 | 
						|
        $this->assertEquals($cmsPageData['content_heading'], $response['cmsPage']['content_heading']);
 | 
						|
        $this->assertEquals($cmsPageData['page_layout'], $response['cmsPage']['page_layout']);
 | 
						|
        $this->assertEquals($cmsPageData['meta_title'], $response['cmsPage']['meta_title']);
 | 
						|
        $this->assertEquals($cmsPageData['meta_description'], $response['cmsPage']['meta_description']);
 | 
						|
        $this->assertEquals($cmsPageData['meta_keywords'], $response['cmsPage']['meta_keywords']);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Verify the fields of CMS Page selected by page_id
 | 
						|
     *
 | 
						|
     * @magentoApiDataFixture Magento/Cms/_files/pages.php
 | 
						|
     */
 | 
						|
    public function testGetCmsPageByIdentifier()
 | 
						|
    {
 | 
						|
        $cmsPageIdentifier = 'page100';
 | 
						|
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage(identifier: "$cmsPageIdentifier") {
 | 
						|
    identifier
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
 | 
						|
        $response = $this->graphQlQuery($query);
 | 
						|
        $this->assertEquals($cmsPageIdentifier, $response['cmsPage']['identifier']);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Verify the message when page_id is not specified.
 | 
						|
     */
 | 
						|
    public function testGetCmsPageWithoutId()
 | 
						|
    {
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage {
 | 
						|
    url_key
 | 
						|
    title
 | 
						|
    content
 | 
						|
    content_heading
 | 
						|
    page_layout
 | 
						|
    meta_title
 | 
						|
    meta_description
 | 
						|
    meta_keywords
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
 | 
						|
        $this->expectException(\Exception::class);
 | 
						|
        $this->expectExceptionMessage('Page id/identifier should be specified');
 | 
						|
        $this->graphQlQuery($query);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Verify the message when page_id does not exist.
 | 
						|
     */
 | 
						|
    public function testGetCmsPageByNonExistentId()
 | 
						|
    {
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage(id: 0) {
 | 
						|
    url_key
 | 
						|
    title
 | 
						|
    content
 | 
						|
    content_heading
 | 
						|
    page_layout
 | 
						|
    meta_title
 | 
						|
    meta_description
 | 
						|
    meta_keywords
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
 | 
						|
        $this->expectException(\Exception::class);
 | 
						|
        $this->expectExceptionMessage('The CMS page with the "0" ID doesn\'t exist.');
 | 
						|
        $this->graphQlQuery($query);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Verify the message when identifier does not exist.
 | 
						|
     *
 | 
						|
     */
 | 
						|
    public function testGetCmsPageByNonExistentIdentifier()
 | 
						|
    {
 | 
						|
        $this->expectException(\Exception::class);
 | 
						|
        $this->expectExceptionMessage('The CMS page with the "" ID doesn\'t exist.');
 | 
						|
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage(identifier: "") {
 | 
						|
    url_key
 | 
						|
    title
 | 
						|
    content
 | 
						|
    content_heading
 | 
						|
    page_layout
 | 
						|
    meta_title
 | 
						|
    meta_description
 | 
						|
    meta_keywords
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
        $this->graphQlQuery($query);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Verify the message when CMS Page selected by page_id is disabled
 | 
						|
     *
 | 
						|
     * @magentoApiDataFixture Magento/Cms/_files/noroute.php
 | 
						|
     */
 | 
						|
    public function testGetDisabledCmsPageById()
 | 
						|
    {
 | 
						|
        $cmsPageId = ObjectManager::getInstance()->get(GetPageByIdentifier::class)->execute('no-route', 0)->getPageId();
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage(id: $cmsPageId) {
 | 
						|
    url_key
 | 
						|
    title
 | 
						|
    content
 | 
						|
    content_heading
 | 
						|
    page_layout
 | 
						|
    meta_title
 | 
						|
    meta_description
 | 
						|
    meta_keywords
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
 | 
						|
        $this->expectException(\Exception::class);
 | 
						|
        $this->expectExceptionMessage('No such entity.');
 | 
						|
        $this->graphQlQuery($query);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Verify the message when CMS Page selected by identifier is disabled
 | 
						|
     *
 | 
						|
     * @magentoApiDataFixture Magento/Cms/_files/noroute.php
 | 
						|
     */
 | 
						|
    public function testGetDisabledCmsPageByIdentifier()
 | 
						|
    {
 | 
						|
        $this->expectException(\Exception::class);
 | 
						|
        $this->expectExceptionMessage('The CMS page with the "no-route" ID doesn\'t exist.');
 | 
						|
 | 
						|
        $cmsPageIdentifier = 'no-route';
 | 
						|
        $query =
 | 
						|
            <<<QUERY
 | 
						|
{
 | 
						|
  cmsPage(identifier: "$cmsPageIdentifier") {
 | 
						|
    url_key
 | 
						|
    title
 | 
						|
    content
 | 
						|
    content_heading
 | 
						|
    page_layout
 | 
						|
    meta_title
 | 
						|
    meta_description
 | 
						|
    meta_keywords
 | 
						|
  }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
        $this->graphQlQuery($query);
 | 
						|
    }
 | 
						|
}
 |