MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/artinside/www/lhh/vendor/pagarme/pagarme-php/tests/unit/Endpoints/PayablesTest.php
<?php

namespace PagarMe\Endpoints\Test;

use PagarMe\Client;
use PagarMe\Endpoints\Payables;
use PagarMe\Test\Endpoints\PagarMeTestCase;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\Psr7\Response;

class PayablesTest extends PagarMeTestCase
{
    public function mockProvider()
    {
        return [[[
            'payable' => new MockHandler([
                new Response(200, [], self::jsonMock('PayableMock'))
            ]),
            'list' => new MockHandler([
                new Response(200, [], self::jsonMock('PayableListMock')),
                new Response(200, [], '[]')
            ])
        ]]];
    }

    /**
     * @dataProvider mockProvider
     */
    public function testPayablesGet($mock)
    {
        $container = [];
        $client = self::buildClient($container, $mock['payable']);

        $response = $client->payables()->get(['id' => 1234556]);

        $this->assertEquals(
            Payables::GET,
            self::getRequestMethod($container[0])
        );
        $this->assertEquals(
            '/1/payables/1234556',
            self::getRequestUri($container[0])
        );
        $this->assertEquals(
            json_decode(self::jsonMock('PayableMock')),
            $response
        );
    }

    /**
     * @dataProvider mockProvider
     */
    public function testPayablesList($mock)
    {
        $container = [];
        $client = self::buildClient($container, $mock['list']);

        $response = $client->payables()->getList();
        
        $this->assertEquals(
            Payables::GET,
            self::getRequestMethod($container[0])
        );
        $this->assertEquals(
            '/1/payables',
            self::getRequestUri($container[0])
        );
        $this->assertEquals(
            json_decode(self::jsonMock('PayableListMock')),
            $response
        );

        $response = $client->payables()->getList([
            'created_at' => '1970-01-01T00:00:00.000Z',
            'amount' => 30000,
            'recipient_id' => 're_abc1234abc1234abc1234abc1'
        ]);

        $query = self::getQueryString($container[1]);

        $this->assertContains('amount=30000', $query);
        $this->assertContains(
            'created_at=1970-01-01T00%3A00%3A00.000Z',
            $query
        );
        $this->assertContains(
            'recipient_id=re_abc1234abc1234abc1234abc1',
            $query
        );
        $this->assertEquals(
            json_decode('[]'),
            $response
        );
    }
}