<?php
$dotenv = new Dotenv\Dotenv(__DIR__ . '/../');
$dotenv->load();

class PuskesmasTest extends BaseTest
{
    const PREFIX = 'kesehatan/puskesmas/';

    public function testListProvinsiShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', self::PREFIX . 'list_provinsi', [], 200, "\n\t\t\t".self::PREFIX."list_provinsi Passed");
    }

    public function testSearchShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', self::PREFIX . 'search', [], 200, "\n\t\t\t".self::PREFIX."search Passed");
    }

    public function testSearchWithParamShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', self::PREFIX . 'search', [
            'query' => [
                'limit' => 10,
                'offset' => 0,
                'provinsi' => 'DI Yogyakarta',
                'kota' => 'Kab. Bantul'
            ]
        ], 200, "\t\t\t".self::PREFIX."search with param Passed");
    }

    public function testProfileShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', self::PREFIX . 'profile/P3402170202', [], 200, "\n\t\t\t".self::PREFIX."profile Passed");
    }

    public function testDetailShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSubsetResponse(
            'GET',
            self::PREFIX . 'detail/P3402170202',
            200,
            [
                'data' => [
                    'kode' => 'P3402170202'
                ]
            ],
            "\n\t\t\t".self::PREFIX."detail Passed"
        );
    }

    public function testDetailShouldGiveNotFoundResponse() {
        $this->doAPIShouldGiveSubsetResponse(
            'GET',
            self::PREFIX . 'detail/P3402170200',
            404,
            [
                "success" => false
            ],
            "\t\t\t".self::PREFIX."detail not found Passed"
        );
    }

    public function testTahunKapitasiShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', self::PREFIX . 'tahun_kapitasi', [], 200, "\n\t\t\t".self::PREFIX."tahun_kapitasi Passed");
    }

    public function testKapitasiShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', self::PREFIX . 'kapitasi',
            [
                'query' => [
                    'tahun' => 2017,
                    'kode_puskesmas' => 'P3402170202'
                ]
            ],
            200, "\n\t\t\t".self::PREFIX."kapitasi Passed");
    }

    public function testKapitasiShouldGiveRequiredResponse() {
        $this->doAPIShouldGiveRequiredResponse('GET', self::PREFIX . 'kapitasi', 460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "tahun",
                        "message" => "Field tahun is required"
                    ],
                    [
                        "field" => "kode_puskesmas",
                        "message" => "Field kode_puskesmas is required"
                    ]
                ]
            ],
            "\t\t\tkapitasi required response Passed"
        );
    }
}
