<?php
declare(strict_types=1);

namespace Autogedal\PayPo\Test\Unit\Plugin;

use Autogedal\PayPo\Model\PayPoContext;
use Autogedal\PayPo\Plugin\ApprovalResultPlugin;
use Magento\Framework\Controller\Result\Json;
use PHPUnit\Framework\TestCase;

class ApprovalResultPluginTest extends TestCase
{
    public function testErrorsClearSuccessAndOtherRequestsRemainUntouched(): void
    {
        $context = new PayPoContext();
        $plugin = new ApprovalResultPlugin($context);
        $result = $this->createMock(Json::class);
        self::assertSame($result, $plugin->afterSetData($result, $result, ['code' => '200']));
        self::assertFalse($context->hasApprovalSucceeded());

        $context->setApprovingOrder(true);
        $context->setApprovingOrderId(1);
        $plugin->afterSetData($result, $result, ['code' => '200']);
        self::assertTrue($context->hasApprovalSucceeded());
        $plugin->afterSetData($result, $result, ['error_message' => 'HTTP_BAD_REQUEST']);
        self::assertFalse($context->hasApprovalSucceeded());
        $context->setApprovingOrder(false);
        self::assertFalse($context->appliesToOrder(1));
        $context->setApprovalSucceeded(true);
        $context->setApprovingOrder(true);
        self::assertFalse($context->hasApprovalSucceeded());
    }
}
