68 lines
2.0 KiB
PHP
68 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Services\AttendanceTracking;
|
|
|
|
use App\Models\AttendanceData;
|
|
use App\Models\Student;
|
|
use App\Models\StudentClass;
|
|
use App\Services\AttendanceViolationStudentResolverService;
|
|
use Mockery;
|
|
use Tests\TestCase;
|
|
|
|
class AttendanceViolationStudentResolverServiceTest extends TestCase
|
|
{
|
|
protected function tearDown(): void
|
|
{
|
|
Mockery::close();
|
|
parent::tearDown();
|
|
}
|
|
|
|
public function test_ensure_attendance_student_exists_keeps_numeric_student(): void
|
|
{
|
|
$student = Mockery::mock(Student::class);
|
|
$studentClass = Mockery::mock(StudentClass::class);
|
|
$attendanceData = Mockery::mock(AttendanceData::class);
|
|
|
|
$service = new AttendanceViolationStudentResolverService($student, $studentClass, $attendanceData);
|
|
|
|
$students = [];
|
|
$studentCodeToId = [];
|
|
$existingIds = [];
|
|
|
|
$sid = $service->ensureAttendanceStudentExists(
|
|
$students,
|
|
$studentCodeToId,
|
|
$existingIds,
|
|
123
|
|
);
|
|
|
|
$this->assertSame(123, $sid);
|
|
$this->assertCount(1, $students);
|
|
$this->assertSame(123, $students[0]['id']);
|
|
}
|
|
|
|
public function test_ensure_attendance_student_exists_creates_placeholder_for_code(): void
|
|
{
|
|
$student = Mockery::mock(Student::class);
|
|
$studentClass = Mockery::mock(StudentClass::class);
|
|
$attendanceData = Mockery::mock(AttendanceData::class);
|
|
|
|
$service = new AttendanceViolationStudentResolverService($student, $studentClass, $attendanceData);
|
|
|
|
$students = [];
|
|
$studentCodeToId = [];
|
|
$existingIds = [];
|
|
|
|
$sid = $service->ensureAttendanceStudentExists(
|
|
$students,
|
|
$studentCodeToId,
|
|
$existingIds,
|
|
'SCH-001'
|
|
);
|
|
|
|
$this->assertNotNull($sid);
|
|
$this->assertCount(1, $students);
|
|
$this->assertSame('SCH-001', $students[0]['school_id']);
|
|
$this->assertArrayHasKey('SCH-001', $studentCodeToId);
|
|
}
|
|
} |