CL\Slack\Tests\Transport\ApiClientTest::it_can_send_a_payload PHP Method

it_can_send_a_payload() public method

    public function it_can_send_a_payload()
    {
        $self = $this;
        $token = 'fake-token';
        $mockRequestData = ['fruit' => 'apple', 'token' => $token];
        $mockResponseData = ['ok' => true, 'fruit' => 'apple'];
        $handler = HandlerStack::create(new MockHandler([new Response(200, [], json_encode($mockResponseData))]));
        $historyContainer = [];
        $history = Middleware::history($historyContainer);
        $handler->push($history);
        $apiClient = new ApiClient($token, new Client(['handler' => $handler]));
        $apiClient->addRequestListener(function (RequestEvent $event) use(&$eventsDispatched, $mockRequestData, $self) {
            $eventsDispatched[ApiClient::EVENT_REQUEST] = true;
            $self->assertEquals($mockRequestData, $event->getRawPayload());
        });
        $apiClient->addResponseListener(function (ResponseEvent $event) use(&$eventsDispatched, $mockResponseData, $self) {
            $eventsDispatched[ApiClient::EVENT_RESPONSE] = true;
            $self->assertEquals($mockResponseData, $event->getRawPayloadResponse());
        });
        $payload = new PayloadMock();
        $payload->setFruit($mockRequestData['fruit']);
        $apiClient->send($payload);
        $transaction = $historyContainer[0];
        $requestUrl = (string) $transaction['request']->getUri();
        $requestContentType = $transaction['request']->getHeader('content-type')[0];
        parse_str($transaction['request']->getBody(), $requestBody);
        $responseBody = json_decode($transaction['response']->getBody(), true);
        $this->assertEquals(ApiClient::API_BASE_URL . 'mock', $requestUrl);
        $this->assertEquals('application/x-www-form-urlencoded', $requestContentType);
        $this->assertEquals($mockRequestData, $requestBody);
        $this->assertEquals($mockResponseData, $responseBody);
        $this->assertArrayHasKey(ApiClient::EVENT_REQUEST, $eventsDispatched);
        $this->assertArrayHasKey(ApiClient::EVENT_RESPONSE, $eventsDispatched);
    }