| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace Webkul\BagistoApi\Tests\Unit\Services;
- use Mockery;
- use Tests\TestCase;
- use Webkul\BagistoApi\Dto\PaymentReplayInput;
- use Webkul\BagistoApi\Repositories\PaymentAttemptRepository;
- use Webkul\BagistoApi\Services\CartTokenService;
- use Webkul\BagistoApi\Services\PaymentService;
- use Webkul\Checkout\Repositories\CartRepository;
- use Webkul\Sales\Models\Order;
- use Webkul\Sales\Repositories\InvoiceRepository;
- use Webkul\Sales\Repositories\OrderRepository;
- use Webkul\Sales\Repositories\OrderTransactionRepository;
- class PaymentServiceP1Test extends TestCase
- {
- protected function tearDown(): void
- {
- Mockery::close();
- parent::tearDown();
- }
- public function test_replay_reschedules_reconciliation(): void
- {
- $order = new class
- {
- public int $id = 42;
- public ?int $customer_id = null;
- public string $status = Order::STATUS_PENDING;
- public float $grand_total = 10.5;
- public string $order_currency_code = 'USD';
- public string $cart_currency_code = 'USD';
- public object $payment;
- public function __construct()
- {
- $this->payment = new class
- {
- public string $method = 'paypal_smart_button';
- public array $additional = ['cart_id' => 5, 'express' => true];
- };
- }
- public function fresh(): static
- {
- return $this;
- }
- };
- $orderRepository = Mockery::mock(OrderRepository::class);
- $orderRepository->shouldReceive('find')->once()->with(42)->andReturn($order);
- $service = Mockery::mock(PaymentService::class, [
- $orderRepository,
- Mockery::mock(CartRepository::class),
- Mockery::mock(CartTokenService::class),
- Mockery::mock(InvoiceRepository::class),
- Mockery::mock(OrderTransactionRepository::class),
- Mockery::mock(PaymentAttemptRepository::class),
- ])->makePartial()->shouldAllowMockingProtectedMethods();
- $service->shouldReceive('createGatewayOrderForOrder')->once()->with($order)->andReturn('GW-NEW-1');
- $service->shouldReceive('writeGatewayOrderId')->once()->with($order, 'GW-NEW-1');
- $service->shouldReceive('recordAttempt')->once();
- $service->shouldReceive('scheduleReconciliation')->once()->with($order);
- $input = new PaymentReplayInput;
- $input->orderId = 42;
- /** @var PaymentService $service */
- $result = $service->replay($input, null);
- $this->assertSame('GW-NEW-1', $result['gatewayOrderId']);
- $this->assertSame($order, $result['order']);
- }
- }
|