chore: commit remaining workspace changes

This commit is contained in:
2026-05-08 21:51:29 +02:00
parent 8d108b8a76
commit ff96ef796e
97 changed files with 18020 additions and 2196 deletions

View File

@@ -0,0 +1,53 @@
<?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);
});