<?php

require_once 'ABaseTest.php';

class StranasSummaryTest extends BaseTest {
    public function testDrillSuccess() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/drill?level=global&instansi_id=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "\ntestDrillSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testDrillSuccess Failed", $e->getMessage()]);
        }
    }

    public function testDrill2Success() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/drill2?level=global&instansi_id=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "testDrillSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testDrillSuccess Failed", $e->getMessage()]);
        }
    }

    public function testDrillCapaianInstansiSuccess() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/drill_capaian_instansi?level=global&instansi_id=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "testDrillCapaianInstansiSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testDrillCapaianInstansiSuccess Failed", $e->getMessage()]);
        }
    }

    public function testDrillTargetSuccess() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/drill_target?level=global&instansi_id=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "testDrillTargetSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testDrillTargetSuccess Failed", $e->getMessage()]);
        }
    }

    public function testInstansiSuccess() {
        try {
            $this->doAPIShouldGiveSuccessResponse(
                'GET',
                'stranas/summary/instansi',
                [],
                200,
                "testInstansiSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testInstansiSuccess Failed", $e->getMessage()]);
        }
    }

    public function testDetailUkuranKeberhasilanSuccess() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/detail_ukuran_keberhasilan?id=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "testDetailUkuranKeberhasilanSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testDetailUkuranKeberhasilanSuccess Failed", $e->getMessage()]);
        }
    }

    public function testTargetSuccess() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/target?id_target=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "testTargetSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testTargetSuccess Failed", $e->getMessage()]);
        }
    }

    public function testTargetInstansiSuccess() {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'GET',
                'stranas/summary/target_instansi?id_target=1&id_instansi=1',
                200,
                [
                    'success' => true,
                    'data' => []
                ],
                "testTargetInstansiSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testTargetInstansiSuccess Failed", $e->getMessage()]);
        }
    }

    public function testLaporanKepatuhanSuccess() {
        try {
            $this->doAPIShouldGiveSuccessResponse(
                'GET',
                'stranas/summary/laporan_kepatuhan',
                [],
                200,
                "testLaporanKepatuhanSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testLaporanKepatuhanSuccess Failed", $e->getMessage()]);
        }
    }

    public function testExportTargetSuccess() {
        try {
            $login = $this->login(getenv("TEST_ADMIN_USERNAME"), getenv("TEST_ADMIN_PASSWORD"));
            $this->assertContains(
                [
                    'success' => true
                ],
                $login,
                "testExportTargetSuccess:login Failed"
            );

            $this->doAPIShouldHaveHeaders(
                'GET',
                'stranas/summary/export_target',
                [
                    'headers' => [
                        'Authorization' => 'Bearer ' . $login['data']['token']
                    ]
                ],
                [
                    'Content-Type' => 'application/vnd.ms-excel'
                ],
                "testExportTargetSuccess Passed"
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testExportTargetSuccess Failed", $e->getMessage()]);
        }
    }
}