call('get', 'api/patient'); $result->assertStatus(200); $result->assertJSONFragment([ 'status' => 'success', ]); } public function testIndexWithWrongParam() { // Return Diharapkan adalah 200 dan data adalah [] $result = $this->call('get', 'api/patient', [ 'Name' => 'Ngawur' ]); $result->assertStatus(200); $result->assertJSONFragment([ 'status' => 'success', 'data' => [] ]); } public function testIndexWithCorrectParam() { // Return Diharapkan adalah 200 dan data tidak null $result = $this->call('get', 'api/patient', [ 'Name' => 'Dummy' ]); $result->assertStatus(200); $json = $result->getJSON(); $data = json_decode($json, true); $this->assertEquals('success', $data['status']); $this->assertNotNull($data['data']); // data tidak null $this->assertIsArray($data['data']); // data berupa array } public function testShowNotFound() { $result = $this->call('get', 'api/patient/999999'); // ID yang tidak ada $result->assertStatus(200); $json = $result->getJSON(); // bentuk string JSON $json = json_decode($json, true); // $this->assertSame('Patient with ID 999999 not found.', $json['message']); $result->assertJSONFragment([ 'status' => 'success', 'data' => [] ]); } public function testShowFound() { $result = $this->call('get', 'api/patient/1'); // ID yang tidak ada $result->assertStatus(200); $json = $result->getJSON(); $data = json_decode($json, true); $this->assertEquals('success', $data['status']); $this->assertNotNull($data['data']); // data tidak null $this->assertIsArray($data['data']); // data berupa array } public function testDeleteFail() { $payload = [ 'InternalPID' => 9999999 ]; $result = $this->withBodyFormat('json') ->withBody(json_encode($payload)) ->delete('api/patient'); $result->assertStatus(404); $json = $result->getJSON(); // bentuk string JSON $json = json_decode($json, true); $result->assertJSONFragment([ 'status' => 404, 'error' => 404 ]); } public function testDeleteSuccess() { $payload = [ 'InternalPID' => 2 ]; $result = $this->withBodyFormat('json') ->withBody(json_encode($payload)) ->delete('api/patient'); $result->assertStatus(200); $json = $result->getJSON(); // bentuk string JSON $json = json_decode($json, true); // $this->assertSame('Patient with ID 999999 not found.', $json['message']); $result->assertJSONFragment([ 'status' => 'success' ]); } public function testCreatePatientValidationFail() { // error 400 yg diharapkan $payload = ['Name' => 'Ngawur']; $result = $this->withBodyFormat('json') ->call('post', 'api/patient', $payload); $result->assertStatus(400); $result->assertJSONFragment([ 'status' => 'error' ]); // Kondisi Jika PatiD Sama $payload = [ "PatientID"=> "SMAJ1", "AlternatePID"=> "ALT001234", "Prefix"=> "Mr.", "NameFirst"=> "Budi", "NameMiddle"=> "Santoso", "NameMaiden"=> "Kiki", "NameLast"=> "Wijaya", "Suffix"=> "S.kom", "NameAlias"=> "Bud", "Gender"=> "1", ]; $result = $this->withBodyFormat('json') ->call('post', 'api/patient', $payload); $result->assertStatus(400); $result->assertJSONFragment([ 'status' => 'error', "message" => "Validation failed (patient)", ]); } // Wajib Diganti ya payloadnya kalau mau dijalankan public function testCreateSuccess() { $payload = [ "PatientID"=> "SMAJ6", //Wajib Ganti "AlternatePID"=> "P0234", "Prefix"=> "Mr.", "NameFirst"=> "Budi", "NameMiddle"=> "Santoso", "NameMaiden"=> "Kiki", "NameLast"=> "Wijaya", "Suffix"=> "S.kom", "NameAlias"=> "Bud", "Gender"=> "1", 'EmailAddress1' => 'kaka@gmail.a1com', //Wajib Ganti 'Identity' => [ "IdentifierType" => "KTP", "Identifier" => "317409050590100" //Wajib Ganti ] ]; // $result = $this->call('post', 'api/patient', $payload); $result = $this->withBodyFormat('json') ->call('post', 'api/patient', $payload); $result->assertStatus(201); $result->assertJSONFragment([ 'status' => 'success', ]); } public function testUpdateFail() { $payload = []; $result = $this->withBodyFormat('json') ->call('patch', 'api/patient', $payload); $result->assertStatus(400); $payload = [ "InternalPID"=> 100, "PatientID"=> "SMAJ50", //Wajib Ganti "AlternatePID"=> "P0234", "Prefix"=> "Mr.", "NameFirst"=> "Budi", "NameMiddle"=> "Santoso", "NameMaiden"=> "Kiki", "NameLast"=> "Wijaya", "Suffix"=> "S.kom", "NameAlias"=> "Bud", "Gender"=> "1", 'EmailAddress1' => 'kaka@gmail.a1com', //Wajib Ganti 'Identity' => [ "IdentifierType" => "KTP", "Identifier" => "317409050590100" //Wajib Ganti ] ]; $result = $this->withBodyFormat('json') ->call('patch', 'api/patient', $payload); $result->assertStatus(404); $payload = [ "PatientID"=> "SMAJ50", //Wajib Ganti "AlternatePID"=> "P0234", "Prefix"=> "Mr.", "NameFirst"=> "Budi", "NameMiddle"=> "Santoso", "NameMaiden"=> "Kiki", "NameLast"=> "Wijaya", "Suffix"=> "S.kom", "NameAlias"=> "Bud", "Gender"=> "1", 'EmailAddress1' => 'kaka@gmail.a1com', //Wajib Ganti 'Identity' => [ "IdentifierType" => "KTP", "Identifier" => "317409050590100" //Wajib Ganti ] ]; $result = $this->withBodyFormat('json') ->call('patch', 'api/patient', $payload); $result->assertStatus(500); } public function testUpdateSuccess() { $payload = [ "InternalPID"=> 1, //Wajib Ganti "PatientID"=> "SMAJ50", "AlternatePID"=> "asasasa", "Prefix"=> "Mr.", "NameFirst"=> "Budi", "NameMiddle"=> "Santoso", "NameMaiden"=> "Kiki", "NameLast"=> "Wijaya", "Suffix"=> "S.kom", "NameAlias"=> "Bud", "Gender"=> "1", 'EmailAddress1' => 'kaka@gmail.a1com', 'Identity' => [ "IdentifierType" => "KTP", "Identifier" => "317409050590100" ] ]; $result = $this->withBodyFormat('json') ->call('patch', 'api/patient', $payload); $result->assertStatus(200); } }