Files
James Griffin 2fb2ca392d
All checks were successful
CI / Coding Standards (push) Successful in 43s
CI / PHPStan (push) Successful in 52s
CI / Tests (PHP 8.1) (push) Successful in 47s
CI / Tests (PHP 8.2) (push) Successful in 49s
CI / Tests (PHP 8.3) (push) Successful in 37s
CI / No Debug Code (push) Successful in 2s
Restructure src/ and tests/ from package-by-type to package-by-domain
All classes are now organised by domain (Availability, Booking, Auth).
Each domain package contains its value object, repository, admin controller,
REST endpoint, and any shortcode pages under a matching sub-namespace.
Cross-cutting wiring (Plugin, AdminMenu, RestRegistrar, ShortcodeRegistrar,
Schema) lives at src/ root. Tests mirror the domain structure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 16:37:30 -03:00

69 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
namespace Unsupervised\Schedular\Tests\Unit\Booking;
use Unsupervised\Schedular\Booking\Lesson;
use Unsupervised\Schedular\Tests\Unit\TestCase;
class LessonTest extends TestCase
{
public function testStatusConstants(): void
{
self::assertSame('pending', Lesson::STATUS_PENDING);
self::assertSame('confirmed', Lesson::STATUS_CONFIRMED);
self::assertSame('cancelled', Lesson::STATUS_CANCELLED);
}
public function testValidStatusesContainsAllThree(): void
{
self::assertContains(Lesson::STATUS_PENDING, Lesson::VALID_STATUSES);
self::assertContains(Lesson::STATUS_CONFIRMED, Lesson::VALID_STATUSES);
self::assertContains(Lesson::STATUS_CANCELLED, Lesson::VALID_STATUSES);
self::assertCount(3, Lesson::VALID_STATUSES);
}
public function testConstructorDefaults(): void
{
$lesson = new Lesson(slotId: 1, studentId: 2, instructorId: 3);
self::assertSame(Lesson::STATUS_PENDING, $lesson->status);
self::assertNull($lesson->notes);
self::assertNull($lesson->id);
}
public function testFromRowMapsCorrectly(): void
{
$row = (object) [
'id' => '99',
'slot_id' => '10',
'student_id' => '20',
'instructor_id' => '30',
'status' => 'confirmed',
'notes' => 'Bring your guitar.',
];
$lesson = Lesson::fromRow($row);
self::assertSame(99, $lesson->id);
self::assertSame(10, $lesson->slotId);
self::assertSame(20, $lesson->studentId);
self::assertSame(30, $lesson->instructorId);
self::assertSame('confirmed', $lesson->status);
self::assertSame('Bring your guitar.', $lesson->notes);
}
public function testToArrayContainsExpectedKeys(): void
{
$lesson = new Lesson(1, 2, 3, Lesson::STATUS_PENDING, 'Note', 5);
$arr = $lesson->toArray();
self::assertArrayHasKey('id', $arr);
self::assertArrayHasKey('slot_id', $arr);
self::assertArrayHasKey('student_id', $arr);
self::assertArrayHasKey('instructor_id', $arr);
self::assertArrayHasKey('status', $arr);
self::assertArrayHasKey('notes', $arr);
}
}