Skip to content

Commit 77fbd3c

Browse files
committed
Provider with Setono original PickUpPointCode
1 parent 5870191 commit 77fbd3c

File tree

7 files changed

+24
-162
lines changed

7 files changed

+24
-162
lines changed

composer.json

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"require": {
1515
"php": "^8.0",
1616
"bitbag/shipping-export-plugin": "^3.0",
17-
"setono/sylius-pickup-point-plugin": "dev-point-interface",
17+
"setono/sylius-pickup-point-plugin": "^1.1",
1818
"sylius/sylius": "^1.11",
1919
"winzou/tnt-express": "^1.1.1"
2020
},
@@ -85,11 +85,5 @@
8585
"post-create-project-cmd": [
8686
"php bin/create_node_symlink.php"
8787
]
88-
},
89-
"repositories": [
90-
{
91-
"type": "vcs",
92-
"url": "https://github.com/StudioWaaz/SyliusPickupPointPlugin.git"
93-
}
94-
]
88+
}
9589
}

spec/Provider/TntProviderSpec.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
use Waaz\SyliusTntPlugin\Provider\TntProvider;
1010
use Sylius\Component\Core\Model\OrderInterface;
1111
use Sylius\Component\Core\Model\AddressInterface;
12-
use Waaz\SyliusTntPlugin\Model\TntPickupPointCode;
1312
use Setono\SyliusPickupPointPlugin\Model\PickupPoint;
13+
use Setono\SyliusPickupPointPlugin\Model\PickupPointCode;
1414
use Setono\SyliusPickupPointPlugin\Provider\ProviderInterface;
1515

1616
class TntProviderSpec extends ObjectBehavior
@@ -68,13 +68,11 @@ public function it_finds_pickup_by_code(
6868
$client->getDropOffPoints('64200', 'Biarritz')->willReturn([
6969
$dropOffPoint
7070
]);
71-
$pickupPointCode = new TntPickupPointCode('test', 'tnt', 'FR');
72-
$pickupPointCode->setZipcode('64200');
73-
$pickupPointCode->setCity('Biarritz');
71+
$pickupPointCode = new PickupPointCode('test###64200###Biarritz', 'tnt', 'FR');
7472
$point = $this->findPickupPoint($pickupPointCode);
7573
$point->shouldReturnAnInstanceOf(PickupPoint::class);
76-
$point->getCode()->shouldReturnAnInstanceOf(TntPickupPointCode::class);
77-
$point->getCode()->getIdPart()->shouldReturn('test');
74+
$point->getCode()->shouldReturnAnInstanceOf(PickupPointCode::class);
75+
$point->getCode()->getIdPart()->shouldReturn('test###64200###Biarritz');
7876
$point->getCode()->getProviderPart()->shouldReturn('tnt');
7977
$point->getCode()->getCountryPart()->shouldReturn('FR');
8078
}

src/Factory/ReceiverFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
use BitBag\SyliusShippingExportPlugin\Entity\ShippingGatewayInterface;
88
use Setono\SyliusPickupPointPlugin\Model\PickupPointAwareInterface;
9+
use Setono\SyliusPickupPointPlugin\Model\PickupPointCode;
910
use Sylius\Component\Core\Model\AddressInterface;
1011
use Sylius\Component\Core\Model\CustomerInterface;
1112
use Sylius\Component\Core\Model\OrderInterface;
1213
use Sylius\Component\Core\Model\ShipmentInterface;
1314
use TNTExpress\Model\Receiver;
14-
use Waaz\SyliusTntPlugin\Model\TntPickupPointCode;
1515

