objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php */ public function testGet() { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test_order_1', 'reserved_order_id'); $cartId = $quote->getId(); $couponCode = $quote->getCouponCode(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons/' , 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'Get', ], ]; $requestData = ["cartId" => $cartId]; $this->assertEquals($couponCode, $this->_webApiCall($serviceInfo, $requestData)); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php */ public function testDelete() { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test_order_1', 'reserved_order_id'); $cartId = $quote->getId(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'Remove', ], ]; $requestData = ["cartId" => $cartId]; $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); $quote->load('test_order_1', 'reserved_order_id'); $this->assertEquals('', $quote->getCouponCode()); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php * @expectedException \Exception * @expectedExceptionMessage The coupon code isn't valid. Verify the code and try again. */ public function testSetCouponThrowsExceptionIfCouponDoesNotExist() { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test_order_1', 'reserved_order_id'); $cartId = $quote->getId(); $couponCode = 'invalid_coupon_code'; $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons/' . $couponCode, 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'Set', ], ]; $requestData = [ "cartId" => $cartId, "couponCode" => $couponCode, ]; $this->_webApiCall($serviceInfo, $requestData); } /** * @magentoApiDataFixture Magento/Sales/_files/quote.php * @magentoApiDataFixture Magento/Checkout/_files/discount_10percent.php */ public function testSetCouponSuccess() { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test01', 'reserved_order_id'); $cartId = $quote->getId(); /** @var \Magento\SalesRule\Model\Rule $salesRule */ $salesRule = $this->objectManager->create(\Magento\SalesRule\Model\Rule::class); $salesRuleId = $this->objectManager->get(\Magento\Framework\Registry::class) ->registry('Magento/Checkout/_file/discount_10percent'); $salesRule->load($salesRuleId); $couponCode = $salesRule->getPrimaryCoupon()->getCode(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons/' . $couponCode, 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'Set', ], ]; $requestData = [ "cartId" => $cartId, "couponCode" => $couponCode, ]; $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); $quoteWithCoupon = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quoteWithCoupon->load('test01', 'reserved_order_id'); $this->assertEquals($quoteWithCoupon->getCouponCode(), $couponCode); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php */ public function testGetMyCoupon() { $this->_markTestAsRestOnly(); // get customer ID token /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */ $customerTokenService = $this->objectManager->create( \Magento\Integration\Api\CustomerTokenServiceInterface::class ); $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test_order_1', 'reserved_order_id'); $couponCode = $quote->getCouponCode(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons' , 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, 'token' => $token, ], ]; $requestData = []; $this->assertEquals($couponCode, $this->_webApiCall($serviceInfo, $requestData)); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php */ public function testDeleteMyCoupon() { $this->_markTestAsRestOnly(); // get customer ID token /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */ $customerTokenService = $this->objectManager->create( \Magento\Integration\Api\CustomerTokenServiceInterface::class ); $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test_order_1', 'reserved_order_id'); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE, 'token' => $token, ], ]; $requestData = []; $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); $quote->load('test_order_1', 'reserved_order_id'); $this->assertEquals('', $quote->getCouponCode()); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php * @expectedException \Exception * @expectedExceptionMessage The coupon code isn't valid. Verify the code and try again. */ public function testSetMyCouponThrowsExceptionIfCouponDoesNotExist() { $this->_markTestAsRestOnly(); // get customer ID token /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */ $customerTokenService = $this->objectManager->create( \Magento\Integration\Api\CustomerTokenServiceInterface::class ); $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); $couponCode = 'invalid_coupon_code'; $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons/' . $couponCode, 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, 'token' => $token, ], ]; $requestData = [ "couponCode" => $couponCode, ]; $this->_webApiCall($serviceInfo, $requestData); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php * @magentoApiDataFixture Magento/Sales/_files/quote.php * @magentoApiDataFixture Magento/Checkout/_files/discount_10percent_generalusers.php */ public function testSetMyCouponSuccess() { $this->_markTestAsRestOnly(); // get customer ID token /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */ $customerTokenService = $this->objectManager->create( \Magento\Integration\Api\CustomerTokenServiceInterface::class ); $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quote->load('test01', 'reserved_order_id'); $cartId = $quote->getId(); /** @var \Magento\SalesRule\Model\Rule $salesRule */ $salesRule = $this->objectManager->create(\Magento\SalesRule\Model\Rule::class); $salesRuleId = $this->objectManager->get(\Magento\Framework\Registry::class) ->registry('Magento/Checkout/_file/discount_10percent_generalusers'); $salesRule->load($salesRuleId); $couponCode = $salesRule->getPrimaryCoupon()->getCode(); /* Since this isn't a full quote fixture, need to assign it to the right customer */ $cartManagementService = $this->objectManager->create( \Magento\Quote\Api\CartManagementInterface::class ); $cartManagementService->assignCustomer($cartId, 1, 1); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons/' . $couponCode, 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, 'token' => $token, ], ]; $requestData = [ "couponCode" => $couponCode, ]; $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); $quoteWithCoupon = $this->objectManager->create(\Magento\Quote\Model\Quote::class); $quoteWithCoupon->load('test01', 'reserved_order_id'); $this->assertEquals($quoteWithCoupon->getCouponCode(), $couponCode); } }