seed(RolesAndPermissionsSeeder::class); }); function contactMessagesAdmin(): User { $admin = User::factory()->create(['is_active' => true]); $admin->assignRole('admin'); return $admin; } test('the contact queue lists open contact messages', function () { $message = ContactMessage::factory() ->topic(ContactMessageTopic::BugReport) ->create([ 'name' => 'Bernd Bug', 'email' => 'bernd@example.test', ]); Livewire::actingAs(contactMessagesAdmin()) ->test('admin.contact-messages.index') ->assertOk() ->assertSee('KT-'.$message->id) ->assertSee('Fehlermeldung') ->assertSee('Bernd Bug') ->assertSee('bernd@example.test'); }); test('resolved contact messages are hidden from the default open view', function () { ContactMessage::factory()->resolved()->create(['name' => 'Erledigte Person']); Livewire::actingAs(contactMessagesAdmin()) ->test('admin.contact-messages.index') ->assertOk() ->assertDontSee('Erledigte Person'); }); test('the contact queue can be filtered by topic', function () { ContactMessage::factory()->topic(ContactMessageTopic::Feedback)->create(['name' => 'Frieda Feedback']); ContactMessage::factory()->topic(ContactMessageTopic::BugReport)->create(['name' => 'Bernd Bug']); Livewire::actingAs(contactMessagesAdmin()) ->test('admin.contact-messages.index') ->set('topicFilter', 'feedback') ->assertSee('Frieda Feedback') ->assertDontSee('Bernd Bug'); }); test('an admin can resolve a contact message with a note', function () { $admin = contactMessagesAdmin(); $message = ContactMessage::factory()->create(); Livewire::actingAs($admin) ->test('admin.contact-messages.show', ['id' => $message->id]) ->set('adminNote', 'Per E-Mail beantwortet.') ->call('resolve') ->assertOk(); $message->refresh(); expect($message->status)->toBe(ContactMessageStatus::Resolved) ->and($message->admin_note)->toBe('Per E-Mail beantwortet.') ->and($message->resolved_by_user_id)->toBe($admin->id) ->and($message->resolved_at)->not->toBeNull(); }); test('an admin can reopen a resolved contact message', function () { $message = ContactMessage::factory()->resolved()->create(); Livewire::actingAs(contactMessagesAdmin()) ->test('admin.contact-messages.show', ['id' => $message->id]) ->call('reopen') ->assertOk(); $message->refresh(); expect($message->status)->toBe(ContactMessageStatus::Open) ->and($message->resolved_at)->toBeNull(); }); test('customers cannot access the contact queue', function () { /** @var TestCase $this */ $customer = User::factory()->create(['is_active' => true, 'email_verified_at' => now()]); $customer->assignRole('customer'); $this->actingAs($customer) ->get('https://pressekonto.test/admin/contact-messages') ->assertForbidden(); });