OCRPageTest.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace Tests\Feature;
  3. use App\Filament\Pages\OCRRecordList;
  4. use App\Filament\Pages\OCRRecordView;
  5. use App\Filament\Pages\UploadExamPaper;
  6. use App\Models\OCRRecord;
  7. use App\Models\Student;
  8. use App\Models\User;
  9. use Illuminate\Foundation\Testing\RefreshDatabase;
  10. use Illuminate\Http\UploadedFile;
  11. use Illuminate\Support\Facades\Storage;
  12. use Livewire\Livewire;
  13. use Tests\TestCase;
  14. class OCRPageTest extends TestCase
  15. {
  16. use RefreshDatabase;
  17. protected function setUp(): void
  18. {
  19. parent::setUp();
  20. // Create an admin user if needed, or just a user for authentication
  21. $this->actingAs(User::factory()->create());
  22. }
  23. public function test_can_render_ocr_record_list_page()
  24. {
  25. Livewire::test(OCRRecordList::class)
  26. ->assertSuccessful();
  27. }
  28. public function test_can_render_upload_exam_paper_page()
  29. {
  30. Livewire::test(UploadExamPaper::class)
  31. ->assertSuccessful();
  32. }
  33. public function test_can_render_ocr_record_view_page()
  34. {
  35. // Create a dummy record
  36. $student = Student::factory()->create();
  37. $record = OCRRecord::create([
  38. 'id' => 'ocr_test_' . uniqid(),
  39. 'student_id' => $student->student_id,
  40. 'image_path' => 'test.jpg',
  41. 'image_filename' => 'test.jpg',
  42. 'status' => 'pending',
  43. ]);
  44. // Test the page with the record ID
  45. Livewire::test(OCRRecordView::class, ['recordId' => $record->id])
  46. ->assertSuccessful();
  47. }
  48. public function test_upload_exam_paper_flow()
  49. {
  50. Storage::fake('public');
  51. // Create teacher and student
  52. $teacher = \App\Models\Teacher::factory()->create();
  53. $student = \App\Models\Student::factory()->create([
  54. 'teacher_id' => $teacher->teacher_id
  55. ]);
  56. $file = UploadedFile::fake()->image('exam.jpg');
  57. Livewire::test(UploadExamPaper::class)
  58. ->set('selectedTeacherId', $teacher->teacher_id)
  59. ->set('selectedStudentId', $student->student_id)
  60. ->set('uploadedImage', $file)
  61. ->call('submitUpload')
  62. ->assertHasNoErrors();
  63. // Verify record created
  64. $this->assertDatabaseHas('ocr_records', [
  65. 'student_id' => $student->student_id,
  66. ]);
  67. }
  68. }