From 5a2999cb2fe873ef8795934e39f73bb98fe191a3 Mon Sep 17 00:00:00 2001 From: Andy Summers <andrew.summers@wisc.edu> Date: Mon, 14 Aug 2017 13:55:34 -0500 Subject: [PATCH] Add PHP 7 type annotation to Product/Price classes --- .../services/cbs/price/MockPriceService.php | 2 +- .../wisc/services/cbs/price/PriceService.php | 4 +- .../services/cbs/price/SoapPriceService.php | 2 +- .../cbs/product/MockProductService.php | 4 +- .../edu/wisc/services/cbs/product/Product.php | 139 ++++++++---------- .../product/ProductInputParametersMapper.php | 2 +- .../services/cbs/product/ProductService.php | 4 +- .../cbs/product/SoapProductService.php | 4 +- .../ProductInputParametersMapperTest.php | 32 +++- 9 files changed, 98 insertions(+), 95 deletions(-) diff --git a/src/main/edu/wisc/services/cbs/price/MockPriceService.php b/src/main/edu/wisc/services/cbs/price/MockPriceService.php index 2047815..e15683e 100644 --- a/src/main/edu/wisc/services/cbs/price/MockPriceService.php +++ b/src/main/edu/wisc/services/cbs/price/MockPriceService.php @@ -29,7 +29,7 @@ class MockPriceService implements PriceService, MockService /** * {@inheritdoc} */ - public function updateProductPrice($sku, Money $price) + public function updateProductPrice(string $sku, Money $price): PriceServiceResponse { return $this->response; } diff --git a/src/main/edu/wisc/services/cbs/price/PriceService.php b/src/main/edu/wisc/services/cbs/price/PriceService.php index 59c65c2..9d06350 100644 --- a/src/main/edu/wisc/services/cbs/price/PriceService.php +++ b/src/main/edu/wisc/services/cbs/price/PriceService.php @@ -14,10 +14,10 @@ interface PriceService extends Service /** * Update the price for the given SKU. * - * @param $sku + * @param string $sku * @param Money $price * @return PriceServiceResponse */ - public function updateProductPrice($sku, Money $price); + public function updateProductPrice(string $sku, Money $price): PriceServiceResponse; } diff --git a/src/main/edu/wisc/services/cbs/price/SoapPriceService.php b/src/main/edu/wisc/services/cbs/price/SoapPriceService.php index 030c07f..fb54733 100644 --- a/src/main/edu/wisc/services/cbs/price/SoapPriceService.php +++ b/src/main/edu/wisc/services/cbs/price/SoapPriceService.php @@ -52,7 +52,7 @@ class SoapPriceService implements PriceService, SoapService /** * @inheritdoc */ - public function updateProductPrice($sku, Money $price) + public function updateProductPrice(string $sku, Money $price): PriceServiceResponse { $outputParameters = $this->soapClient->ITEM_PRICING( new InputParameters( diff --git a/src/main/edu/wisc/services/cbs/product/MockProductService.php b/src/main/edu/wisc/services/cbs/product/MockProductService.php index 07b43ac..f689b22 100755 --- a/src/main/edu/wisc/services/cbs/product/MockProductService.php +++ b/src/main/edu/wisc/services/cbs/product/MockProductService.php @@ -27,7 +27,7 @@ class MockProductService implements ProductService, MockService /** * {@inheritDoc} */ - public function createProduct(Product $product) + public function createProduct(Product $product): ProductServiceResponse { return $this->response; } @@ -35,7 +35,7 @@ class MockProductService implements ProductService, MockService /** * {@inheritDoc} */ - public function updateProduct(Product $product) + public function updateProduct(Product $product): ProductServiceResponse { return $this->response; } diff --git a/src/main/edu/wisc/services/cbs/product/Product.php b/src/main/edu/wisc/services/cbs/product/Product.php index ab32d59..31d2097 100755 --- a/src/main/edu/wisc/services/cbs/product/Product.php +++ b/src/main/edu/wisc/services/cbs/product/Product.php @@ -18,8 +18,8 @@ class Product /** @var string CBS value for MinMax inactive */ const MIN_MAX_INACTIVE = 'no'; - /** @var float Stock Keeping Unit, a unique product identifier */ - private $sku; + /** @var string Stock Keeping Unit, a unique product identifier */ + private $itemNumber; /** @var string name / short description */ private $name = ''; @@ -60,9 +60,6 @@ class Product /** @var string UPC (barcode) */ private $upc = ''; - /** @var string UDDS number */ - private $udds = ''; - /** @var int CBS Item Template */ private $cbsItemTemplate; @@ -91,26 +88,26 @@ class Product private $testMode; /** - * @return float + * @return string */ - public function getSku() + public function getItemNumber(): string { - return $this->sku; + return $this->itemNumber; } /** - * @param float $sku + * @param string $itemNumber * @return Product */ - public function setSku($sku) + public function setItemNumber(string $itemNumber): Product { - $this->sku = $sku; + $this->itemNumber = $itemNumber; return $this; } /** * @return string */ - public function getName() + public function getName(): string { return $this->name; } @@ -119,14 +116,14 @@ class Product * @param string $name * @return Product */ - public function setName($name) + public function setName(string $name): Product { $this->name = $name; return $this; } /** - * @return Money + * @return Money|null */ public function getCost() { @@ -137,7 +134,7 @@ class Product * @param Money $cost * @return Product */ - public function setCost(Money $cost = null) + public function setCost(Money $cost = null): Product { $this->cost = $cost; return $this; @@ -146,7 +143,7 @@ class Product /** * @return string */ - public function getCategory() + public function getCategory(): string { return $this->category; } @@ -155,7 +152,7 @@ class Product * @param string $category * @return Product */ - public function setCategory($category) + public function setCategory(string $category): Product { $this->category = $category; return $this; @@ -164,7 +161,7 @@ class Product /** * @return string */ - public function getManufacturer() + public function getManufacturer(): string { return $this->manufacturer; } @@ -173,7 +170,7 @@ class Product * @param string $manufacturer * @return Product */ - public function setManufacturer($manufacturer) + public function setManufacturer(string $manufacturer): Product { $this->manufacturer = $manufacturer; return $this; @@ -182,7 +179,7 @@ class Product /** * @return string */ - public function getManufacturerPartNumber() + public function getManufacturerPartNumber(): string { return $this->manufacturerPartNumber; } @@ -191,43 +188,43 @@ class Product * @param string $manufacturerPartNumber * @return Product */ - public function setManufacturerPartNumber($manufacturerPartNumber) + public function setManufacturerPartNumber(string $manufacturerPartNumber): Product { $this->manufacturerPartNumber = $manufacturerPartNumber; return $this; } /** - * @return string + * @return float */ - public function getMinQuantity() + public function getMinQuantity(): float { return $this->minQuantity; } /** - * @param string $minQuantity + * @param float $minQuantity * @return Product */ - public function setMinQuantity($minQuantity) + public function setMinQuantity(float $minQuantity): Product { $this->minQuantity = $minQuantity; return $this; } /** - * @return string + * @return float */ - public function getMaxQuantity() + public function getMaxQuantity(): float { return $this->maxQuantity; } /** - * @param string $maxQuantity + * @param float $maxQuantity * @return Product */ - public function setMaxQuantity($maxQuantity) + public function setMaxQuantity(float $maxQuantity): Product { $this->maxQuantity = $maxQuantity; return $this; @@ -236,7 +233,7 @@ class Product /** * @return string */ - public function getLifecycle() + public function getLifecycle(): string { return $this->lifecycle; } @@ -245,7 +242,7 @@ class Product * @param string $lifecycle * @return Product */ - public function setLifecycle($lifecycle) + public function setLifecycle(string $lifecycle): Product { $this->lifecycle = $lifecycle; return $this; @@ -254,7 +251,7 @@ class Product /** * @return string */ - public function getSerialControlFlag() + public function getSerialControlFlag(): string { return $this->serialControlFlag; } @@ -263,7 +260,7 @@ class Product * @param string $serialControlFlag * @return Product */ - public function setSerialControlFlag($serialControlFlag) + public function setSerialControlFlag(string $serialControlFlag): Product { $this->serialControlFlag = $serialControlFlag; return $this; @@ -272,7 +269,7 @@ class Product /** * @return string */ - public function getVendor() + public function getVendor(): string { return $this->vendor; } @@ -281,7 +278,7 @@ class Product * @param string $vendor * @return Product */ - public function setVendor($vendor) + public function setVendor(string $vendor): Product { $this->vendor = $vendor; return $this; @@ -290,7 +287,7 @@ class Product /** * @return string */ - public function getVendorPartNumber() + public function getVendorPartNumber(): string { return $this->vendorPartNumber; } @@ -299,7 +296,7 @@ class Product * @param string $vendorPartNumber * @return Product */ - public function setVendorPartNumber($vendorPartNumber) + public function setVendorPartNumber(string $vendorPartNumber): Product { $this->vendorPartNumber = $vendorPartNumber; return $this; @@ -308,7 +305,7 @@ class Product /** * @return string */ - public function getUpc() + public function getUpc(): string { return $this->upc; } @@ -317,7 +314,7 @@ class Product * @param string $upc * @return Product */ - public function setUpc($upc) + public function setUpc(string $upc): Product { $this->upc = $upc; return $this; @@ -326,34 +323,16 @@ class Product /** * @return string */ - public function getUdds() - { - return $this->udds; - } - - /** - * @param string $udds - * @return Product - */ - public function setUdds($udds) - { - $this->udds = $udds; - return $this; - } - - /** - * @return int - */ - public function getCbsItemTemplate() + public function getCbsItemTemplate(): string { return $this->cbsItemTemplate; } /** - * @param int $cbsItemTemplate + * @param string $cbsItemTemplate * @return Product */ - public function setCbsItemTemplate($cbsItemTemplate) + public function setCbsItemTemplate(string $cbsItemTemplate): Product { $this->cbsItemTemplate = $cbsItemTemplate; return $this; @@ -363,7 +342,7 @@ class Product * @param string $pricingTemplate * @return Product */ - public function setPricingTemplate($pricingTemplate) + public function setPricingTemplate(string $pricingTemplate): Product { $this->pricingTemplate = $pricingTemplate; return $this; @@ -372,7 +351,7 @@ class Product /** * @return string */ - public function getPricingTemplate() + public function getPricingTemplate(): string { return $this->pricingTemplate; } @@ -380,7 +359,7 @@ class Product /** * @return float */ - public function getBasePrice() + public function getBasePrice(): float { return $this->basePrice; } @@ -389,7 +368,7 @@ class Product * @param float $basePrice * @return Product */ - public function setBasePrice($basePrice) + public function setBasePrice(float $basePrice): Product { $this->basePrice = $basePrice; return $this; @@ -398,7 +377,7 @@ class Product /** * @return string */ - public function getReference() + public function getReference(): string { return $this->reference; } @@ -407,25 +386,25 @@ class Product * @param string $reference * @return Product */ - public function setReference($reference) + public function setReference(string $reference): Product { $this->reference = $reference; return $this; } /** - * @return string + * @return float */ - public function getCostCenter() + public function getCostCenter(): float { return $this->costCenter; } /** - * @param string $costCenter + * @param float $costCenter * @return Product */ - public function setCostCenter($costCenter) + public function setCostCenter($costCenter): Product { $this->costCenter = $costCenter; return $this; @@ -434,7 +413,7 @@ class Product /** * @return string */ - public function getPlannerCode() + public function getPlannerCode(): string { return $this->plannerCode; } @@ -443,7 +422,7 @@ class Product * @param string $plannerCode * @return Product */ - public function setPlannerCode($plannerCode) + public function setPlannerCode(string $plannerCode): Product { $this->plannerCode = $plannerCode; return $this; @@ -452,7 +431,7 @@ class Product /** * @return string */ - public function getMinMaxActive() + public function getMinMaxActive(): string { return $this->minMaxActive; } @@ -461,7 +440,7 @@ class Product * @param string $minMaxActive * @return Product */ - public function setMinMaxActive($minMaxActive) + public function setMinMaxActive(string $minMaxActive): Product { $this->minMaxActive = $minMaxActive; return $this; @@ -470,7 +449,7 @@ class Product /** * @return string */ - public function getBuyer() + public function getBuyer(): string { return $this->buyer; } @@ -479,7 +458,7 @@ class Product * @param string $buyer * @return Product */ - public function setBuyer($buyer) + public function setBuyer(string $buyer): Product { $this->buyer = $buyer; return $this; @@ -488,7 +467,7 @@ class Product /** * @return string */ - public function getProductManager() + public function getProductManager(): string { return $this->productManager; } @@ -497,7 +476,7 @@ class Product * @param string $productManager * @return Product */ - public function setProductManager($productManager) + public function setProductManager(string $productManager): Product { $this->productManager = $productManager; return $this; @@ -506,7 +485,7 @@ class Product /** * @return string */ - public function getTestMode() + public function getTestMode(): string { return $this->testMode; } @@ -515,7 +494,7 @@ class Product * @param string $testMode * @return Product */ - public function setTestMode($testMode) + public function setTestMode(string $testMode): Product { $this->testMode = $testMode; return $this; diff --git a/src/main/edu/wisc/services/cbs/product/ProductInputParametersMapper.php b/src/main/edu/wisc/services/cbs/product/ProductInputParametersMapper.php index 0375e8d..4715748 100644 --- a/src/main/edu/wisc/services/cbs/product/ProductInputParametersMapper.php +++ b/src/main/edu/wisc/services/cbs/product/ProductInputParametersMapper.php @@ -81,7 +81,7 @@ class ProductInputParametersMapper ); } - $inputParameters->setP_ITEM_NUMBER($product->getSku()) + $inputParameters->setP_ITEM_NUMBER($product->getItemNumber()) ->setP_ITEM_DESCRIPTION($product->getName()) ->setP_CBS_ITEM_TEMPLATE($product->getCbsItemTemplate()) ->setP_ITEM_CATEGORY($product->getCategory()) diff --git a/src/main/edu/wisc/services/cbs/product/ProductService.php b/src/main/edu/wisc/services/cbs/product/ProductService.php index 239e4b4..e3b2877 100755 --- a/src/main/edu/wisc/services/cbs/product/ProductService.php +++ b/src/main/edu/wisc/services/cbs/product/ProductService.php @@ -18,7 +18,7 @@ interface ProductService extends Service * @param Product product to create * @return ProductServiceResponse */ - public function createProduct(Product $product); + public function createProduct(Product $product): ProductServiceResponse; /** * Update an existing product. @@ -26,6 +26,6 @@ interface ProductService extends Service * @param Product product to update * @return ProductServiceResponse */ - public function updateProduct(Product $product); + public function updateProduct(Product $product): ProductServiceResponse; } diff --git a/src/main/edu/wisc/services/cbs/product/SoapProductService.php b/src/main/edu/wisc/services/cbs/product/SoapProductService.php index 3f03a0d..12dfc1f 100755 --- a/src/main/edu/wisc/services/cbs/product/SoapProductService.php +++ b/src/main/edu/wisc/services/cbs/product/SoapProductService.php @@ -86,7 +86,7 @@ class SoapProductService implements ProductService /** * {@inheritDoc} */ - public function createProduct(Product $product) + public function createProduct(Product $product): ProductServiceResponse { $outputParameters = $this->productCreateSoapClient->ITEM_CREATE( ProductInputParametersMapper::toInputParameters( @@ -100,7 +100,7 @@ class SoapProductService implements ProductService /** * {@inheritDoc} */ - public function updateProduct(Product $product) + public function updateProduct(Product $product): ProductServiceResponse { $outputParameters = $this->productUpdateSoapClient->ITEM_UPDATE( ProductInputParametersMapper::toInputParameters( diff --git a/src/test/edu/wisc/services/cbs/product/ProductInputParametersMapperTest.php b/src/test/edu/wisc/services/cbs/product/ProductInputParametersMapperTest.php index 650db44..5a04ac2 100644 --- a/src/test/edu/wisc/services/cbs/product/ProductInputParametersMapperTest.php +++ b/src/test/edu/wisc/services/cbs/product/ProductInputParametersMapperTest.php @@ -13,7 +13,7 @@ class ProductInputParametersMapperTest extends \PHPUnit_Framework_TestCase public function mapsProductToInputParameters() { $product = (new Product()) - ->setSku('itemNumber') + ->setItemNumber('itemNumber') ->setName('name') ->setCategory('category') ->setCbsItemTemplate(1389) @@ -30,7 +30,7 @@ class ProductInputParametersMapperTest extends \PHPUnit_Framework_TestCase ->setBasePrice(5.0) ->setPricingTemplate('template') ->setReference('reference') - ->setCostCenter('A123456') + ->setCostCenter(5060) ->setPlannerCode('code') ->setMinMaxActive('no') ->setBuyer('Bucky Badger') @@ -42,7 +42,7 @@ class ProductInputParametersMapperTest extends \PHPUnit_Framework_TestCase ProductInputParametersMapper::$CREATE ); - static::assertEquals($product->getSku(), $inputParameters->getP_ITEM_NUMBER()); + static::assertEquals($product->getItemNumber(), $inputParameters->getP_ITEM_NUMBER()); static::assertEquals($product->getName(), $inputParameters->getP_ITEM_DESCRIPTION()); static::assertEquals($product->getCategory(), $inputParameters->getP_ITEM_CATEGORY()); static::assertEquals($product->getCbsItemTemplate(), $inputParameters->getP_CBS_ITEM_TEMPLATE()); @@ -72,8 +72,32 @@ class ProductInputParametersMapperTest extends \PHPUnit_Framework_TestCase /** @test */ public function handlesNullCost() { + $product = (new Product()) + ->setItemNumber('itemNumber') + ->setName('name') + ->setCategory('category') + ->setCbsItemTemplate(1389) + ->setManufacturer('manufacturer') + ->setManufacturerPartNumber('manufacturerPartNumber') + ->setMinQuantity(1) + ->setMaxQuantity(5) + ->setLifecycle('lifecycle') + ->setSerialControlFlag('serialCtrlFlag') + ->setVendor('vendor') + ->setVendorPartNumber('vendorPartNumber') + ->setUpc('upc') + ->setBasePrice(5.0) + ->setPricingTemplate('template') + ->setReference('reference') + ->setCostCenter(5060) + ->setPlannerCode('code') + ->setMinMaxActive('no') + ->setBuyer('Bucky Badger') + ->setProductManager('Bucky Badger') + ->setTestMode('yesplz'); + $inputParameters = ProductInputParametersMapper::toInputParameters( - new Product(), + $product, ProductInputParametersMapper::$CREATE ); static::assertNull($inputParameters->getP_COST()); -- GitLab