Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 34 additions & 24 deletions Setup/Patch/Data/CreateStatusAuthorized.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,18 @@
namespace Adyen\Payment\Setup\Patch\Data;

use Adyen\Payment\Helper\DataPatch;
use Magento\Framework\Exception\AlreadyExistsException;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\App\Config\ReinitableConfigInterface;
use Magento\Framework\App\Config\Storage\WriterInterface;
use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\StatusFactory;
use Magento\Sales\Model\ResourceModel\Order\StatusFactory as StatusResourceFactory;
use Magento\Sales\Model\ResourceModel\Order\Status as StatusResource;

class CreateStatusAuthorized implements DataPatchInterface
{
private ModuleDataSetupInterface $moduleDataSetup;
private WriterInterface $configWriter;
private ReinitableConfigInterface $reinitableConfig;
private DataPatch $dataPatchHelper;
private StatusFactory $statusFactory;
private StatusResourceFactory $statusResourceFactory;

const ADYEN_AUTHORIZED_STATUS = 'adyen_authorized';
const ADYEN_AUTHORIZED_STATUS_LABEL = 'Authorized';
Expand All @@ -38,38 +32,53 @@ public function __construct(
ModuleDataSetupInterface $moduleDataSetup,
WriterInterface $configWriter,
ReinitableConfigInterface $reinitableConfig,
DataPatch $dataPatchHelper,
StatusFactory $statusFactory,
StatusResourceFactory $statusResourceFactory
DataPatch $dataPatchHelper
) {
$this->moduleDataSetup = $moduleDataSetup;
$this->configWriter = $configWriter;
$this->reinitableConfig = $reinitableConfig;
$this->dataPatchHelper = $dataPatchHelper;
$this->statusFactory = $statusFactory;
$this->statusResourceFactory = $statusResourceFactory;
}

public function apply()
{
/** @var StatusResource $statusResource */
$statusResource = $this->statusResourceFactory->create();
$setup = $this->moduleDataSetup;
$setup->getConnection()->startSetup();

$status = $this->statusFactory->create();
$status->setData([
'status' => self::ADYEN_AUTHORIZED_STATUS,
'label' => self::ADYEN_AUTHORIZED_STATUS_LABEL,
]);
$salesOrderStatusTable = $setup->getTable('sales_order_status');
$selectStatus = $setup->getConnection()->select()
->from($salesOrderStatusTable)
->where(
'status = ?',
self::ADYEN_AUTHORIZED_STATUS
);

try {
$statusResource->save($status);
} catch (AlreadyExistsException $exception) {
return;
$salesOrderStatusRows = $setup->getConnection()->fetchRow($selectStatus);
if (empty($salesOrderStatusRows)) {
$setup->getConnection()->insert($salesOrderStatusTable, [
'status' => self::ADYEN_AUTHORIZED_STATUS,
'label' => self::ADYEN_AUTHORIZED_STATUS_LABEL
]);
}

$status->assignState(self::ADYEN_AUTHORIZED_STATUS, true, true);
$salesOrderStatusStateTable = $setup->getTable('sales_order_status_state');
$selectState = $setup->getConnection()->select()
->from($salesOrderStatusStateTable)
->where(
'status = ?',
self::ADYEN_AUTHORIZED_STATUS
);

$salesOrderStatusStateRows = $setup->getConnection()->fetchRow($selectState);
if (empty($salesOrderStatusStateRows)) {
$setup->getConnection()->insert($salesOrderStatusStateTable, [
'status' => self::ADYEN_AUTHORIZED_STATUS,
'state' => self::ADYEN_AUTHORIZED_STATUS,
'is_default' => 1,
'visible_on_front' => 1
]);
}

$setup = $this->moduleDataSetup;
$path = 'payment/adyen_abstract/payment_pre_authorized';

// Processing status was assigned mistakenly. It shouldn't be used on payment_pre_authorized.
Expand All @@ -85,6 +94,7 @@ public function apply()

// re-initialize otherwise it will cause errors
$this->reinitableConfig->reinit();
$setup->getConnection()->endSetup();
}

/**
Expand Down
11 changes: 10 additions & 1 deletion Test/Unit/Setup/Patch/Data/CreateStatusAuthorizedTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use Magento\Framework\App\Config\ReinitableConfigInterface;
use Magento\Framework\App\Config\Storage\WriterInterface;
use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\DB\Select;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Sales\Model\Order\Status;
use Magento\Sales\Model\Order\StatusFactory;
Expand Down Expand Up @@ -62,8 +63,16 @@ public function getVersion()
*/
public function getCreateStatusAuthorized(): CreateStatusAuthorized
{
$selectMock = $this->createMock(Select::class);
$selectMock->method('from')->willReturnSelf();
$selectMock->method('where')->willReturnSelf();

$connectionMock = $this->createMock(AdapterInterface::class);
$connectionMock->method('select')->willReturn($selectMock);
$connectionMock->method('fetchRow')->willReturn([]);

$moduleDataSetupMock = $this->createConfiguredMock(ModuleDataSetupInterface::class, [
'getConnection' => $this->createMock(AdapterInterface::class)
'getConnection' => $connectionMock
]);
$configWriteMock = $this->createMock(WriterInterface::class);
$reinitableConfigMock = $this->createMock(ReinitableConfigInterface::class);
Expand Down
Loading