Completed
Push — master ( 95e8d1...b686ff )
by Aimeos
02:04
created

CheckoutControllerTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Aimeos\ShopBundle\Tests\Controller;
4
5
use Symfony\Component\HttpFoundation\Response;
6
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
7
8
9
class CheckoutControllerTest extends WebTestCase
10
{
11
	protected function setUp()
12
	{
13
		\Aimeos\MShop::cache( false );
14
		\Aimeos\Controller\Frontend::cache( false );
15
	}
16
17
18
	public function testStandardNavbar()
19
	{
20
		$client = static::createClient(array(), array(
21
			'PHP_AUTH_USER' => 'UTC001',
22
			'PHP_AUTH_PW'   => 'unittest',
23
		) );
24
25
		$crawler = $client->request( 'GET', '/unittest/de/EUR/list' );
26
27
		$link = $crawler->filter( '.catalog-list-items .product a:contains("Unittest: Bundle")' )->link();
28
		$crawler = $client->click( $link );
29
30
		$form = $crawler->filter( '.catalog-detail .addbasket .btn-primary' )->form();
31
		$crawler = $client->submit( $form );
32
33
		$link = $crawler->filter( '.basket-standard .btn-action' )->link();
34
		$crawler = $client->click( $link );
35
36
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .current:contains("Adresse")' )->count() );
37
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .basket a' )->count() );
38
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .address a' )->count() );
39
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .delivery a' )->count() );
40
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .payment a' )->count() );
41
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .summary a' )->count() );
42
43
44
		$form = $crawler->filter( '.checkout-standard form' )->form();
45
		$form['ca_billingoption']->select( $crawler->filter( '.checkout-standard-address .item-address input' )->attr( 'value' ) );
46
		$crawler = $client->submit( $form );
47
48
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .basket a' )->count() );
49
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .address a' )->count() );
50
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .current:contains("Versand")' )->count() );
51
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .delivery a' )->count() );
52
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .payment a' )->count() );
53
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .summary a' )->count() );
54
55
56
		$form = $crawler->filter( '.checkout-standard form' )->form();
57
		$form['c_deliveryoption']->select( $crawler->filter( '.checkout-standard-delivery .item-service input' )->attr( 'value' ) );
58
		$crawler = $client->submit( $form );
59
60
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .basket a' )->count() );
61
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .address a' )->count() );
62
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .delivery a' )->count() );
63
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .current:contains("Zahlung")' )->count() );
64
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .payment a' )->count() );
65
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .summary a' )->count() );
66
67
68
		$form = $crawler->filter( '.checkout-standard form' )->form();
69
		$form['c_paymentoption']->select( $crawler->filter( '.checkout-standard-payment .item-service input' )->attr( 'value' ) );
70
		$crawler = $client->submit( $form );
71
72
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .basket a' )->count() );
73
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .address a' )->count() );
74
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .delivery a' )->count() );
75
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .payment a' )->count() );
76
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard .steps .current:contains("Übersicht")' )->count() );
77
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps .summary a' )->count() );
78
79
80
		$link = $crawler->filter( '.checkout-standard .steps .basket a' )->link();
81
		$crawler = $client->click( $link );
82
		$this->assertEquals( 0, $crawler->filter( '.checkout-standard .steps' )->count() );
83
	}
84
85
86
	public function testStandardNextBack()
87
	{
88
		$client = static::createClient(array(), array(
89
			'PHP_AUTH_USER' => 'UTC001',
90
			'PHP_AUTH_PW'   => 'unittest',
91
		) );
92
93
		$crawler = $this->_goToSummary( $client );
94
95
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
96
97
98
		$link = $crawler->filter( '.checkout-standard .btn-back' )->link();
99
		$crawler = $client->click( $link );
100
101
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-payment' )->count() );
102
103
104
		$link = $crawler->filter( '.checkout-standard .btn-back' )->link();
105
		$crawler = $client->click( $link );
106
107
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-delivery' )->count() );
108
109
110
		$link = $crawler->filter( '.checkout-standard .btn-back' )->link();
111
		$crawler = $client->click( $link );
112
113
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-address' )->count() );
114
115
116
		$form = $crawler->filter( '.checkout-standard .btn-action' )->form();
117
		$crawler = $client->submit( $form );
118
119
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-delivery' )->count() );
120
121
122
		$form = $crawler->filter( '.checkout-standard .btn-action' )->form();
123
		$crawler = $client->submit( $form );
124
125
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-payment' )->count() );
126
127
128
		$form = $crawler->filter( '.checkout-standard .btn-action' )->form();
129
		$crawler = $client->submit( $form );
130
131
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
132
	}
133
134
135
	public function testStandardAddressPayment()
136
	{
137
		$client = static::createClient(array(), array(
138
			'PHP_AUTH_USER' => 'UTC001',
139
			'PHP_AUTH_PW'   => 'unittest',
140
		) );
141
142
		$crawler = $this->_goToSummary( $client );
143
144
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
145
146
147
		$link = $crawler->filter( '.checkout-standard .common-summary-address .payment .modify' )->link();
148
		$crawler = $client->click( $link );
149
150
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-address' )->count() );
151
	}
152
153
154
	public function testStandardAddressDelivery()
155
	{
156
		$client = static::createClient(array(), array(
157
			'PHP_AUTH_USER' => 'UTC001',
158
			'PHP_AUTH_PW'   => 'unittest',
159
		) );
160
161
		$crawler = $this->_goToSummary( $client );
162
163
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
164
165
166
		$link = $crawler->filter( '.checkout-standard .common-summary-address .delivery .modify' )->link();
167
		$crawler = $client->click( $link );
168
169
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-address' )->count() );
170
	}
171
172
173
	public function testStandardDelivery()
174
	{
175
		$client = static::createClient(array(), array(
176
			'PHP_AUTH_USER' => 'UTC001',
177
			'PHP_AUTH_PW'   => 'unittest',
178
		) );
179
180
		$crawler = $this->_goToSummary( $client );
181
182
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
183
184
185
		$link = $crawler->filter( '.checkout-standard .common-summary-service .delivery .modify' )->link();
186
		$crawler = $client->click( $link );
187
188
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-delivery' )->count() );
189
	}
190
191
192
	public function testStandardPayment()
193
	{
194
		$client = static::createClient(array(), array(
195
			'PHP_AUTH_USER' => 'UTC001',
196
			'PHP_AUTH_PW'   => 'unittest',
197
		) );
198
199
		$crawler = $this->_goToSummary( $client );
200
201
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
202
203
204
		$link = $crawler->filter( '.checkout-standard .common-summary-service .payment .modify' )->link();
205
		$crawler = $client->click( $link );
206
207
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-payment' )->count() );
208
	}
209
210
211
	public function testStandardBasket()
212
	{
213
		$client = static::createClient(array(), array(
214
			'PHP_AUTH_USER' => 'UTC001',
215
			'PHP_AUTH_PW'   => 'unittest',
216
		) );
217
218
		$crawler = $this->_goToSummary( $client );
219
220
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
221
222
223
		$link = $crawler->filter( '.checkout-standard .common-summary-detail .modify' )->link();
224
		$crawler = $client->click( $link );
225
226
		$this->assertEquals( 1, $crawler->filter( '.basket-standard' )->count() );
227
	}
228
229
230
	public function testStandardOrder()
231
	{
232
		$client = static::createClient(array(), array(
233
			'PHP_AUTH_USER' => 'UTC001',
234
			'PHP_AUTH_PW'   => 'unittest',
235
		) );
236
237
		$crawler = $client->request( 'GET', '/unittest/de/EUR/list' );
238
239
		$link = $crawler->filter( '.catalog-list-items .product a:contains("Unittest: Bundle")' )->link();
240
		$crawler = $client->click( $link );
241
242
		$form = $crawler->filter( '.catalog-detail .addbasket .btn-primary' )->form();
243
		$crawler = $client->submit( $form );
244
245
		$link = $crawler->filter( '.basket-standard .btn-action' )->link();
246
		$crawler = $client->click( $link );
247
248
		$form = $crawler->filter( '.checkout-standard form' )->form();
249
		$form['ca_billingoption']->select( $crawler->filter( '.checkout-standard-address .item-address input' )->attr( 'value' ) );
250
		$crawler = $client->submit( $form );
251
252
		$form = $crawler->filter( '.checkout-standard form' )->form();
253
		$form['c_deliveryoption']->select( $crawler->filter( '.checkout-standard-delivery .item-service input' )->attr( 'value' ) );
254
		$crawler = $client->submit( $form );
255
256
		$form = $crawler->filter( '.checkout-standard form' )->form();
257
		$payId = $crawler->filter( '.checkout-standard-payment .item-service' )->eq( 1 )->filter( 'input' )->attr( 'value' );
258
		$form['c_paymentoption']->select( $payId );
259
		$form['c_payment[' . $payId . '][directdebit.accountowner]'] = 'test user';
260
		$form['c_payment[' . $payId . '][directdebit.accountno]'] = '12345';
261
		$form['c_payment[' . $payId . '][directdebit.bankcode]'] = '67890';
262
		$form['c_payment[' . $payId . '][directdebit.bankname]'] = 'test bank';
263
		$crawler = $client->submit( $form );
0 ignored issues
show
Documentation introduced by
$form is of type array<string,string>, but the function expects a object<Symfony\Component\DomCrawler\Form>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
264
265
		$this->assertEquals( 1, $crawler->filter( '.checkout-standard-summary' )->count() );
266
267
268
		// Test if T&C are not accepted
269
		$form = $crawler->filter( '.checkout-standard .btn-action' )->form();
270
		$crawler = $client->submit( $form );
271
272
		$form = $crawler->filter( '.checkout-standard .btn-action' )->form();
273
		$form['cs_option_terms_value']->tick();
274
		$crawler = $client->submit( $form );
275
276
		$form = $crawler->filter( '.checkout-standard .btn-action' )->form();
277
		$crawler = $client->submit( $form );
278
279
		$this->assertEquals( 1, $crawler->filter( '.checkout-confirm' )->count() );
280
	}
281
282
283
	public function testUpdate()
284
	{
285
		$client = static::createClient();
286
287
		$client->request( 'GET', '/unittest/de/EUR/update' );
288
289
		$this->assertEquals( 200, $client->getResponse()->getStatusCode() );
290
	}
291
292
293
	public function testConfirmComponent()
294
	{
295
		$client = static::createClient();
296
		$client->request( 'GET', '/unittest/de/EUR/test/checkoutconfirmcomponent' );
297
298
		$this->assertEquals( 200, $client->getResponse()->getStatusCode() );
299
		$this->assertContains( 'aimeos checkout-confirm', $client->getResponse()->getContent() );
300
	}
301
302
303
	public function testStandardComponent()
304
	{
305
		$client = static::createClient();
306
		$client->request( 'GET', '/unittest/de/EUR/test/checkoutstandardcomponent' );
307
308
		$this->assertEquals( 200, $client->getResponse()->getStatusCode() );
309
		$this->assertContains( 'aimeos checkout-standard', $client->getResponse()->getContent() );
310
	}
311
312
313
	public function testUpdateComponent()
314
	{
315
		$client = static::createClient();
316
		$client->request( 'GET', '/unittest/de/EUR/test/checkoutupdatecomponent?code=unitpaymentcode' );
317
318
		$this->assertEquals( 200, $client->getResponse()->getStatusCode() );
319
	}
320
321
322
	/**
323
	 * Moves forward to the summary page
324
	 *
325
	 * @param \Symfony\Bundle\FrameworkBundle\Client $client HTTP test client
326
	 * @return \Symfony\Component\DomCrawler\Crawler Crawler HTTP crawler
327
	 */
328
	protected function _goToSummary( $client )
329
	{
330
		$crawler = $client->request( 'GET', '/unittest/de/EUR/list' );
331
332
		$link = $crawler->filter( '.catalog-list-items .product a:contains("Unittest: Bundle")' )->link();
333
		$crawler = $client->click( $link );
334
335
		$form = $crawler->filter( '.catalog-detail .addbasket .btn-primary' )->form();
336
		$crawler = $client->submit( $form );
337
338
		$link = $crawler->filter( '.basket-standard .btn-action' )->link();
339
		$crawler = $client->click( $link );
340
341
		$form = $crawler->filter( '.checkout-standard form' )->form();
342
		$form['ca_billingoption']->select( $crawler->filter( '.checkout-standard-address .item-address input' )->attr( 'value' ) );
343
		$crawler = $client->submit( $form );
344
345
		$form = $crawler->filter( '.checkout-standard form' )->form();
346
		$form['c_deliveryoption']->select( $crawler->filter( '.checkout-standard-delivery .item-service input' )->attr( 'value' ) );
347
		$crawler = $client->submit( $form );
348
349
		$form = $crawler->filter( '.checkout-standard form' )->form();
350
		$form['c_paymentoption']->select( $crawler->filter( '.checkout-standard-payment .item-service input' )->attr( 'value' ) );
351
		$crawler = $client->submit( $form );
352
353
		return $crawler;
354
	}
355
}
356