10-04-2026
This commit is contained in:
parent
4d6b4930b2
commit
4bb89aad8c
836 changed files with 52961 additions and 5950 deletions
145
tests/Feature/ContactFormTest.php
Normal file
145
tests/Feature/ContactFormTest.php
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Acme\ContactForm\ContactFormService;
|
||||
use App\Livewire\Web\Components\Sections\ImmobilienContactForm;
|
||||
use App\Livewire\Web\Components\Ui\ContactForm;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Livewire\Livewire;
|
||||
|
||||
it('contact page loads with contact form component', function () {
|
||||
$this->get('/contact')
|
||||
->assertSuccessful()
|
||||
->assertSeeLivewire(ContactForm::class);
|
||||
});
|
||||
|
||||
it('contact form renders with privacy checkbox', function () {
|
||||
Livewire::test(ContactForm::class)
|
||||
->assertSee('Datenschutzerklärung');
|
||||
});
|
||||
|
||||
it('contact form validates required fields', function () {
|
||||
Livewire::test(ContactForm::class)
|
||||
->call('submit')
|
||||
->assertHasErrors(['firstName', 'lastName', 'email', 'subject', 'message', 'privacy']);
|
||||
});
|
||||
|
||||
it('contact form requires privacy acceptance', function () {
|
||||
Livewire::test(ContactForm::class)
|
||||
->set('firstName', 'Max')
|
||||
->set('lastName', 'Mustermann')
|
||||
->set('email', 'max@example.com')
|
||||
->set('subject', 'Allgemein')
|
||||
->set('message', 'Testnachricht')
|
||||
->set('privacy', false)
|
||||
->call('submit')
|
||||
->assertHasErrors(['privacy']);
|
||||
});
|
||||
|
||||
it('contact form sends email on valid submission', function () {
|
||||
Mail::fake();
|
||||
|
||||
$service = $this->mock(ContactFormService::class);
|
||||
$service->shouldReceive('handle')->once();
|
||||
|
||||
Livewire::test(ContactForm::class)
|
||||
->set('firstName', 'Max')
|
||||
->set('lastName', 'Mustermann')
|
||||
->set('email', 'max@example.com')
|
||||
->set('subject', 'Allgemein')
|
||||
->set('message', 'Testnachricht für das Kontaktformular')
|
||||
->set('privacy', true)
|
||||
->call('submit')
|
||||
->assertHasNoErrors()
|
||||
->assertSet('success', true);
|
||||
});
|
||||
|
||||
it('contact form resets after successful submission', function () {
|
||||
Mail::fake();
|
||||
|
||||
$service = $this->mock(ContactFormService::class);
|
||||
$service->shouldReceive('handle')->once();
|
||||
|
||||
Livewire::test(ContactForm::class)
|
||||
->set('firstName', 'Max')
|
||||
->set('lastName', 'Mustermann')
|
||||
->set('email', 'max@example.com')
|
||||
->set('subject', 'Allgemein')
|
||||
->set('message', 'Testnachricht')
|
||||
->set('privacy', true)
|
||||
->call('submit')
|
||||
->assertSet('firstName', '')
|
||||
->assertSet('lastName', '')
|
||||
->assertSet('email', '')
|
||||
->assertSet('message', '')
|
||||
->assertSet('privacy', false);
|
||||
});
|
||||
|
||||
it('contact form blocks honeypot spam', function () {
|
||||
Livewire::test(ContactForm::class)
|
||||
->set('firstName', 'Max')
|
||||
->set('lastName', 'Mustermann')
|
||||
->set('email', 'max@example.com')
|
||||
->set('subject', 'Allgemein')
|
||||
->set('message', 'Testnachricht')
|
||||
->set('privacy', true)
|
||||
->set('website', 'https://spam.com')
|
||||
->call('submit')
|
||||
->assertHasErrors(['website']);
|
||||
});
|
||||
|
||||
it('immobilien contact form renders with privacy checkbox', function () {
|
||||
Livewire::test(ImmobilienContactForm::class, [
|
||||
'projectSlug' => 'test-projekt',
|
||||
'projectTitle' => 'Testprojekt Dubai',
|
||||
'interestOptions' => ['kauf' => 'Kauf', 'miete' => 'Miete'],
|
||||
])
|
||||
->assertSee('Datenschutzerklärung')
|
||||
->assertSee('Exposé');
|
||||
});
|
||||
|
||||
it('immobilien contact form validates required fields', function () {
|
||||
Livewire::test(ImmobilienContactForm::class)
|
||||
->call('submit')
|
||||
->assertHasErrors(['firstName', 'lastName', 'email', 'privacy']);
|
||||
});
|
||||
|
||||
it('immobilien contact form requires privacy acceptance', function () {
|
||||
Livewire::test(ImmobilienContactForm::class)
|
||||
->set('firstName', 'Max')
|
||||
->set('lastName', 'Mustermann')
|
||||
->set('email', 'max@example.com')
|
||||
->set('privacy', false)
|
||||
->call('submit')
|
||||
->assertHasErrors(['privacy']);
|
||||
});
|
||||
|
||||
it('immobilien contact form sends inquiry on valid submission', function () {
|
||||
Mail::fake();
|
||||
|
||||
$service = $this->mock(ContactFormService::class);
|
||||
$service->shouldReceive('handle')->once();
|
||||
|
||||
Livewire::test(ImmobilienContactForm::class, [
|
||||
'projectSlug' => 'azizi-creek-views-4',
|
||||
'projectTitle' => 'Creek Views 4',
|
||||
'interestOptions' => ['kauf' => 'Kauf'],
|
||||
])
|
||||
->set('firstName', 'Max')
|
||||
->set('lastName', 'Mustermann')
|
||||
->set('email', 'max@example.com')
|
||||
->set('phone', '+49 123 456789')
|
||||
->set('interest', 'kauf')
|
||||
->set('message', 'Ich interessiere mich für diese Immobilie.')
|
||||
->set('privacy', true)
|
||||
->call('submit')
|
||||
->assertHasNoErrors()
|
||||
->assertSet('success', true);
|
||||
});
|
||||
|
||||
it('immobilien show page renders livewire contact form component', function () {
|
||||
$this->get('/immobilien/azizi-creek-views-4')
|
||||
->assertSuccessful()
|
||||
->assertSeeLivewire(ImmobilienContactForm::class);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue