PluginProbe
Packeta / 2.0.9
Packeta v2.0.9
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / tests / Module / Order / PacketSynchronizerTest.php

PacketSynchronizerTest.php in Packeta 2.0.9, at tests/Module/Order/PacketSynchronizerTest.php

107 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare( strict_types=1 );
4
5 namespace Tests\Module\Order;
6
7 use Packetery\Core\Api\Soap\Client;
8 use Packetery\Core\Api\Soap\Response\PacketStatus;
9 use Packetery\Core\Entity\Order;
10 use Packetery\Core\Log\ILogger;
11 use Packetery\Module\Exception\InvalidPasswordException;
12 use Packetery\Module\Framework\WcAdapter;
13 use Packetery\Module\Options\OptionsProvider;
14 use Packetery\Module\Order\PacketSynchronizer;
15 use Packetery\Module\Order\Repository;
16 use Packetery\Module\Order\WcOrderActions;
17 use PHPUnit\Framework\MockObject\MockObject;
18 use PHPUnit\Framework\TestCase;
19 use Tests\Core\DummyFactory;
20
21 class PacketSynchronizerTest extends TestCase {
22
23 private PacketSynchronizer $packetSynchronizer;
24 private Client|MockObject $client;
25
26 /**
27 * @var (object&MockObject)|OptionsProvider|(OptionsProvider&object&MockObject)|(OptionsProvider&MockObject)|MockObject
28 */
29 private MockObject|OptionsProvider $provider;
30
31 private function createPacketSynchronize(): void {
32 $this->client = $this->createMock( Client::class );
33 $logger = $this->createMock( ILogger::class );
34 $this->provider = $this->createMock( OptionsProvider::class );
35 $orderRepository = $this->createMock( Repository::class );
36 $wcOrderActions = $this->createMock( WcOrderActions::class );
37 $wcAdapter = $this->createMock( WcAdapter::class );
38
39 $this->packetSynchronizer = new PacketSynchronizer(
40 $this->client,
41 $logger,
42 $this->provider,
43 $orderRepository,
44 $wcOrderActions,
45 $wcAdapter,
46 );
47 }
48
49 public function testSuccessfulSynchronization(): void {
50 $this->createPacketSynchronize();
51 $storedUntil = new \DateTimeImmutable( 'now' );
52 $packetStatus = 'some packet status';
53 $order = DummyFactory::createOrderCzPp();
54 $order->setNumber( 'some number' );
55 $order->setPacketId( 'some packet id' );
56
57 $response = $this->createMock( PacketStatus::class );
58 $response->method( 'hasFault' )->willReturn( false );
59 $response->method( 'getStoredUntil' )->willReturn( $storedUntil );
60 $response->method( 'getCodeText' )->willReturn( $packetStatus );
61
62 $this->client->method( 'packetStatus' )->willReturn( $response );
63
64 $this->packetSynchronizer->syncStatus( $order );
65
66 $this->assertSame( $storedUntil, $order->getStoredUntil() );
67 $this->assertSame( $packetStatus, $order->getPacketStatus() );
68 }
69
70 public function testSynchronizationHasFault(): void {
71 $this->createPacketSynchronize();
72 $order = $this->createMock( Order::class );
73 $order->method( 'getPacketId' )->willReturn( '123456' );
74 $order->method( 'getNumber' )->willReturn( '123456' );
75
76 $response = $this->createMock( PacketStatus::class );
77 $response->method( 'hasFault' )->willReturn( true );
78 $response->method( 'getFaultString' )->willReturn( 'Error message' );
79 $response->expects( $this->never() )->method( 'getStoredUntil' );
80 $response->expects( $this->never() )->method( 'getCodeText' );
81
82 $this->client->method( 'packetStatus' )->willReturn( $response );
83
84 $this->packetSynchronizer->syncStatus( $order );
85
86 $this->assertTrue( true ); // No exceptions thrown.
87 }
88
89 public function testSynchronizationHasWrongPassword(): void {
90 $this->createPacketSynchronize();
91 $order = $this->createMock( Order::class );
92 $order->method( 'getPacketId' )->willReturn( '123456' );
93 $order->method( 'getNumber' )->willReturn( '123456' );
94
95 $response = $this->createMock( PacketStatus::class );
96 $response->method( 'hasFault' )->willReturn( true );
97 $response->method( 'hasWrongPassword' )->willReturn( true );
98 $response->expects( $this->never() )->method( 'getStoredUntil' );
99 $response->expects( $this->never() )->method( 'getCodeText' );
100
101 $this->client->method( 'packetStatus' )->willReturn( $response );
102
103 $this->expectException( InvalidPasswordException::class );
104 $this->packetSynchronizer->syncStatus( $order );
105 }
106 }
107