public function test_replicateCategories() { /** === Test Data === */ $PROD_ID = 32; $PROD_SKU = 'sku'; $CAT_O1 = 41; $CAT_O3 = 43; $CAT_M1 = 31; $CAT_M2 = 32; $CAT_M3 = 33; $CAT_EXIST = [$CAT_M1, $CAT_M2]; $CATS = [$CAT_O1, $CAT_O3]; /** === Setup Mocks === */ // $prod = $this->_mageRepoProd->getById($prodId); $mProd = $this->_mock(\Magento\Catalog\Api\Data\ProductInterface::class); $this->mMageRepoProd->shouldReceive('getById')->once()->andReturn($mProd); // $sku = $prod->getSku(); $mProd->shouldReceive('getSku')->once()->andReturn($PROD_SKU); // $catsExist = $prod->getCategoryIds(); $mProd->shouldReceive('getCategoryIds')->once()->andReturn($CAT_EXIST); // $catMageId = $this->_repoRegistry->getCategoryMageIdByOdooId($catOdooId); $this->mRepoRegistry->shouldReceive('getCategoryMageIdByOdooId')->once()->with($CAT_O1)->andReturn($CAT_M1); $this->mRepoRegistry->shouldReceive('getCategoryMageIdByOdooId')->once()->with($CAT_O3)->andReturn($CAT_M3); // $prodLink = $this->_manObj->create(CategoryProductLinkInterface::class); $mProdLink = $this->_mock(\Magento\Catalog\Api\Data\CategoryProductLinkInterface::class); $this->mManObj->shouldReceive('create')->once()->andReturn($mProdLink); $mProdLink->shouldReceive('setCategoryId', 'setSku', 'setPosition'); // $this->_mageRepoCatLink->save($prodLink); $this->mMageRepoCatLink->shouldReceive('save')->once(); // $this->_mageRepoCatLink->deleteByIds($catMageId, $sku); $this->mMageRepoCatLink->shouldReceive('deleteByIds')->once()->with($CAT_M2, $PROD_SKU); /** === Call and asserts === */ $this->obj->replicateCategories($PROD_ID, $CATS); }