<?php

class TanggalRilisBeritaTest extends BaseTest
{		
	static $diskusi_id = "";
	static $cerita_id = "";
	
	public function testListDiskusiTestShouldGiveSuccessResponse() {
        $response = $this->doAPIShouldGiveSuccessResponse('GET', 'diskusi/list-for-admin', [], 200, "\n\t\t\diskusi/kumpulan");

		self::$diskusi_id = $response["data"]["result"][0]["uuid"];		
    }

    public function testListForAdminTestShouldGiveSuccessResponse() {
        $response = $this->doAPIShouldGiveSuccessResponse('GET', 'diskusi/list-for-admin', [], 200, "\n\t\t\diskusi/list-for-admin Passed");

		self::$cerita_id = $response["data"]["result"][0]["uuid"];				
    }
	
	public function testListForAdminTestWithOrderParameterShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'diskusi/list-for-admin', [
			'query' => [
                'order_by' => "release_date",
				'order_direction' => 'asc',
            ]
		], 200, "\n\t\t\diskusi/list-for-admin with order parameter Passed");
    }   
	
	public function testListForAdminTestWithWrongOrderParameterShouldGiveSuccessResponse() {		
        $this->doShouldGiveMustBeNumericResponse('GET', 'diskusi/list-for-admin', [
			'query' => [
                'order_by' => "create_at",
				'order_direction' => 'asc',
            ]
		], 460, 
		[
                'success' => false,
                "message" => "Validation Errors"
        ],
		"\n\t\t\diskusi/list-for-admin with invalid order parameter Passed");
    } 
	
	public function testListForAdminTestWithWrongOrderingParameterShouldGiveSuccessResponse() {
        $this->doShouldGiveMustBeNumericResponse('GET', 'diskusi/list-for-admin', [
			'query' => [
                'order_by' => "release_date",
				'order_direction' => 'ascs',
            ]
		], 460, 
		[
                'success' => false,
                "message" => "Validation Errors"
        ],
		"\n\t\t\diskusi/list-for-admin with invalid ordering parameter Passed");
    }  
	
	public function testCeritaSuksesTestShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'diskusi/cerita_sukses', [			
		], 200, "\n\t\t\diskusi/cerita_sukses Passed");
    }
	
	public function testDetailCeritaSuksesTestShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'diskusi/konten/381a46a7-7907-4638-844a-9c410fc3752d', [			
		], 200, "\n\t\t\diskusi/detail_cerita_sukses Passed");
    }
		
	public function testKumpulanDiskusiTestShouldGiveSuccessResponse() {
        $this->doAPIShouldGiveSuccessResponse('GET', 'diskusi/kumpulan', [			
		], 200, "\n\t\t\diskusi/kumpulan Passed");
    }
	
	public function testSubmitCeritaSuksesWithoutReleaseDateTestShouldGiveErrorResponse() {
		$auth = $this->doLogin();
		if(!$auth) die('testSubmitCeritaSuksesWithoutReleaseDateTestShouldGiveErrorResponse : Login gagal');
				
        $this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/submit_cerita', [		
			"headers" => [
				"Content-Type" => "application/json",	
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ]
		], 460, 
		[
                'success' => false,
                "message" => "Validation Errors"
        ],
		"\n\t\t\diskusi/submit_cerita without release date Passed");
    }
	
	public function testSubmitCeritaSuksesWithoutReleaseDateTestShouldGiveSuccessResponse() {
		$auth = $this->doLogin();

		if(!$auth) die('testSubmitCeritaSuksesWithoutReleaseDateTestShouldGiveSuccessResponse : Login gagal');		
		
        $response = $this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/submit_cerita', [		
			"headers" => [
				"Authorization" => "Bearer " . $auth["data"]["token"]
            ],					
			'multipart'=>[
				[
					'name'=>'produk_id',
					'contents'=>3,
				],
				[
					'name'=>'objek_id',
					'contents'=>'c4cc9183-9e08-4c27-b2f2-a5b143e86a26',
				],
				[
					'name'=>'judul',
					'contents'=>'Judul',
				],
				[
					'name'=>'is_anonymous',
					'contents'=>'0',
				],
				[
					'name'=>'konten_diskusi',
					'contents'=>'Konten',
				],
				[
					'name'=>'nama_objek',
					'contents'=>'nama_objek',
				],
				[
					'name'=>'link_terkait',
					'contents'=>'',
				],
				[
					'name'=>'release_date',
					'contents'=>'2020-10-10 01:00:00',
				],
			],
		], 200, 
		[
              'success' => true,                
        ],
		"\n\t\t\diskusi/submit_cerita with release date Passed");
    }
	
	public function testSubmitCeritaSuksesWithInvalidReleaseDateTestShouldGiveErrorResponse() {
        $auth = $this->doLogin();
		if(!$auth) die('testSubmitCeritaSuksesWithInvalidReleaseDateTestShouldGiveErrorResponse : Login gagal');
		
		$this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/submit_cerita', [		
			"headers" => [				
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ],
					
			'multipart'=>[
				[
					'name'=>'produk_id',
					'contents'=>3,
				],
				[
					'name'=>'objek_id',
					'contents'=>'c4cc9183-9e08-4c27-b2f2-a5b143e86a26',
				],
				[
					'name'=>'judul',
					'contents'=>'Judul',
				],
				[
					'name'=>'is_anonymous',
					'contents'=>'0',
				],
				[
					'name'=>'konten_diskusi',
					'contents'=>'Konten',
				],
				[
					'name'=>'nama_objek',
					'contents'=>'nama_objek',
				],
				[
					'name'=>'link_terkait',
					'contents'=>'',
				],
				[
					'name'=>'release_date',
					'contents'=>'2020-10-10',
				],
			],
		], 460, 
		[
              'success' => false,                
        ],
		"\n\t\t\diskusi/submit_cerita with invalid release date Passed");
    }
	
	public function testEditCeritaSuksesWithoutReleaseDateTestShouldGiveErrorResponse() {
        $auth = $this->doLogin();
		if(!$auth) die('testEditCeritaSuksesWithoutReleaseDateTestShouldGiveErrorResponse : Login gagal');
				
		$this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/edit_cerita/' . self::$cerita_id, [		
			"headers" => [
				"Content-Type" => "application/json",
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ]
		], 460, 
		[
                'success' => false,
                "message" => "Validation Errors"
        ],
		"\n\t\t\diskusi/edit_cerita without release date Passed");
    }
	
	public function testEditCeritaSuksesWithoutReleaseDateTestShouldGiveSuccessResponse() {
        $auth = $this->doLogin();
		if(!$auth) die('testEditCeritaSuksesWithoutReleaseDateTestShouldGiveSuccessResponse : Login gagal');
				
		$this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/edit_cerita/' . self::$cerita_id, [		
			"headers" => [				
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ],
					
			'multipart'=>[
				[
					'name'=>'produk_id',
					'contents'=>3,
				],
				[
					'name'=>'objek_id',
					'contents'=>'c4cc9183-9e08-4c27-b2f2-a5b143e86a26',
				],
				[
					'name'=>'judul',
					'contents'=>'Judul',
				],
				[
					'name'=>'is_anonymous',
					'contents'=>'0',
				],
				[
					'name'=>'konten_diskusi',
					'contents'=>'Konten',
				],
				[
					'name'=>'nama_objek',
					'contents'=>'nama_objek',
				],
				[
					'name'=>'link_terkait',
					'contents'=>'',
				],
				[
					'name'=>'release_date',
					'contents'=>'2020-10-10 01:00:00',
				],
			],
		], 200, 
		[
              'success' => true,                
        ],
		"\n\t\t\diskusi/edit_cerita with release date Passed");
    }
	
	public function testEditCeritaSuksesWithInvalidReleaseDateTestShouldGiveErrorResponse() {
        $auth = $this->doLogin();
		if(!$auth) die('testEditCeritaSuksesWithInvalidReleaseDateTestShouldGiveErrorResponse : Login gagal');
		
		$this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/edit_cerita/' . self::$cerita_id, [		
			"headers" => [				
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ],
					
			'multipart'=>[
				[
					'name'=>'produk_id',
					'contents'=>3,
				],
				[
					'name'=>'objek_id',
					'contents'=>'c4cc9183-9e08-4c27-b2f2-a5b143e86a26',
				],
				[
					'name'=>'judul',
					'contents'=>'Judul',
				],
				[
					'name'=>'is_anonymous',
					'contents'=>'0',
				],
				[
					'name'=>'konten_diskusi',
					'contents'=>'Konten',
				],
				[
					'name'=>'nama_objek',
					'contents'=>'nama_objek',
				],
				[
					'name'=>'link_terkait',
					'contents'=>'',
				],
				[
					'name'=>'release_date',
					'contents'=>'2020-10-10',
				],
			],
		], 460, 
		[
              'success' => false,                
        ],
		"\n\t\t\diskusi/edit_cerita with invalid release date Passed");
    }
	
	public function testSubmitDiskusiTestShouldGiveSuccessResponse() {
        $auth = $this->doLogin();
		if(!$auth) die('testSubmitDiskusiTestShouldGiveSuccessResponse : Login gagal');
		
		$this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/submit', [		
			"headers" => [				
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ],
					
			'multipart'=>[
				[
					'name'=>'produk_id',
					'contents'=>3,
				],
				[
					'name'=>'objek_id',
					'contents'=>'c4cc9183-9e08-4c27-b2f2-a5b143e86a26',
				],
				[
					'name'=>'judul',
					'contents'=>'Judul',
				],
				[
					'name'=>'is_anonymous',
					'contents'=>'0',
				],
				[
					'name'=>'konten_diskusi',
					'contents'=>'Konten',
				],
				[
					'name'=>'nama_objek',
					'contents'=>'nama_objek',
				],
				[
					'name'=>'link_terkait',
					'contents'=>'',
				],				
			],
		], 200, 
		[
              'success' => true,                
        ],
		"\n\t\t\diskusi/submit_diskusi Passed");
    }
	
	public function testEditCeritaWithoutReleaseDateTestShouldGiveSuccessResponse() {
        $auth = $this->doLogin();
		if(!$auth) die('testEditDiskusiWithoutReleaseDateTestShouldGiveSuccessResponse : Login gagal');					
		
		$this->doShouldGiveMustBeNumericResponse('POST', 'diskusi/edit_cerita/' . self::$cerita_id, [		
			"headers" => [				
                "Authorization" => "Bearer " . $auth["data"]["token"]
            ],				
			'multipart'=>[
				[
					'name'=>'produk_id',
					'contents'=>3,
				],
				[
					'name'=>'objek_id',
					'contents'=>'c4cc9183-9e08-4c27-b2f2-a5b143e86a26',
				],
				[
					'name'=>'judul',
					'contents'=>'Judul',
				],
				[
					'name'=>'is_anonymous',
					'contents'=>'0',
				],
				[
					'name'=>'konten_diskusi',
					'contents'=>'Konten',
				],
				[
					'name'=>'nama_objek',
					'contents'=>'nama_objek',
				],
				[
					'name'=>'link_terkait',
					'contents'=>'',
				],
				[
					'name'=>'release_date',
					'contents'=>'2020-10-10 01:00:00',
				],
			],
		], 200, 
		[
              'success' => true,                
        ],
		"\n\t\t\diskusi/edit_diskusi Passed");
    }
		
	
}

?>