magento2-docker/dev/tests/integration/testsuite/Magento/InstantPurchase/Model/InstantPurchaseTest.php

171 lines
6.0 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\InstantPurchase\Model;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Model\Address;
use Magento\Customer\Model\Customer;
use Magento\Framework\ObjectManagerInterface;
use Magento\Quote\Api\Data\ShippingMethodInterface;
use Magento\Store\Api\StoreRepositoryInterface;
use Magento\Store\Model\Store;
use Magento\TestFramework\Helper\Bootstrap;
use Magento\Vault\Api\Data\PaymentTokenInterface;
use PHPUnit\Framework\TestCase;
/**
* @magentoAppIsolation enabled
*/
class InstantPurchaseTest extends TestCase
{
/**
* @var ObjectManagerInterface
*/
private $objectManager;
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
*/
public function testAvailableWhenEverythingSetUp()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertTrue($option->isAvailable());
$this->assertInstanceOf(PaymentTokenInterface::class, $option->getPaymentToken());
$this->assertInstanceOf(Address::class, $option->getShippingAddress());
$this->assertInstanceOf(Address::class, $option->getBillingAddress());
$this->assertInstanceOf(ShippingMethodInterface::class, $option->getShippingMethod());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
*/
public function testNotAvailableWithoutPaymentToken()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
* @magentoConfigFixture current_store payment/fake_vault/active 0
*/
public function testNotAvailableWhenVaultNotActive()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
* @magentoConfigFixture current_store payment/fake/active 0
*/
public function testNotAvailableWhenVaultProviderNotActive()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
*/
public function testNotAvailableWithoutAddresses()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
* @magentoConfigFixture current_store carriers/flatrate/active 0
*/
public function testNotAvailableWhenShippingMethodsDisabled()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
* @magentoConfigFixture current_store sales/instant_purchase/active 0
*/
public function testNotAvailableWhenDisabledInConfig()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Customer/_files/customer_address.php
* @magentoDataFixture Magento/InstantPurchase/_files/fake_payment_token.php
* @magentoConfigFixture current_store payment/fake_vault/instant_purchase/supported 0
*/
public function testNotAvailableWhenSupportSwitchedOffForVault()
{
$option = $this->invokeTestInstantPurchaseOptionCalculation();
$this->assertFalse($option->isAvailable());
}
/**
* Run system under test
*
* @return InstantPurchaseOption
*/
private function invokeTestInstantPurchaseOptionCalculation(): InstantPurchaseOption
{
/** @var InstantPurchaseInterface $instantPurchase */
$instantPurchase = $this->objectManager->create(InstantPurchaseInterface::class);
$store = $this->getFixtureStore();
$customer = $this->getFixtureCustomer();
$option = $instantPurchase->getOption($store, $customer);
return $option;
}
/**
* Returns Store created by fixture.
*
* @return Store
*/
private function getFixtureStore(): Store
{
$repository = $this->objectManager->create(StoreRepositoryInterface::class);
$store = $repository->get('default');
return $store;
}
/**
* Returns Customer created by fixture.
*
* @return Customer
*/
private function getFixtureCustomer(): Customer
{
$repository = $this->objectManager->create(CustomerRepositoryInterface::class);
$customerData = $repository->getById(1);
$customer = $this->objectManager->create(Customer::class);
$customer->updateData($customerData);
return $customer;
}
}