1616
class ReceiverFactory implements ReceiverFactoryInterface
1717
{
@@ -41,7 +41,7 @@ public function createNew(ShippingGatewayInterface $shippingGateway, ShipmentInt
4141
if ($shipment instanceof PickupPointAwareInterface && $shipment->hasPickupPointId()) {
4242
/** @var string $pointId */
4343
$pointId = $shipment->getPickupPointId();
44-
$tntCode = TntPickupPointCode::createFromString($pointId);
44+
$tntCode = PickupPointCode::createFromString($pointId);
4545
$receiver->setType('DROPOFFPOINT')
4646
->setTypeId($tntCode->getIdPart())
4747
;

src/Model/TntPickupPointCode.php

Lines changed: 0 additions & 116 deletions
This file was deleted.

src/Model/TntPickupPointCodeInterface.php

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/Provider/TntProvider.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
use Setono\SyliusPickupPointPlugin\Exception\TimeoutException;
88
use Setono\SyliusPickupPointPlugin\Model\PickupPoint;
9-
use Setono\SyliusPickupPointPlugin\Model\PickupPointCodeInterface;
9+
use Setono\SyliusPickupPointPlugin\Model\PickupPointCode;
1010
use Setono\SyliusPickupPointPlugin\Model\PickupPointInterface;
1111
use Setono\SyliusPickupPointPlugin\Provider\Provider;
1212
use Sylius\Component\Core\Model\OrderInterface;
1313
use TNTExpress\Client\TNTClientInterface;
1414
use TNTExpress\Exception\ClientException;
1515
use TNTExpress\Model\DropOffPoint;
16-
use Waaz\SyliusTntPlugin\Model\TntPickupPointCode;
1716
use Webmozart\Assert\Assert;
1817

1918
final class TntProvider extends Provider
@@ -47,20 +46,17 @@ public function findPickupPoints(OrderInterface $order): iterable
4746
}
4847
}
4948

50-
public function findPickupPoint(PickupPointCodeInterface $code): ?PickupPointInterface
49+
public function findPickupPoint(PickupPointCode $code): ?PickupPointInterface
5150
{
52-
Assert::isInstanceOf($code, TntPickupPointCode::class);
53-
54-
$zipcode = $code->getZipCodePart();
55-
Assert::string($zipcode);
56-
57-
$city = $code->getCityPart();
58-
Assert::string($city);
51+
$pickupId = $code->getIdPart();
52+
$data = \explode('###', $pickupId);
53+
Assert::count($data, 3, 'TNT Pickup ID is not correct.');
54+
[$xettCode, $zipcode, $city] = $data;
5955

6056
$result = $this->client->getDropOffPoints($zipcode, $city);
6157

6258
foreach ($result as $item) {
63-
if ($item->getXETTCode() === $code->getIdPart()) {
59+
if ($item->getXETTCode() === $xettCode) {
6460
return $this->transform($item);
6561
}
6662
}
@@ -78,10 +74,14 @@ private function transform(DropOffPoint $dropOffPoint): PickupPoint
7874
$countryCode = 'FR'; // TNT only operates in France
7975

8076
$pickupPoint = new PickupPoint();
77+
$zipcode = $dropOffPoint->getZipCode();
78+
Assert::notNull($zipcode);
79+
80+
$city = $dropOffPoint->getCity();
81+
Assert::notNull($city);
8182

82-
$pickupPointCode = new TntPickupPointCode($dropOffPoint->getXETTCode(), $this->getCode(), $countryCode);
83-
$pickupPointCode->setZipcode((string) $dropOffPoint->getZipCode());
84-
$pickupPointCode->setCity((string) $dropOffPoint->getCity());
83+
$pickupId = (string) $dropOffPoint->getXETTCode() . '###' . $zipcode . '###' . $city;
84+
$pickupPointCode = new PickupPointCode($pickupId, $this->getCode(), $countryCode);
8585

8686
$pickupPoint->setCode($pickupPointCode);
8787
$pickupPoint->setName((string) $dropOffPoint->getName());

tests/Behat/Page/Shop/Checkout/AddressPage.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ public function selectBillingPostcode(string $postcode): void
3030

3131
public function getAvailableBillingCities(): array
3232
{
33-
$this->waitForOption(3, 'billing_city_select');
33+
$this->waitForOption(5, 'billing_city_select');
3434
return $this->getOptionsFromSelect($this->getElement('billing_city_select'));
3535
}
3636

3737
public function selectBillingCity(string $city): void
3838
{
39-
$this->waitForOption(3, 'billing_city_select');
39+
$this->waitForOption(5, 'billing_city_select');
4040
$this->getElement('billing_city_select')->selectOption($city);
4141
}
4242

0 commit comments

Comments
 (0)