195 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace Magento\GraphQl\PaymentGraphQl;
 | 
						|
 | 
						|
use Magento\TestFramework\TestCase\GraphQlAbstract;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test coverage for zero subtotal and check/money order payment methods in the store config
 | 
						|
 *
 | 
						|
 * @magentoDbIsolation enabled
 | 
						|
 */
 | 
						|
class StoreConfigTest extends GraphQlAbstract
 | 
						|
{
 | 
						|
    const STORE_CONFIG_QUERY = <<<QUERY
 | 
						|
{
 | 
						|
    storeConfig {
 | 
						|
        zero_subtotal_enabled
 | 
						|
        zero_subtotal_title
 | 
						|
        zero_subtotal_new_order_status
 | 
						|
        zero_subtotal_payment_action
 | 
						|
        zero_subtotal_enable_for_specific_countries
 | 
						|
        zero_subtotal_payment_from_specific_countries
 | 
						|
        zero_subtotal_sort_order
 | 
						|
        check_money_order_enabled
 | 
						|
        check_money_order_title
 | 
						|
        check_money_order_new_order_status
 | 
						|
        check_money_order_enable_for_specific_countries
 | 
						|
        check_money_order_payment_from_specific_countries
 | 
						|
        check_money_order_make_check_payable_to
 | 
						|
        check_money_order_send_check_to
 | 
						|
        check_money_order_min_order_total
 | 
						|
        check_money_order_max_order_total
 | 
						|
        check_money_order_sort_order
 | 
						|
    }
 | 
						|
}
 | 
						|
QUERY;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test that storeConfig is correct for default configuration values.
 | 
						|
     *
 | 
						|
     * @throws \Exception
 | 
						|
     */
 | 
						|
    public function testStoreConfigZeroSubtotalCheckMoneyOrderDefaultValues()
 | 
						|
    {
 | 
						|
        $response = $this->graphQlQuery(self::STORE_CONFIG_QUERY);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_enabled', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_title', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_new_order_status', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_payment_action', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_enable_for_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_payment_from_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_sort_order', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_enabled', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_title', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_new_order_status', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_enable_for_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_payment_from_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_make_check_payable_to', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_send_check_to', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_min_order_total', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_max_order_total', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_sort_order', $response['storeConfig']);
 | 
						|
 | 
						|
        self::assertTrue($response['storeConfig']['zero_subtotal_enabled']);
 | 
						|
        self::assertEquals('No Payment Information Required', $response['storeConfig']['zero_subtotal_title']);
 | 
						|
        self::assertEquals('pending', $response['storeConfig']['zero_subtotal_new_order_status']);
 | 
						|
        self::assertEquals('authorize_capture', $response['storeConfig']['zero_subtotal_payment_action']);
 | 
						|
        self::assertFalse($response['storeConfig']['zero_subtotal_enable_for_specific_countries']);
 | 
						|
        self::assertNull($response['storeConfig']['zero_subtotal_payment_from_specific_countries']);
 | 
						|
        self::assertEquals(1, $response['storeConfig']['zero_subtotal_sort_order']);
 | 
						|
        self::assertTrue($response['storeConfig']['check_money_order_enabled']);
 | 
						|
        self::assertEquals('Check / Money order', $response['storeConfig']['check_money_order_title']);
 | 
						|
        self::assertEquals('pending', $response['storeConfig']['check_money_order_new_order_status']);
 | 
						|
        self::assertFalse($response['storeConfig']['check_money_order_enable_for_specific_countries']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_payment_from_specific_countries']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_make_check_payable_to']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_send_check_to']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_min_order_total']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_max_order_total']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_sort_order']);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test that storeConfig is correct when zero subtotal and check/money order payment methods are disabled.
 | 
						|
     *
 | 
						|
     * @magentoConfigFixture default/payment/free/active 0
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/active 0
 | 
						|
     *
 | 
						|
     * @throws \Exception
 | 
						|
     */
 | 
						|
    public function testStoreConfigZeroSubtotalCheckMoneyOrderDisabled()
 | 
						|
    {
 | 
						|
        $response = $this->graphQlQuery(self::STORE_CONFIG_QUERY);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_enabled', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_title', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_new_order_status', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_payment_action', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_enable_for_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_payment_from_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_sort_order', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_enabled', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_title', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_new_order_status', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_enable_for_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_payment_from_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_make_check_payable_to', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_send_check_to', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_min_order_total', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_max_order_total', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_sort_order', $response['storeConfig']);
 | 
						|
 | 
						|
        self::assertFalse($response['storeConfig']['zero_subtotal_enabled']);
 | 
						|
        self::assertEquals('No Payment Information Required', $response['storeConfig']['zero_subtotal_title']);
 | 
						|
        self::assertEquals('pending', $response['storeConfig']['zero_subtotal_new_order_status']);
 | 
						|
        self::assertEquals('authorize_capture', $response['storeConfig']['zero_subtotal_payment_action']);
 | 
						|
        self::assertFalse($response['storeConfig']['zero_subtotal_enable_for_specific_countries']);
 | 
						|
        self::assertNull($response['storeConfig']['zero_subtotal_payment_from_specific_countries']);
 | 
						|
        self::assertEquals(1, $response['storeConfig']['zero_subtotal_sort_order']);
 | 
						|
        self::assertFalse($response['storeConfig']['check_money_order_enabled']);
 | 
						|
        self::assertEquals('Check / Money order', $response['storeConfig']['check_money_order_title']);
 | 
						|
        self::assertEquals('pending', $response['storeConfig']['check_money_order_new_order_status']);
 | 
						|
        self::assertFalse($response['storeConfig']['check_money_order_enable_for_specific_countries']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_payment_from_specific_countries']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_make_check_payable_to']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_send_check_to']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_min_order_total']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_max_order_total']);
 | 
						|
        self::assertNull($response['storeConfig']['check_money_order_sort_order']);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test that storeConfig is correct for custom values.
 | 
						|
     *
 | 
						|
     * @magentoConfigFixture default/payment/free/title Test Zero Subtotal Title
 | 
						|
     * @magentoConfigFixture default/payment/free/order_status processing
 | 
						|
     * @magentoConfigFixture default/payment/free/allowspecific 1
 | 
						|
     * @magentoConfigFixture default/payment/free/specificcountry DZ
 | 
						|
     * @magentoConfigFixture default/payment/free/sort_order 5
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/title Test Check / Money Order Title
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/allowspecific 1
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/specificcountry BR
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/payable_to Test Payee
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/mailing_address Test Address
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/min_order_total 5.00
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/max_order_total 5555.00
 | 
						|
     * @magentoConfigFixture default/payment/checkmo/sort_order 7
 | 
						|
     *
 | 
						|
     * @throws \Exception
 | 
						|
     */
 | 
						|
    public function testStoreConfigZeroSubtotalCheckMoneyOrderCustom()
 | 
						|
    {
 | 
						|
        $response = $this->graphQlQuery(self::STORE_CONFIG_QUERY);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_enabled', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_title', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_new_order_status', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_payment_action', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_enable_for_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_payment_from_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('zero_subtotal_sort_order', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_enabled', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_title', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_new_order_status', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_enable_for_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_payment_from_specific_countries', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_make_check_payable_to', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_send_check_to', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_min_order_total', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_max_order_total', $response['storeConfig']);
 | 
						|
        self::assertArrayHasKey('check_money_order_sort_order', $response['storeConfig']);
 | 
						|
 | 
						|
        self::assertTrue($response['storeConfig']['zero_subtotal_enabled']);
 | 
						|
        self::assertEquals('Test Zero Subtotal Title', $response['storeConfig']['zero_subtotal_title']);
 | 
						|
        self::assertEquals('processing', $response['storeConfig']['zero_subtotal_new_order_status']);
 | 
						|
        self::assertEquals('authorize_capture', $response['storeConfig']['zero_subtotal_payment_action']);
 | 
						|
        self::assertTrue($response['storeConfig']['zero_subtotal_enable_for_specific_countries']);
 | 
						|
        self::assertEquals('DZ', $response['storeConfig']['zero_subtotal_payment_from_specific_countries']);
 | 
						|
        self::assertEquals(5, $response['storeConfig']['zero_subtotal_sort_order']);
 | 
						|
        self::assertTrue($response['storeConfig']['check_money_order_enabled']);
 | 
						|
        self::assertEquals('Test Check / Money Order Title', $response['storeConfig']['check_money_order_title']);
 | 
						|
        self::assertEquals('pending', $response['storeConfig']['check_money_order_new_order_status']);
 | 
						|
        self::assertTrue($response['storeConfig']['check_money_order_enable_for_specific_countries']);
 | 
						|
        self::assertEquals('BR', $response['storeConfig']['check_money_order_payment_from_specific_countries']);
 | 
						|
        self::assertEquals('Test Payee', $response['storeConfig']['check_money_order_make_check_payable_to']);
 | 
						|
        self::assertEquals('Test Address', $response['storeConfig']['check_money_order_send_check_to']);
 | 
						|
        self::assertEquals('5.00', $response['storeConfig']['check_money_order_min_order_total']);
 | 
						|
        self::assertEquals('5555.00', $response['storeConfig']['check_money_order_max_order_total']);
 | 
						|
        self::assertEquals(7, $response['storeConfig']['check_money_order_sort_order']);
 | 
						|
    }
 | 
						|
}
 |