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 @@ +