retailCrmOrder = \Mockery::mock('RetailCrmOrder'); COption::SetOptionString('intaro.retailcrm', 'api_version', 'v5'); CModule::IncludeModule('intaro.retailcrm'); } public function testModuleInstalled() { $this->assertTrue(Loader::includeModule("intaro.retailcrm")); } /** * @param $pSize * @param $failed * @param $orderList * * @dataProvider getData */ public function testUploadOrders($pSize, $failed, $orderList) { $this->assertEquals(50, $pSize); $this->assertFalse($failed); if ($orderList) { $this->assertEquals(3, sizeof($orderList)); $this->retailCrmOrder->shouldReceive('uploadOrders') ->andReturn( array( array('id' => 001, 'externalId' => 2), array('id' => 002, 'externalId' => 3), array('id' => 003, 'externalId' => 4) ) ); $result = $this->retailCrmOrder->uploadOrders(); foreach ($result as $key => $order) { $this->assertEquals($order["externalId"], $orderList[$key]); } } else { $this->assertFalse($orderList); } } /** * @return array */ public function getData() { return [ [ 'pSize' => 50, 'failed' => false, 'orderList' => false ], [ 'pSize' => 50, 'failed' => false, 'orderList' => array(2,3,4) ] ]; } /** * @param $pack * @param $method * @param $keyResponse * @param $apiMock * @param $optionsSitesList * * @dataProvider getDataUpload */ public function testUploadItems($pack, $method, $keyResponse, $apiMock, $optionsSitesList) { $responseBody1 = ''; for ($i = 1; $i < 51; $i++) { $responseBody1 .= "{\"id\":".$i.",\"externalId\":".$i."},"; } $responseBody1 = substr($responseBody1,0,-1); $responseBody1 ='{ "success":true, "'.$keyResponse.'":['.$responseBody1.'] }'; $responseBody2 ='{ "success":true, "uploadedCustomers":[ {"id":51,"externalId":"51"} ] }'; $apiMock->shouldReceive($method) ->andReturn( new \RetailCrm\Response\ApiResponse( 200, $responseBody1 ), new \RetailCrm\Response\ApiResponse( 200, $responseBody2 ) ); $test = new RetailCrmOrder(); $result = $test::uploadItems($pack, $method, $keyResponse, $apiMock, $optionsSitesList); $this->assertEquals(sizeof($pack['s1']), sizeof($result)); } /** * @return mixed */ public function getCustomerList() { $faker = Faker\Factory::create(); $customerList = []; for ($i = 1; $i < 52; $i++) { $customerList['s1'][$i]['externalId'] = $i; $customerList['s1'][$i]['email'] = $faker->email; $customerList['s1'][$i]['createdAt'] = $faker->date('Y-m-d H:i:s'); $customerList['s1'][$i]['subscribed'] = ''; $customerList['s1'][$i]['contragent'] = ['contragentType' => 'individual']; $customerList['s1'][$i]['firstName'] = $faker->firstName; $customerList['s1'][$i]['lastName'] = $faker->lastName; } return $customerList; } /** * @return array */ public function getDataUpload() { return [ [ 'pack' => $this->getCustomerList(), 'customersUpload', 'uploadedCustomers', 'api'=>\Mockery::mock('RetailCrm\ApiClient'), 'optionsSitesList'=>[] ], [ 'pack'=> [], 'ordersUpload', 'uploadedOrders', 'api'=>\Mockery::mock('RetailCrm\ApiClient'), 'optionsSitesList'=>[] ] ]; } }