* @copyright 2021 DIGITAL RETAIL TECHNOLOGIES SL * @license https://opensource.org/licenses/MIT The MIT License * * Don't forget to prefix your containers with your own identifier * to avoid any conflicts with others containers. */ class RetailcrmCartUploaderTest extends RetailcrmTestCase { private $apiMock; private $product; protected function setUp() { parent::setUp(); $this->apiMock = $this->getApiMock(['cartGet', 'cartSet', 'cartClear']); $catalog = new RetailcrmCatalog(); $data = $catalog->getData(); $this->product = $data[1]->current(); RetailcrmCartUploader::init(); RetailcrmCartUploader::$site = 'test'; RetailcrmCartUploader::setSyncDelay(Configuration::get(RetailCRM::SYNC_CARTS_DELAY)); } public function testCreateCart() { $cart = $this->createCart(1); $cart->updateQty(1, $this->product['id']); $this->apiClientMock->expects($this->any()) ->method('cartGet') ->willReturn(new RetailcrmApiResponse('200', json_encode(['cart' => []]))) ; $this->apiClientMock->expects($this->any()) ->method('cartSet') ->willReturn(new RetailcrmApiResponse('200', json_encode(['success' => true]))) ; RetailcrmCartUploader::$api = $this->apiMock; RetailcrmCartUploader::run(); $this->assertNotEquals(empty($cart->date_upd), true); $this->assertInternalType('string', $cart->date_upd); return $cart; } /** * @depends testCreateCart */ public function testUpdateCart($cart) { $cart->updateQty(2, $this->product['id']); $this->apiClientMock->expects($this->any()) ->method('cartGet') ->willReturn( new RetailcrmApiResponse( '200', json_encode( [ 'cart' => ['externalId' => $cart->id_customer], ] ) ) ) ; $this->apiClientMock->expects($this->any()) ->method('cartSet') ->willReturn(new RetailcrmApiResponse('200', json_encode(['success' => true]))) ; RetailcrmCartUploader::$api = $this->apiMock; RetailcrmCartUploader::run(); $this->assertNotEquals(empty($cart->date_upd), true); $this->assertInternalType('string', $cart->date_upd); } public function testClearCart() { $cart = $this->createCart(2); $cartUpdate = $cart->date_upd; $this->apiClientMock->expects($this->any()) ->method('cartGet') ->willReturn( new RetailcrmApiResponse( '200', json_encode( [ 'cart' => ['externalId' => $cart->id_customer], ] ) ) ) ; $this->apiClientMock->expects($this->any()) ->method('cartClear') ->willReturn(new RetailcrmApiResponse('200', json_encode(['success' => true]))) ; RetailcrmCartUploader::$api = $this->apiMock; RetailcrmCartUploader::run(); $this->assertEquals($cartUpdate, $cart->date_upd); $this->assertNotEquals(empty($cart->date_upd), true); $this->assertInternalType('string', $cart->date_upd); } private function createCart(int $customerId) { $cart = new Cart(); $cart->id_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $cart->id_customer = $customerId; $cart->id_currency = 1; $cart->save(); return $cart; } }