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); });