create(['message' => 'WIN A 2026 ROLLS-ROYCE https://telegra.ph/win-123']); $clean = ContactMessage::factory()->create(['message' => 'Guten Tag, ich habe eine Frage zu Ihren Preisen.']); $customer = ContactMessage::factory()->create([ 'message' => 'Unser Logo auf https://beispiel-firma.de ist veraltet.', 'user_id' => User::factory()->create()->id, ]); $resolved = ContactMessage::factory()->resolved()->create(['message' => 'Alt: https://telegra.ph/alt']); $this->artisan('contact-messages:quarantine-spam') ->expectsOutputToContain('1 Anliegen als Spam markiert.') ->assertSuccessful(); expect($spam->refresh()->status)->toBe(ContactMessageStatus::Spam) ->and($spam->payload['spam_reason'])->toBe('link') ->and($clean->refresh()->status)->toBe(ContactMessageStatus::Open) ->and($customer->refresh()->status)->toBe(ContactMessageStatus::Open) ->and($resolved->refresh()->status)->toBe(ContactMessageStatus::Resolved); }); test('the dry run changes nothing', function () { /** @var TestCase $this */ $spam = ContactMessage::factory()->create(['message' => 'WIN A 2026 ROLLS-ROYCE https://telegra.ph/win-123']); $this->artisan('contact-messages:quarantine-spam', ['--dry-run' => true]) ->expectsOutputToContain('Probelauf: 1 Anliegen würden als Spam markiert.') ->assertSuccessful(); expect($spam->refresh()->status)->toBe(ContactMessageStatus::Open); });