<?php

namespace Autogedal\TbiBank\Test\Unit;

use Autogedal\TbiBank\Model\ApprovalConfig;
use Autogedal\TbiBank\Plugin\PaymentInitialize;
use Magento\Framework\DataObject;
use PHPUnit\Framework\TestCase;
use TbiBank\FusionPay\Model\Payment\FusionPay;

class PaymentInitializeTest extends TestCase
{
    public function testPaymentInitializationAlwaysUsesTbiWaitingStatus(): void
    {
        $payment = $this->createMock(FusionPay::class);
        $state = new DataObject();
        $plugin = new PaymentInitialize();

        $result = $plugin->aroundInitialize($payment, function ($paymentAction, $stateObject) use ($state) {
            $this->assertSame('order', $paymentAction);
            $this->assertSame($state, $stateObject);
            $stateObject->setState('new')->setStatus('new');
            return 'initialized';
        }, 'order', $state);

        $this->assertSame('initialized', $result);
        $this->assertSame(ApprovalConfig::ORDER_STATE, $state->getState());
        $this->assertSame(ApprovalConfig::WAITING_STATUS, $state->getStatus());
        $this->assertFalse($state->getIsNotified());
    }
}
