<?php

require_once 'ABaseTest.php';

class PPJTest extends BaseTest {
    public $token;
    public $tokenPemda;
    public $kodePemda;
    public function setUp()
    {
        parent::setUp();

        $this->userLogin(getenv("TEST_ADMIN_USERNAME"), $this->token);
        $this->userLogin("user.ppj.bandung", $this->tokenPemda);
        $this->kodePemda = '3273';
    }

    public function userLogin($username, &$token)
    {
        $login = $this->login($username, getenv("TEST_ADMIN_PASSWORD"));
        $this->assertContains(
            [
                'success' => true
            ],
            $login
        );
        $token = $login['data']['token'];
    }

    public function testListHal1() {
        self::$messages = array_merge(
            self::$messages,
            ["\n--- START Test List Halaman 1 ---"]
        );
        $url = 'ppj/list-ppjhal1';
        self::doAPIShouldGiveSuccessResponse(
            'GET',
            $url,
            [
                'headers' => [
                    'Authorization' => 'Bearer ' . $this->token
                ]
            ],
            200,
            $url . " passed"
        );
        self::$messages = array_merge(
            self::$messages,
            ["--- END Test List Halaman 1 ---"]
        );
    }

    public function testListHal2() {
        self::$messages = array_merge(
            self::$messages,
            ["\n--- START Test List Halaman 2 ---"]
        );
        $url = 'ppj/list-ppjhal2';
        self::doAPIShouldGiveSuccessResponse(
            'GET',
            $url,
            [
                'headers' => [
                    'Authorization' => 'Bearer ' . $this->token
                ]
            ],
            200,
            $url . " passed"
        );
        self::$messages = array_merge(
            self::$messages,
            ["--- END Test List Halaman 2 ---"]
        );
    }

    public function testListPiutangPemda() {
        self::$messages = array_merge(
            self::$messages,
            ["\n--- START Test List Piutang Pemda ---"]
        );
        $url = 'ppj/list-ppjpiutangpemda?kd_kabmendagri=' . $this->kodePemda;
        $response = self::doAPIShouldGiveSuccessResponse(
            'GET',
            $url,
            [
                'headers' => [
                    'Authorization' => 'Bearer ' . $this->token
                ]
            ],
            200,
            $url . " passed"
        );
        self::$messages = array_merge(
            self::$messages,
            ["--- END Test List Piutang Pemda ---"]
        );

        return $response['data']['result'][0];
    }

    /**
     * @depends testListPiutangPemda
     * @return mixed
     * @throws \GuzzleHttp\Exception\GuzzleException
     */
    public function testDashboard($piutangPemda)
    {
        self::$messages = array_merge(
            self::$messages,
            ["\n--- START Test Dashboard ---"]
        );

        $periode = $piutangPemda['thbllap'];
        $url = 'ppj/dashboard?start='.$periode.'&end='.$periode;
        self::doAPIShouldGiveSubsetResponse(
            'GET',
            $url,
            200,
            [
                'success' => true,
                'data' => [
                    'rank_goltarif' => []
                ]
            ],
            $url . " passed",
            [
                'headers' => [
                    'Authorization' => 'Bearer ' . $this->tokenPemda
                ]
            ]
        );

        self::$messages = array_merge(
            self::$messages,
            ["--- END Test Dashboard ---"]
        );
    }

    /**
     * @depends testListPiutangPemda
     * @param $piutangPemda
     */
    public function testTagihanPemda($piutangPemda) {
        self::$messages = array_merge(
            self::$messages,
            ["\n--- START Test Tagihan Pemda ---"]
        );

        $periode = $piutangPemda['thbllap'];
        $url = 'ppj/tagihan-pemda?start='.$periode.'&end='.$periode.'&in_kd_kab='.$this->kodePemda;
        self::doAPIShouldGiveSubsetResponse(
            'GET',
            $url,
            200,
            [
                'success' => true
            ],
            $url . " passed"
        );

        self::$messages = array_merge(
            self::$messages,
            ["--- END Test Tagihan Pemda ---"]
        );
    }

    /**
     * @depends testListPiutangPemda
     * @param $piutangPemda
     */
    public function testRekeningPemda($piutangPemda) {
        self::$messages = array_merge(
            self::$messages,
            ["\n--- START Test Rekening Pemda ---"]
        );

        $periode = $piutangPemda['thbllap'];
        $url = 'ppj/rekening-pemda?start='.$periode.'&end='.$periode.'&in_kd_kab='.$this->kodePemda;
        self::doAPIShouldGiveSubsetResponse(
            'GET',
            $url,
            200,
            [
                'success' => true
            ],
            $url . " passed"
        );

        self::$messages = array_merge(
            self::$messages,
            ["--- END Test Rekening Pemda ---"]
        );
    }
}
