<?php

class AnggaranSekolahTest extends BaseTest
{
    public function testAnggaranListProvinsiShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran_list_provinsi', [], 200, "\n\t\t\tsekolah/anggaran_list_provinsi Passed");
    }

    public function testSearchAnggaranListProvinsiShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran_list_provinsi',
        [
            'query' => [
                'keyword' => "Prov. Jawa Tengah"
            ]
        ],
        200, "\t\t\tsekolah/anggaran_list_provinsi with keyword=Prov. Jawa Tengah Passed");
    }

    public function testAnggaranListProvinsiShouldGiveNotFoundResponse() {
        $this->doAPIShouldGiveNotFoundResponse(
            'GET', 'sekolah/anggaran_list_provinsi',
            [
                'query' => [
                    'keyword' => "abc"
                ]
            ],
            200, "\t\t\tsekolah/anggaran_list_provinsi with keyword=abc Passed"
        );
    }

    public function testAnggaranListProvinsiShouldGiveMustBeNumericResponse() {
        $this->doShouldGiveMustBeNumericResponse('GET', 'sekolah/anggaran_list_provinsi',
            [
                'query' => [
                    'limit' => 'abc',
                    "offset" => "abc"
                ]
            ],
            460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "limit",
                        "message" => "Field limit must be numeric"
                    ],
                    [
                        "field" => "offset",
                        "message" => "Field offset must be numeric"
                    ]
                ]
            ],
            "\t\t\tsekolah/anggaran_list_provinsi with limit=abc,offset=abc Passed"
        );
    }

    public function testAnggaranListKotaKabShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran_list_kota_kabupaten',
            [
                'query' => [
                    'provinsi' => "Prov. Jawa Tengah"
                ]
            ],
            200, "\n\t\t\tsekolah/anggaran_list_kota_kabupaten with provinsi=Prov. Jawa Tengah Passed"
        );
    }

    public function testSearchAnggaranListKotaKabShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran_list_kota_kabupaten',
            [
                'query' => [
                    'provinsi' => "Prov. Jawa Tengah",
                    "keyword" => "Sr"
                ]
            ],
            200, "\t\t\tsekolah/anggaran_list_kota_kabupaten with provinsi=Prov. Jawa Tengah,keyword=Sr Passed"
        );
    }

    public function testAnggaranListKotaKabShouldGiveNotFoundResponse() {
        $this->doAPIShouldGiveNotFoundResponse(
            'GET', 'sekolah/anggaran_list_kota_kabupaten',
            [
                'query' => [
                    'provinsi' => "Prop. Aceh",
                    'keyword' => "abc"
                ]
            ],
            200, "\t\t\tsekolah/anggaran_list_kota_kabupaten with provinsi=Prop. Aceh,keyword=abc Passed"
        );
    }

    public function testAnggaranListKotaKabShouldGiveMustBeNumericResponse() {
        $this->doShouldGiveMustBeNumericResponse('GET', 'sekolah/anggaran_list_kota_kabupaten',
            [
                'query' => [
                    'provinsi' => "Prop. Aceh",
                    'limit' => 'abc',
                    "offset" => "abc"
                ]
            ],
            460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "limit",
                        "message" => "Field limit must be numeric"
                    ],
                    [
                        "field" => "offset",
                        "message" => "Field offset must be numeric"
                    ]
                ]
            ],
            "\t\t\tsekolah/anggaran_list_kota_kabupaten with limit=abc,offset=abc Passed"
        );
    }

    public function testAnggaranListKotaKabShouldGiveRequiredResponse() {
        $this->doAPIShouldGiveRequiredResponse('GET', 'sekolah/anggaran_list_kota_kabupaten', 460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "provinsi",
                        "message" => "Field provinsi is required"
                    ]
                ]
            ],
            "\t\t\tsekolah/anggaran_list_kota_kabupaten with no parameters Passed"
        );
    }

    public function testAnggaranListSekolahShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran_list_sekolah',
            [
                'query' => [
                    'provinsi' => "Prov. Jawa Tengah",
                    "kota_kabupaten" => "Kab. Sragen"
                ]
            ],
            200, "\n\t\t\tsekolah/anggaran_list_sekolah with provinsi=Prov. Jawa Tengah,kota_kabupaten=Kab. Sragen Passed"
        );
    }

    public function testSearchAnggaranListSekolahShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran_list_sekolah',
            [
                'query' => [
                    'provinsi' => "Prov. Jawa Tengah",
                    "kota_kabupaten" => "Kab. Sragen",
                    "keyword" => "SAMBI"
                ]
            ],
            200, "\t\t\tsekolah/anggaran_list_sekolah with provinsi=Prov. Jawa Tengah,kota_kabupaten=Kab. Sragen,keyword=Besar Passed"
        );
    }

    public function testAnggaranListSekolahShouldGiveNotFoundResponse() {
        $this->doAPIShouldGiveNotFoundResponse(
            'GET', 'sekolah/anggaran_list_sekolah',
            [
                'query' => [
                    'provinsi' => "Prov. Jawa Tengah",
                    "kota_kabupaten" => "Kab. Sragen",
                    'keyword' => "abc"
                ]
            ],
            200, "\t\t\tsekolah/anggaran_list_sekolah with provinsi=Prov. Jawa Tengah,kota_kabupaten=Kab. Sragen,keyword=abc Passed"
        );
    }

    public function testAnggaranListSekolahShouldGiveMustBeNumericResponse() {
        $this->doShouldGiveMustBeNumericResponse('GET', 'sekolah/anggaran_list_sekolah',
            [
                'query' => [
                    'provinsi' => "Prov. Banten",
                    "kota_kabupaten" => "Kota Serang",
                    'limit' => 'abc',
                    "offset" => "abc"
                ]
            ],
            460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "limit",
                        "message" => "Field limit must be numeric"
                    ],
                    [
                        "field" => "offset",
                        "message" => "Field offset must be numeric"
                    ]
                ]
            ],
            "\t\t\tsekolah/anggaran_list_sekolah with limit=abc,offset=abc Passed"
        );
    }

    public function testAnggaranListSekolahShouldGiveRequiredResponse() {
        $this->doAPIShouldGiveRequiredResponse('GET', 'sekolah/anggaran_list_sekolah', 460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "provinsi",
                        "message" => "Field provinsi is required"
                    ],
                    [
                        "field" => "kota_kabupaten",
                        "message" => "Field kota_kabupaten is required"
                    ]
                ]
            ],
            "\t\t\tsekolah/anggaran_list_sekolah with no parameters Passed"
        );
    }

    public function testAnggaranShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'sekolah/anggaran',
            [
                'query' => [
                    "npsn" => "20312903"
                ]
            ],
            200, "\n\t\t\tsekolah/anggaran with npsn=20312903 Serang Passed"
        );
    }

    public function testAnggaranShouldGiveNotFoundResponse() {
        $this->doAPIShouldGiveNotFoundResponse(
            'GET', 'sekolah/anggaran',
            [
                'query' => [
                    "npsn" => "123"
                ]
            ],
            200, "\t\t\tsekolah/anggaran with npsn=123 Passed"
        );
    }

    public function testAnggaranShouldGiveRequiredResponse() {
        $this->doAPIShouldGiveRequiredResponse('GET', 'sekolah/anggaran', 460,
            [
                'success' => false,
                "errors" => [
                    [
                        "field" => "npsn",
                        "message" => "Field npsn is required"
                    ]
                ]
            ],
            "\t\t\tsekolah/anggaran with no parameters Passed"
        );
    }
}

?>