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(); } }