apiMock = $this->getApiMock( [ 'ordersCreate', 'ordersEdit', 'ordersGet', ] ); } public function getRequests() { return [ [ 'method' => 'ordersGet', 'params' => [[]], 'reference' => 'reference', ], [ 'method' => 'ordersEdit', 'params' => [['number' => 'test', 'externalId' => 1]], 'reference' => 'test', ], [ 'method' => 'ordersCreate', 'params' => [['number' => 'test', 'externalId' => 1]], 'reference' => 'test', ], ]; } /** * @dataProvider getRequests */ public function testRequest($method, $params, $reference) { $this->apiClientMock->expects($this->any())->method('ordersCreate')->willReturn(new RetailcrmApiResponse( 200, json_encode([ 'success' => true, 'order' => [ 'number' => 'test', 'externalId' => 1, ], ]) )); $this->apiClientMock->expects($this->any())->method('ordersEdit')->willReturn(new RetailcrmApiResponse( 200, json_encode([ 'success' => true, 'order' => [ 'number' => 'test', 'externalId' => 1, ], ]) )); $this->apiClientMock->expects($this->any())->method('ordersGet')->willReturn(new RetailcrmApiResponse( 200, json_encode([ 'success' => true, 'order' => [ 'number' => 'test', 'externalId' => 1, ], ]) )); Configuration::updateValue(RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING, true); $order = new Order(1); $order->reference = 'reference'; $order->update(); unset($order); /** @var RetailcrmApiResponse $response */ $response = $this->apiMock->$method($params); $this->assertInstanceOf(RetailcrmApiResponse::class, $response); $this->assertTrue($response->isSuccessful()); $order = new Order(1); $this->assertEquals($reference, $order->reference); } }