StandardTest::testRunExceptionProcess()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 49
Code Lines 31

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 31
nc 1
nop 0
dl 0
loc 49
rs 9.424
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2021-2025
6
 */
7
8
9
namespace Aimeos\Controller\Jobs\Order\Service\Transfer;
10
11
12
class StandardTest extends \PHPUnit\Framework\TestCase
13
{
14
	private $object;
15
16
17
	protected function setUp() : void
18
	{
19
		\Aimeos\MShop::cache( true );
20
21
		$context = \TestHelper::context();
22
		$aimeos = \TestHelper::getAimeos();
23
24
		$this->object = new \Aimeos\Controller\Jobs\Order\Service\Transfer\Standard( $context, $aimeos );
25
	}
26
27
28
	protected function tearDown() : void
29
	{
30
		\Aimeos\MShop::cache( false );
31
		unset( $this->object );
32
	}
33
34
35
	public function testGetName()
36
	{
37
		$this->assertEquals( 'Transfers money to vendors', $this->object->getName() );
38
	}
39
40
41
	public function testGetDescription()
42
	{
43
		$text = 'Transfers the price of ordered products to the vendors incl. commission handling';
44
		$this->assertEquals( $text, $this->object->getDescription() );
45
	}
46
47
48
	public function testRun()
49
	{
50
		$context = \TestHelper::context();
51
		$aimeos = \TestHelper::getAimeos();
52
53
54
		$serviceManagerStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Service\\Manager\\Standard' )
55
			->onlyMethods( ['getProvider', 'iterate'] )
56
			->setConstructorArgs( [$context] )
57
			->getMock();
58
59
		$orderManagerStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Order\\Manager\\Standard' )
60
			->onlyMethods( ['save', 'iterate'] )
61
			->setConstructorArgs( [$context] )
62
			->getMock();
63
64
		\Aimeos\MShop::inject( '\\Aimeos\\MShop\\Service\\Manager\\Standard', $serviceManagerStub );
65
		\Aimeos\MShop::inject( '\\Aimeos\\MShop\\Order\\Manager\\Standard', $orderManagerStub );
66
67
68
		$serviceItem = $serviceManagerStub->create()->setType( '' );
69
		$orderItem = $orderManagerStub->create();
70
71
		$serviceProviderStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Service\\Provider\\Payment\\PrePay' )
72
			->onlyMethods( ['isImplemented', 'transfer'] )
73
			->setConstructorArgs( [$context, $serviceItem] )
74
			->getMock();
75
76
77
		$serviceManagerStub->expects( $this->exactly( 2 ) )->method( 'iterate' )
78
			->willReturn( map( [$serviceItem] ), null );
79
80
		$serviceManagerStub->expects( $this->once() )->method( 'getProvider' )
81
			->willReturn( $serviceProviderStub );
82
83
		$orderManagerStub->expects( $this->exactly( 2 ) )->method( 'iterate' )
84
			->willReturn( map( [$orderItem] ), null );
85
86
		$serviceProviderStub->expects( $this->once() )->method( 'isImplemented' )
87
			->willReturn( true );
88
89
		$serviceProviderStub->expects( $this->once() )->method( 'transfer' );
90
91
92
		$object = new \Aimeos\Controller\Jobs\Order\Service\Transfer\Standard( $context, $aimeos );
93
		$object->run();
94
	}
95
96
97
	public function testRunExceptionProcess()
98
	{
99
		$context = \TestHelper::context();
100
		$aimeos = \TestHelper::getAimeos();
101
102
103
		$orderManagerStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Order\\Manager\\Standard' )
104
			->onlyMethods( ['save', 'iterate'] )
105
			->setConstructorArgs( [$context] )
106
			->getMock();
107
108
		$serviceManagerStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Service\\Manager\\Standard' )
109
			->onlyMethods( ['getProvider', 'iterate'] )
110
			->setConstructorArgs( [$context] )
111
			->getMock();
112
113
		\Aimeos\MShop::inject( '\\Aimeos\\MShop\\Service\\Manager\\Standard', $serviceManagerStub );
114
		\Aimeos\MShop::inject( '\\Aimeos\\MShop\\Order\\Manager\\Standard', $orderManagerStub );
115
116
117
		$serviceItem = $serviceManagerStub->create()->setType( '' );
118
		$orderItem = $orderManagerStub->create();
119
120
		$serviceProviderStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Service\\Provider\\Payment\\PrePay' )
121
			->onlyMethods( ['isImplemented', 'transfer'] )
122
			->setConstructorArgs( [$context, $serviceItem] )
123
			->getMock();
124
125
126
		$serviceManagerStub->expects( $this->exactly( 2 ) )->method( 'iterate' )
127
			->willReturn( map( [$serviceItem] ), null );
128
129
		$serviceManagerStub->expects( $this->once() )->method( 'getProvider' )
130
			->willReturn( $serviceProviderStub );
131
132
		$orderManagerStub->expects( $this->exactly( 2 ) )->method( 'iterate' )
133
			->willReturn( map( [$orderItem] ), null );
134
135
		$serviceProviderStub->expects( $this->once() )->method( 'isImplemented' )
136
			->willReturn( true );
137
138
		$serviceProviderStub->expects( $this->once() )->method( 'transfer' )
139
			->will( $this->throwException( new \Aimeos\MShop\Service\Exception( 'test oder service payment: transfer' ) ) );
140
141
		$orderManagerStub->expects( $this->never() )->method( 'save' );
142
143
144
		$object = new \Aimeos\Controller\Jobs\Order\Service\Transfer\Standard( $context, $aimeos );
145
		$object->run();
146
	}
147
148
149
	public function testRunExceptionProvider()
150
	{
151
		$context = \TestHelper::context();
152
		$aimeos = \TestHelper::getAimeos();
153
154
155
		$orderManagerStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Order\\Manager\\Standard' )
156
			->onlyMethods( ['save', 'iterate'] )
157
			->setConstructorArgs( [$context] )
158
			->getMock();
159
160
		$serviceManagerStub = $this->getMockBuilder( '\\Aimeos\\MShop\\Service\\Manager\\Standard' )
161
			->onlyMethods( ['getProvider', 'iterate'] )
162
			->setConstructorArgs( [$context] )
163
			->getMock();
164
165
		\Aimeos\MShop::inject( '\\Aimeos\\MShop\\Service\\Manager\\Standard', $serviceManagerStub );
166
		\Aimeos\MShop::inject( '\\Aimeos\\MShop\\Order\\Manager\\Standard', $orderManagerStub );
167
168
169
		$serviceItem = $serviceManagerStub->create()->setType( '' );
170
171
		$serviceManagerStub->expects( $this->exactly( 2 ) )->method( 'iterate' )
172
			->willReturn( map( [$serviceItem] ), null );
173
174
		$serviceManagerStub->expects( $this->once() )->method( 'getProvider' )
175
			->will( $this->throwException( new \Aimeos\MShop\Service\Exception( 'test service delivery process: getProvider' ) ) );
176
177
		$orderManagerStub->expects( $this->never() )->method( 'iterate' );
178
179
180
		$object = new \Aimeos\Controller\Jobs\Order\Service\Transfer\Standard( $context, $aimeos );
181
		$object->run();
182
	}
183
}
184