From eb4397daa560c7e470e644abef45cb8329df83f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20L=C3=B8vgaard?= Date: Mon, 17 Jun 2024 13:22:21 +0200 Subject: [PATCH] Add helper method for resolving webhook data classes --- src/Consumer/WebhookConsumer.php | 17 +++++++++++++++++ tests/Consumer/WebhookConsumerTest.php | 21 +++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tests/Consumer/WebhookConsumerTest.php diff --git a/src/Consumer/WebhookConsumer.php b/src/Consumer/WebhookConsumer.php index aedff6d..33bb332 100644 --- a/src/Consumer/WebhookConsumer.php +++ b/src/Consumer/WebhookConsumer.php @@ -5,6 +5,8 @@ namespace Setono\PeakWMS\Consumer; use CuyZ\Valinor\MapperBuilder; +use Setono\PeakWMS\DataTransferObject\Webhook\Name; +use Setono\PeakWMS\DataTransferObject\Webhook\WebhookDataStockAdjust; final class WebhookConsumer implements WebhookConsumerInterface { @@ -36,4 +38,19 @@ public function getMapperBuilder(): MapperBuilder return $this->mapperBuilder; } + + /** + * @return class-string + */ + public static function convertNameToDataClass(Name|int $name): string + { + if (is_int($name)) { + $name = Name::from($name); + } + + return match ($name) { + Name::StockAdjust => WebhookDataStockAdjust::class, + default => throw new \InvalidArgumentException(sprintf('The name "%d" is not supported', $name->value)), + }; + } } diff --git a/tests/Consumer/WebhookConsumerTest.php b/tests/Consumer/WebhookConsumerTest.php new file mode 100644 index 0000000..e793b49 --- /dev/null +++ b/tests/Consumer/WebhookConsumerTest.php @@ -0,0 +1,21 @@ +