53 lines
2.1 KiB
PHP
53 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\AcademyCourse;
|
|
use App\Models\AcademyCourseLesson;
|
|
use App\Models\AcademyCourseSection;
|
|
use App\Models\AcademyLesson;
|
|
|
|
it('syncs the foundations course idempotently and skips missing lessons', function (): void {
|
|
AcademyLesson::query()->create([
|
|
'title' => 'What Is AI-Assisted Digital Art',
|
|
'slug' => 'what-is-ai-assisted-digital-art',
|
|
'content' => 'Intro lesson body',
|
|
'difficulty' => 'beginner',
|
|
'access_level' => 'free',
|
|
'lesson_type' => 'article',
|
|
'active' => true,
|
|
'published_at' => now()->subMinute(),
|
|
]);
|
|
|
|
AcademyLesson::query()->create([
|
|
'title' => 'Prompting Basics For Skinbase Creators',
|
|
'slug' => 'prompting-basics-for-skinbase-creators',
|
|
'content' => 'Prompt basics body',
|
|
'difficulty' => 'beginner',
|
|
'access_level' => 'free',
|
|
'lesson_type' => 'article',
|
|
'active' => true,
|
|
'published_at' => now()->subMinute(),
|
|
]);
|
|
|
|
$this->artisan('academy:courses:sync-foundations')
|
|
->expectsOutputToContain('Skipped missing lesson [ai-ethics-and-skinbase-upload-rules].')
|
|
->expectsOutput('AI-Assisted Digital Art Foundations course synced.')
|
|
->assertSuccessful();
|
|
|
|
$course = AcademyCourse::query()->where('slug', 'ai-assisted-digital-art-foundations')->first();
|
|
|
|
expect($course)->not->toBeNull()
|
|
->and($course?->status)->toBe('published')
|
|
->and($course?->is_featured)->toBeTrue();
|
|
|
|
expect(AcademyCourseSection::query()->where('course_id', $course->id)->count())->toBe(4);
|
|
expect(AcademyCourseLesson::query()->where('course_id', $course->id)->count())->toBe(2);
|
|
expect($course->fresh()->lessons_count_cache)->toBe(2);
|
|
|
|
$this->artisan('academy:courses:sync-foundations')->assertSuccessful();
|
|
|
|
expect(AcademyCourse::query()->where('slug', 'ai-assisted-digital-art-foundations')->count())->toBe(1);
|
|
expect(AcademyCourseSection::query()->where('course_id', $course->id)->count())->toBe(4);
|
|
expect(AcademyCourseLesson::query()->where('course_id', $course->id)->count())->toBe(2);
|
|
}); |