recreate project
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\App\Controllers\Api;
|
||||
|
||||
use App\Controllers\Api\EmergencyContactController;
|
||||
use App\Models\ConfigurationModel;
|
||||
use App\Models\EmergencyContactModel;
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
|
||||
class TestableEmergencyContactController extends EmergencyContactController
|
||||
{
|
||||
public function setModels(EmergencyContactModel $model, ConfigurationModel $config): void
|
||||
{
|
||||
$this->emergencyContactModel = $model;
|
||||
$this->configModel = $config;
|
||||
}
|
||||
}
|
||||
|
||||
class EmergencyContactControllerTest extends CIUnitTestCase
|
||||
{
|
||||
private $controller;
|
||||
private $contactModel;
|
||||
private $configModel;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->contactModel = $this->createMock(EmergencyContactModel::class);
|
||||
$this->configModel = $this->createMock(ConfigurationModel::class);
|
||||
|
||||
$this->controller = new TestableEmergencyContactController();
|
||||
$this->controller->setModels($this->contactModel, $this->configModel);
|
||||
}
|
||||
|
||||
public function testIndexFiltersByParent()
|
||||
{
|
||||
$query = $this->makeRequest('GET', '/api/v1/emergency-contacts', ['parent_id' => 9]);
|
||||
$this->controller->setRequest($query);
|
||||
|
||||
$this->configModel->method('getConfig')->willReturnMap([
|
||||
['school_year', '2024-2025'],
|
||||
['semester', 'Fall'],
|
||||
]);
|
||||
|
||||
$this->contactModel->method('where')->willReturnSelf();
|
||||
$this->contactModel->method('findAll')->willReturn([
|
||||
['id' => 1, 'parent_id' => 9, 'cellphone' => '5551234'],
|
||||
]);
|
||||
|
||||
$response = $this->controller->index();
|
||||
$this->assertTrue($response['status']);
|
||||
$this->assertCount(1, $response['data']);
|
||||
}
|
||||
|
||||
public function testShowReturnsNotFound()
|
||||
{
|
||||
$this->contactModel->method('find')->with(5)->willReturn(null);
|
||||
|
||||
$response = $this->controller->show(5);
|
||||
$this->assertFalse($response['status']);
|
||||
$this->assertEquals(404, $response['code']);
|
||||
}
|
||||
|
||||
public function testCreateValidContact()
|
||||
{
|
||||
$payload = [
|
||||
'parent_id' => 5,
|
||||
'emergency_contact_name' => 'Hakim',
|
||||
'cellphone' => '555-1234',
|
||||
'relation' => 'Uncle',
|
||||
'school_year' => '2024-2025',
|
||||
'semester' => 'Fall',
|
||||
];
|
||||
$req = $this->makeRequest('POST', '/api/v1/emergency-contacts', $payload);
|
||||
$this->controller->setRequest($req);
|
||||
|
||||
$this->configModel->method('getConfig')->willReturnMap([
|
||||
['school_year', '2024-2025'],
|
||||
['semester', 'Fall'],
|
||||
]);
|
||||
|
||||
$this->contactModel->method('insert')->willReturn(99);
|
||||
$this->contactModel->method('find')->with(99)->willReturn([
|
||||
'id' => 99,
|
||||
'emergency_contact_name' => 'Hakim',
|
||||
]);
|
||||
|
||||
$response = $this->controller->create();
|
||||
$this->assertTrue($response['status']);
|
||||
$this->assertEquals('Emergency contact created successfully', $response['message']);
|
||||
$this->assertEquals(99, $response['data']['id']);
|
||||
}
|
||||
|
||||
public function testCreateInvalidPayload()
|
||||
{
|
||||
$req = $this->makeRequest('POST', '/api/v1/emergency-contacts', []);
|
||||
$this->controller->setRequest($req);
|
||||
|
||||
$response = $this->controller->create();
|
||||
$this->assertFalse($response['status']);
|
||||
$this->assertEquals(422, $response['code']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user