246 lines
8.5 KiB
PHP
Executable File
246 lines
8.5 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Paypal\Model;
|
|
|
|
use Magento\Framework\App\Config\MutableScopeConfigInterface;
|
|
use Magento\Framework\App\MutableScopeConfig;
|
|
use Magento\Store\Model\ScopeInterface;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class PayLaterConfigTest extends TestCase
|
|
{
|
|
/**
|
|
* @dataProvider getStyleDataProvider
|
|
* @magentoAppIsolation enabled
|
|
* @covers \Magento\Paypal\Model\PayLaterConfig::getSectionConfig()
|
|
*/
|
|
public function testGetStyleConfig($systemConfig, $expectedConfig)
|
|
{
|
|
$this->setConfig($systemConfig);
|
|
|
|
/** @var PayLaterConfig $config */
|
|
$config = Bootstrap::getObjectManager()->get(PayLaterConfig::class);
|
|
$this->assertEquals($expectedConfig, $config->getSectionConfig('test1', PayLaterConfig::CONFIG_KEY_STYLE));
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getStyleDataProvider()
|
|
{
|
|
return [
|
|
[
|
|
'systemConfig' => [
|
|
'payment/paypal_paylater/test1page_stylelayout' => 'flex',
|
|
'payment/paypal_paylater/test1page_ratio' => '20x1',
|
|
'payment/paypal_paylater/test1page_color' => 'blue'
|
|
],
|
|
'expectedConfig' => [
|
|
'data-pp-style-layout' => 'flex',
|
|
'data-pp-style-logo-type' => null,
|
|
'data-pp-style-logo-position' => null,
|
|
'data-pp-style-text-color' => null,
|
|
'data-pp-style-text-size' => null,
|
|
'data-pp-style-color' => 'blue',
|
|
'data-pp-style-ratio' => '20x1',
|
|
]
|
|
],
|
|
[
|
|
'systemConfig' => [
|
|
'payment/paypal_paylater/test1page_stylelayout' => 'text',
|
|
'payment/paypal_paylater/test1page_logotype' => 'primary',
|
|
'payment/paypal_paylater/test1page_logoposition' => 'left',
|
|
'payment/paypal_paylater/test1page_textcolor' => 'white',
|
|
'payment/paypal_paylater/test1page_textsize' => '10'
|
|
|
|
],
|
|
'expectedConfig' => [
|
|
'data-pp-style-layout' => 'text',
|
|
'data-pp-style-logo-type' => 'primary',
|
|
'data-pp-style-logo-position' => 'left',
|
|
'data-pp-style-text-color' => 'white',
|
|
'data-pp-style-text-size' => '10',
|
|
'data-pp-style-color' => null,
|
|
'data-pp-style-ratio' => null,
|
|
]
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider getPositionDataProvider
|
|
* @magentoAppIsolation enabled
|
|
* @covers \Magento\Paypal\Model\PayLaterConfig::getSectionConfig()
|
|
*/
|
|
public function testGetPositionConfig($systemConfig, $expectedConfig)
|
|
{
|
|
$this->setConfig($systemConfig);
|
|
|
|
/** @var PayLaterConfig $config */
|
|
$config = Bootstrap::getObjectManager()->get(PayLaterConfig::class);
|
|
$this->assertEquals($expectedConfig, $config->getSectionConfig('test1', PayLaterConfig::CONFIG_KEY_POSITION));
|
|
}
|
|
|
|
/**
|
|
* @return array[]
|
|
*/
|
|
public function getPositionDataProvider()
|
|
{
|
|
return [
|
|
[
|
|
'systemConfig' => [
|
|
'payment/paypal_paylater/test1page_position' => 'header',
|
|
],
|
|
'expectedConfig' => 'header'
|
|
],
|
|
[
|
|
'systemConfig' => [
|
|
'payment/paypal_paylater/test1page_position' => 'sidebar',
|
|
],
|
|
'expectedConfig' => 'sidebar'
|
|
],
|
|
[
|
|
'systemConfig' => [
|
|
'payment/paypal_paylater/test2page_position' => 'sidebar',
|
|
],
|
|
'expectedConfig' => ''
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
* @dataProvider isEnabledDataProvider
|
|
*/
|
|
public function testIsEnabled($systemConfig, $expected)
|
|
{
|
|
$systemConfig = array_replace([
|
|
'payment/paypal_paylater/experience_active' => 1,
|
|
'payment/paypal_paylater/enabled' => 1,
|
|
'payment/paypal_paylater/test1page_display' => 1
|
|
], $systemConfig);
|
|
|
|
$this->setConfig($systemConfig);
|
|
/** @var PayLaterConfig $config */
|
|
$config = Bootstrap::getObjectManager()->get(PayLaterConfig::class);
|
|
$this->assertEquals($expected, $config->isEnabled('test1'));
|
|
}
|
|
|
|
/**
|
|
* @return array[]
|
|
*/
|
|
public function isEnabledDataProvider()
|
|
{
|
|
$paymentPath = 'payment/%s/active';
|
|
return [
|
|
'PayPal Express' => [
|
|
[sprintf($paymentPath, Config::METHOD_EXPRESS) => 1],
|
|
true
|
|
],
|
|
'PayPal Express - Disabled' => [
|
|
[sprintf($paymentPath, Config::METHOD_EXPRESS) => 0],
|
|
false
|
|
],
|
|
'PayPal Express - Disabled funding' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_EXPRESS) => 1,
|
|
'paypal/style/disable_funding_options' => 'CARD,ELV'
|
|
],
|
|
true
|
|
],
|
|
'PayPal Express - Disabled funding CREDIT' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_EXPRESS) => 1,
|
|
'paypal/style/disable_funding_options' => 'CREDIT,CARD,ELV'
|
|
],
|
|
false
|
|
],
|
|
'PayPal Standard Bml' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_WPS_EXPRESS) => 1,
|
|
sprintf($paymentPath, Config::METHOD_WPS_BML) => 1,
|
|
],
|
|
true
|
|
],
|
|
'PayPal Standard Bml - Disabled' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_WPS_EXPRESS) => 0,
|
|
sprintf($paymentPath, Config::METHOD_WPS_BML) => 1,
|
|
],
|
|
false
|
|
],
|
|
'PayPal Standard Bml - Disabled PP Credit' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_WPS_EXPRESS) => 1,
|
|
sprintf($paymentPath, Config::METHOD_WPS_BML) => 0,
|
|
],
|
|
false
|
|
],
|
|
'PayPal Bill Me Later - Express Checkout (Payflow Edition)' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_WPP_PE_EXPRESS) => 1,
|
|
sprintf($paymentPath, Config::METHOD_WPP_PE_BML) => 1,
|
|
],
|
|
true
|
|
],
|
|
'PayPal Bill Me Later - Express Checkout (Payflow Edition) - Disabled' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_WPP_PE_EXPRESS) => 0,
|
|
sprintf($paymentPath, Config::METHOD_WPP_PE_BML) => 1,
|
|
],
|
|
false
|
|
],
|
|
'PayPal Bill Me Later - Express Checkout (Payflow Edition) - Disabled PP Credit' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_WPP_PE_EXPRESS) => 1,
|
|
sprintf($paymentPath, Config::METHOD_WPP_PE_BML) => 0,
|
|
],
|
|
false
|
|
],
|
|
'PayLater disabled' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_EXPRESS) => 1,
|
|
'payment/paypal_paylater/enabled' => 0
|
|
],
|
|
false
|
|
],
|
|
'"Display" for page disabled' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_EXPRESS) => 1,
|
|
'payment/paypal_paylater/test1page_display' => 0
|
|
],
|
|
false
|
|
],
|
|
'PayLater experience not active' => [
|
|
[
|
|
sprintf($paymentPath, Config::METHOD_EXPRESS) => 1,
|
|
'payment/paypal_paylater/experience_active' => 0
|
|
],
|
|
false
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Set system configuration value for test
|
|
*
|
|
* @param $config
|
|
*/
|
|
private function setConfig($config)
|
|
{
|
|
$objectManager = Bootstrap::getObjectManager();
|
|
/** @var $scopeConfig MutableScopeConfig */
|
|
$scopeConfig = $objectManager->get(MutableScopeConfigInterface::class);
|
|
foreach ($config as $path => $value) {
|
|
$scopeConfig->setValue($path, $value, ScopeInterface::SCOPE_STORE);
|
|
}
|
|
}
|
|
}
|