Immobilien site 11-05-2026
This commit is contained in:
parent
e198d842ce
commit
6799325f71
28 changed files with 16189 additions and 809 deletions
|
|
@ -50,7 +50,8 @@ test('getFormattedPrice returns formatted AED with EUR and USD', function () {
|
|||
->toContain('AED')
|
||||
->toContain('EUR')
|
||||
->toContain('USD')
|
||||
->toContain('1.125.000');
|
||||
->toContain('1.125.000')
|
||||
->toContain('whitespace-nowrap');
|
||||
});
|
||||
|
||||
test('getFormattedPrice returns empty string when no price', function () {
|
||||
|
|
|
|||
|
|
@ -99,6 +99,28 @@ it('immobilien contact form renders with privacy checkbox', function () {
|
|||
->assertSee('Exposé');
|
||||
});
|
||||
|
||||
it('immobilien contact form can hide interest selection', function () {
|
||||
Livewire::test(ImmobilienContactForm::class, [
|
||||
'projectSlug' => 'test-projekt',
|
||||
'projectTitle' => 'Testprojekt Dubai',
|
||||
'interestOptions' => ['kauf' => 'Kauf', 'miete' => 'Miete'],
|
||||
'showInterest' => false,
|
||||
'submitLabel' => 'Anfrage absenden',
|
||||
'syncFromAlpineProject' => true,
|
||||
])
|
||||
->assertDontSee('Bitte wählen')
|
||||
->assertDontSee('Kauf')
|
||||
->assertSee('Anfrage absenden')
|
||||
->assertSee('Datenschutzerklärung');
|
||||
});
|
||||
|
||||
it('immobilien contact form updates selected project from modal event', function () {
|
||||
Livewire::test(ImmobilienContactForm::class)
|
||||
->dispatch('azizi-project-selected', slug: 'azizi-amir', title: 'Azizi Amir')
|
||||
->assertSet('projectSlug', 'azizi-amir')
|
||||
->assertSet('projectTitle', 'Azizi Amir');
|
||||
});
|
||||
|
||||
it('immobilien contact form validates required fields', function () {
|
||||
Livewire::test(ImmobilienContactForm::class)
|
||||
->call('submit')
|
||||
|
|
@ -119,7 +141,17 @@ it('immobilien contact form sends inquiry on valid submission', function () {
|
|||
Mail::fake();
|
||||
|
||||
$service = $this->mock(ContactFormService::class);
|
||||
$service->shouldReceive('handle')->once();
|
||||
$service
|
||||
->shouldReceive('handle')
|
||||
->once()
|
||||
->withArgs(function (array $payload, string $subject, string $source): bool {
|
||||
expect($payload['project'])->toBe('azizi-creek-views-4')
|
||||
->and($payload['project_title'])->toBe('Creek Views 4')
|
||||
->and($subject)->toBe('Immobilien-Anfrage: Creek Views 4')
|
||||
->and($source)->toBe('immobilien-contact-form');
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
Livewire::test(ImmobilienContactForm::class, [
|
||||
'projectSlug' => 'azizi-creek-views-4',
|
||||
|
|
|
|||
|
|
@ -5,44 +5,47 @@ declare(strict_types=1);
|
|||
it('immobilien index page loads successfully', function () {
|
||||
$this->get('/immobilien')
|
||||
->assertSuccessful()
|
||||
->assertSee('Creek Views 4');
|
||||
->assertSee('Creek Views 4')
|
||||
->assertSee('/immobilien/azizi-creek-views-4')
|
||||
->assertDontSee('/dev/immobilien-azizi/azizi-creek-views-4')
|
||||
->assertDontSee('Projektquelle');
|
||||
});
|
||||
|
||||
it('immobilien page shows new hero section', function () {
|
||||
$this->get('/immobilien')
|
||||
->assertSuccessful()
|
||||
->assertSee('globale')
|
||||
->assertSee('Dynamik');
|
||||
->assertSee('63 Azizi-Projekte')
|
||||
->assertSee('Persönlich eingeordnet');
|
||||
});
|
||||
|
||||
it('immobilien page shows warum dubai section', function () {
|
||||
$this->get('/immobilien')
|
||||
->assertSuccessful()
|
||||
->assertSee('Investment in Dubai')
|
||||
->assertSee('0 % Steuern')
|
||||
->assertSee('Warum Dubai für Investoren relevant bleibt')
|
||||
->assertSee('0 % Einkommensteuer')
|
||||
->assertSee('Golden Visa');
|
||||
});
|
||||
|
||||
it('immobilien page shows kaufprozess section', function () {
|
||||
$this->get('/immobilien')
|
||||
->assertSuccessful()
|
||||
->assertSee('Kaufprozess')
|
||||
->assertSee('Reservierung')
|
||||
->assertSee('Finaler Kaufvertrag');
|
||||
->assertSee('Der Kaufprozess mit B2in')
|
||||
->assertSee('Strategie klären')
|
||||
->assertSee('Kauf begleiten');
|
||||
});
|
||||
|
||||
it('immobilien page shows bruecke section', function () {
|
||||
$this->get('/immobilien')
|
||||
->assertSuccessful()
|
||||
->assertSee('Meine Aufgabe')
|
||||
->assertSee('Ihr B2in-Vorteil');
|
||||
->assertSee('Marcel sortiert den Markt')
|
||||
->assertSee('Kuratiert statt katalogisiert');
|
||||
});
|
||||
|
||||
it('immobilien page shows mindset check section', function () {
|
||||
$this->get('/immobilien')
|
||||
->assertSuccessful()
|
||||
->assertSee('Investor')
|
||||
->assertSee('Der Schritt ist kleiner');
|
||||
->assertSee('Passt Dubai zu Ihrer Investmentstrategie?')
|
||||
->assertSee('Dubai als Wachstumsentscheidung');
|
||||
});
|
||||
|
||||
it('immobilien show page loads for valid slug', function () {
|
||||
|
|
@ -50,8 +53,34 @@ it('immobilien show page loads for valid slug', function () {
|
|||
->assertSuccessful()
|
||||
->assertSee('Creek Views 4')
|
||||
->assertSee('Al Jaddaf, Dubai')
|
||||
->assertSee('Investment-Einordnung')
|
||||
->assertSee('Verfügbarkeit anfragen')
|
||||
->assertDontSee('Projektquelle');
|
||||
});
|
||||
|
||||
it('immobilien show page can reveal project source for internal review via query parameter', function () {
|
||||
$this->get('/immobilien/azizi-creek-views-4?dev=1')
|
||||
->assertSuccessful()
|
||||
->assertSee('Projektquelle')
|
||||
->assertSee('Azizi-Projektseite');
|
||||
});
|
||||
|
||||
it('immobilien show page includes the richer modal content for project pages', function () {
|
||||
$this->get('/immobilien/azizi-riviera')
|
||||
->assertSuccessful()
|
||||
->assertSee('Azizi Riviera')
|
||||
->assertSee('Aus dem offiziellen Azizi-Exposé')
|
||||
->assertSee('Azizi Riviera verbindet Stadt- und Wasserlage')
|
||||
->assertSee('Galerie')
|
||||
->assertSee('Starkes Investment');
|
||||
->assertSee('official-website/02_00_Hero_9b3cfa30.jpg')
|
||||
->assertSeeLivewire(App\Livewire\Web\Components\Sections\ImmobilienContactForm::class);
|
||||
});
|
||||
|
||||
it('immobilien index can reveal project source for internal review via query parameter', function () {
|
||||
$this->get('/immobilien?dev=1')
|
||||
->assertSuccessful()
|
||||
->assertSee('Projektquelle')
|
||||
->assertSee('/immobilien/azizi-creek-views-4?dev=1');
|
||||
});
|
||||
|
||||
it('immobilien show page returns 404 for invalid slug', function () {
|
||||
|
|
@ -67,22 +96,38 @@ it('ecosystem redirects to netzwerk via partner', function () {
|
|||
it('dev azizi immobilien page shows curated projects', function () {
|
||||
$this->get('/dev/immobilien-azizi')
|
||||
->assertSuccessful()
|
||||
->assertSee('19 Azizi-Leitprojekte')
|
||||
->assertSee('Burj Azizi')
|
||||
->assertSee('Sofort verfuegbar')
|
||||
->assertSee('Ready Rendite')
|
||||
->assertSee('63 Azizi-Projekte')
|
||||
->assertSee('Azizi Creek Views 4')
|
||||
->assertSee('Sofort verfügbar')
|
||||
->assertSee('Sofort vermietbar')
|
||||
->assertSee('Kategorien')
|
||||
->assertSee('Stadtteile')
|
||||
->assertSee('Al Furjan')
|
||||
->assertSee('Zurück zum Anfang der Projektübersicht')
|
||||
->assertSee('Dubai als Wachstumsentscheidung')
|
||||
->assertSee('Dubai braucht Entscheidungskraft')
|
||||
->assertSee('Projektseite öffnen')
|
||||
->assertSee('Projektquelle')
|
||||
->assertSee('Projektfenster schließen')
|
||||
->assertSee('Direkte Anfrage')
|
||||
->assertSee('Anfrage absenden')
|
||||
->assertSee('EUR')
|
||||
->assertSee('USD')
|
||||
->assertSee('Azizi Milan')
|
||||
->assertSee('Typ')
|
||||
->assertSee('STUDIO, 1 & 2 BEDROOMS', false)
|
||||
->assertSee('Azizi Vista')
|
||||
->assertSee('Azizi Arian')
|
||||
->assertSee('Stadtteile aus der Azizi Folding Map');
|
||||
->assertSee('Stadtteile, in denen Azizi entwickelt')
|
||||
->assertSeeLivewire(App\Livewire\Web\Components\Sections\ImmobilienContactForm::class);
|
||||
});
|
||||
|
||||
it('dev azizi project detail page loads for valid slug', function () {
|
||||
$this->get('/dev/immobilien-azizi/burj-azizi')
|
||||
$this->get('/dev/immobilien-azizi/azizi-creek-views-4')
|
||||
->assertSuccessful()
|
||||
->assertSee('Burj Azizi')
|
||||
->assertSee('Sheikh Zayed Road')
|
||||
->assertSee('Investment Case')
|
||||
->assertSee('Azizi Creek Views 4')
|
||||
->assertSee('Al Jaddaf')
|
||||
->assertSee('Investment-Einordnung')
|
||||
->assertSee('Azizi-Projektseite');
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,13 @@ test('theme_image_url returns legacy path for slash-separated theme paths', func
|
|||
expect($url)->toContain('img/assets/b2in/example.jpg');
|
||||
});
|
||||
|
||||
test('theme_image_url returns public storage path for stored real estate images', function () {
|
||||
expect(theme_image_url('immobile/dubai/azizi-ruby/overview-thumbnail/example.jpg'))
|
||||
->toContain('storage/immobile/dubai/azizi-ruby/overview-thumbnail/example.jpg')
|
||||
->and(theme_image_url('storage/immobile/dubai/azizi-ruby/overview-thumbnail/example.jpg'))
|
||||
->toContain('storage/immobile/dubai/azizi-ruby/overview-thumbnail/example.jpg');
|
||||
});
|
||||
|
||||
test('theme_image_url passes through absolute http urls', function () {
|
||||
$url = theme_image_url('https://example.org/x.webp');
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue