150 lines
4.4 KiB
PHP
150 lines
4.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace KupShop\UserAddressesBundle\Tests;
|
|
|
|
use KupShop\DevelopmentBundle\Util\Tests\CartTestTrait;
|
|
use KupShop\UserAddressesBundle\Util\UserAddressesCartUtil;
|
|
|
|
class UserAddressesTest extends \DatabaseTestCase
|
|
{
|
|
use CartTestTrait;
|
|
|
|
/**
|
|
* @dataProvider addressSelectionDataProvider
|
|
*/
|
|
public function testCustomAddressToCart(array $delivery, bool $expectedChange, bool $expectedNew): void
|
|
{
|
|
$this->loginUser(2);
|
|
$cart = $this->prepareCart();
|
|
$this->insertProduct(3);
|
|
$this->setDeliveryType(2);
|
|
|
|
$lastIdBefore = $this->getLastId();
|
|
|
|
$cart->fetchAddresses();
|
|
$cart->setData('new_address', $delivery);
|
|
$cart->save();
|
|
|
|
$order = $this->submitOrder();
|
|
unset($delivery['save']);
|
|
|
|
if ($expectedChange) {
|
|
if ($expectedNew) {
|
|
$this->assertGreaterThan($lastIdBefore, $this->getLastId(), 'Adresa se měla uložit');
|
|
}
|
|
|
|
$this->assertEquals(false, $order->hasSameAddress(), 'Doručovací adresa se měla změnit');
|
|
$this->assertEquals($delivery, $this->getAddressArrayFromOrder($order), 'Doručovací adresa se měla změnit');
|
|
} else {
|
|
$this->assertEquals(true, $order->hasSameAddress(), 'Doručovací adresa se neměla změnit');
|
|
}
|
|
}
|
|
|
|
public function addressSelectionDataProvider(): array
|
|
{
|
|
return [
|
|
[['name' => '',
|
|
'surname' => '',
|
|
'phone' => '',
|
|
'street' => '',
|
|
'city' => '',
|
|
'zip' => '',
|
|
'country' => 'AT',
|
|
'firm' => '',
|
|
'save' => ''],
|
|
false,
|
|
false],
|
|
[['name' => 'Ondřej',
|
|
'surname' => 'Kořínek',
|
|
'phone' => '+420789632145',
|
|
'street' => 'Pod koželuhy 100',
|
|
'city' => 'Jičín',
|
|
'zip' => '50601',
|
|
'country' => 'CZ',
|
|
'firm' => '',
|
|
'save' => '0'],
|
|
true,
|
|
false],
|
|
[['name' => 'Ondřej',
|
|
'surname' => 'Kořínek',
|
|
'phone' => '+420789632145',
|
|
'street' => 'Pod koželuhy 100',
|
|
'city' => 'Jičín',
|
|
'zip' => '50601',
|
|
'country' => 'CZ',
|
|
'firm' => '',
|
|
'save' => '1'],
|
|
true,
|
|
true],
|
|
];
|
|
}
|
|
|
|
public function testAddressToCart(): void
|
|
{
|
|
$util = $this->get(UserAddressesCartUtil::class);
|
|
|
|
$cart = $this->prepareCart();
|
|
$this->insertProduct(3);
|
|
$this->setDeliveryType(2);
|
|
$cart->fetchAddresses();
|
|
$util->saveAddressToCart(1);
|
|
|
|
$expected = [
|
|
'name' => 'Lukáš',
|
|
'surname' => 'Trkan',
|
|
'firm' => 'wpj s.r.o.',
|
|
'street' => 'Lánovská 1475',
|
|
'city' => 'Vrchlabí',
|
|
'zip' => '54301',
|
|
'country' => 'CZ',
|
|
'phone' => '+420789456123',
|
|
];
|
|
|
|
$cartExtraFields = [
|
|
'custom_address' => '',
|
|
'state' => '',
|
|
'ico' => '',
|
|
'dic' => '',
|
|
'email' => '',
|
|
'copy_email' => '',
|
|
'currency' => 'CZK',
|
|
'id' => 1,
|
|
];
|
|
|
|
$this->assertEquals($expected + $cartExtraFields, $cart->delivery, 'Doručovací adresa se měla změnit');
|
|
|
|
$order = $this->submitOrder();
|
|
|
|
$this->assertEquals($expected,
|
|
array_intersect_key($expected, $this->getAddressArrayFromOrder($order)),
|
|
'Doručovací adresa se měla změnit');
|
|
}
|
|
|
|
private function getLastId()
|
|
{
|
|
return sqlQueryBuilder()->select('id')->from('users_addresses')
|
|
->orderBy('id', 'DESC')->execute()->fetchOne();
|
|
}
|
|
|
|
private function getAddressArrayFromOrder($order): array
|
|
{
|
|
return [
|
|
'name' => $order->delivery_name,
|
|
'surname' => $order->delivery_surname,
|
|
'phone' => $order->delivery_phone,
|
|
'street' => $order->delivery_street,
|
|
'city' => $order->delivery_city,
|
|
'zip' => $order->delivery_zip,
|
|
'country' => $order->delivery_country,
|
|
'firm' => $order->delivery_firm,
|
|
];
|
|
}
|
|
|
|
public function getDataSet()
|
|
{
|
|
return $this->getJsonDataSetFromFile();
|
|
}
|
|
}
|