worker = Worker::create([ 'name' => 'Jane Smith', 'email' => 'jane@example.com', 'phone' => '+971500000001', 'password' => bcrypt('password'), 'status' => 'Available', 'nationality' => 'Ethiopian', 'age' => 28, 'salary' => 1500.00, 'availability' => 'Immediate', 'experience' => '2 Years', 'religion' => 'Christian', 'bio' => 'Experienced housemaid seeking employment.', ]); // Create an employer user $this->employer = User::create([ 'name' => 'John Employer', 'email' => 'employer_test@example.com', 'password' => bcrypt('password'), 'role' => 'employer', ]); // Create employer profile EmployerProfile::create([ 'user_id' => $this->employer->id, 'company_name' => 'John Ltd', 'phone' => '+971500000002', 'country' => 'United Arab Emirates', 'verification_status' => 'approved', 'language' => 'English', 'notifications' => true, ]); // Create a Job Post $this->jobPost = JobPost::create([ 'employer_id' => $this->employer->id, 'title' => 'Housekeeper', 'location' => 'Dubai', 'salary' => 1800, 'job_type' => 'full-time', 'status' => 'open', 'start_date' => '2026-08-01', 'description' => 'Test Job Description', 'requirements' => 'Test Requirements', ]); } /** * Test show conversation auto-creates JobApplication and passes it as a prop. */ public function test_show_conversation_auto_creates_application_and_passes_prop() { // Authenticate session session(['user' => (object)[ 'id' => $this->employer->id, 'name' => $this->employer->name, 'email' => $this->employer->email, 'role' => 'employer', 'subscription_status' => 'active', ]]); $conversation = Conversation::create([ 'employer_id' => $this->employer->id, 'worker_id' => $this->worker->id, ]); // Ensure no application exists initially $this->assertDatabaseMissing('job_applications', [ 'worker_id' => $this->worker->id, ]); $response = $this->actingAs($this->employer) ->get(route('employer.messages.show', ['id' => $conversation->id])); $response->assertStatus(200); // Verify JobApplication was auto-created in database $this->assertDatabaseHas('job_applications', [ 'worker_id' => $this->worker->id, 'status' => 'applied', ]); // Verify Inertia response has the 'application' prop $response->assertInertia(fn (Assert $page) => $page ->component('Employer/Messages/Show') ->has('application') ->where('application.status', 'applied') ->has('application.status_history') ); } }