From 4c9dec42f2d189382b9164b31b3ca6153b0d3b29 Mon Sep 17 00:00:00 2001 From: HolgerHatGarKeineNode <123783602+HolgerHatGarKeineNode@users.noreply.github.com> Date: Thu, 25 Jun 2026 14:12:21 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20service=20disclaimer=20compon?= =?UTF-8?q?ent=20and=20Nostr=20validation=20links?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ➕ Introduced reusable `` component for better clarity and consistency on service pages. - 🔗 Added `njump` links for Nostr profile validation in service listings and landing pages. - 🧪 Included feature tests to verify disclaimer visibility and correct `njump` link rendering or omission for anonymous services. --- .../components/service-disclaimer.blade.php | 23 +++++++++++ .../views/livewire/services/index.blade.php | 10 +++++ .../livewire/services/landingpage.blade.php | 10 +++++ tests/Feature/ServiceDisclaimerTest.php | 38 +++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 resources/views/components/service-disclaimer.blade.php create mode 100644 tests/Feature/ServiceDisclaimerTest.php diff --git a/resources/views/components/service-disclaimer.blade.php b/resources/views/components/service-disclaimer.blade.php new file mode 100644 index 0000000..d0f695e --- /dev/null +++ b/resources/views/components/service-disclaimer.blade.php @@ -0,0 +1,23 @@ +{{-- ponytail: ein wiederverwendbarer Disclaimer für Index- und Landingpage --}} + diff --git a/resources/views/livewire/services/index.blade.php b/resources/views/livewire/services/index.blade.php index 2cdd5fd..9d5448b 100644 --- a/resources/views/livewire/services/index.blade.php +++ b/resources/views/livewire/services/index.blade.php @@ -42,6 +42,8 @@ class extends Component { }; ?>
+ +
{{ __('Self Hosted Services') }}
@@ -193,6 +195,14 @@ class extends Component {
{{ Str::length($service->createdBy->name) > 20 ? Str::substr($service->createdBy->name, 0, 4) . '...' . Str::substr($service->createdBy->name, -3) : $service->createdBy->name }} + @if($service->createdBy->nostr) + + + + + + @endif
@endif diff --git a/resources/views/livewire/services/landingpage.blade.php b/resources/views/livewire/services/landingpage.blade.php index ef03baf..f54b3e9 100644 --- a/resources/views/livewire/services/landingpage.blade.php +++ b/resources/views/livewire/services/landingpage.blade.php @@ -52,6 +52,8 @@ class extends Component { @endsection
+ +
@@ -196,6 +198,14 @@ class extends Component { {{ $service->createdBy->name }}
+ @if($service->createdBy->nostr) + + + {{ __('Ersteller auf Nostr validieren (njump)') }} + + @endif @endif
diff --git a/tests/Feature/ServiceDisclaimerTest.php b/tests/Feature/ServiceDisclaimerTest.php new file mode 100644 index 0000000..ce5408c --- /dev/null +++ b/tests/Feature/ServiceDisclaimerTest.php @@ -0,0 +1,38 @@ +for( + User::factory()->create(['nostr' => 'npub1example']), + 'createdBy' + )->create(); + + $this->get(route('services.index', ['country' => 'de'])) + ->assertOk() + ->assertSee('Keine Empfehlung von EINUNDZWANZIG') + ->assertSee('npub') + ->assertSee('https://njump.me/npub1example'); +}); + +it('shows the disclaimer and njump link on the service landingpage', function () { + $service = SelfHostedService::factory()->for( + User::factory()->create(['nostr' => 'npub1example']), + 'createdBy' + )->create(); + + $this->get(route('services.landingpage', ['country' => 'de', 'service' => $service->slug])) + ->assertOk() + ->assertSee('Keine Empfehlung von EINUNDZWANZIG') + ->assertSee('https://njump.me/npub1example'); +}); + +it('omits the njump link for anonymous services', function () { + $service = SelfHostedService::factory()->anonymous()->create(); + + $this->get(route('services.landingpage', ['country' => 'de', 'service' => $service->slug])) + ->assertOk() + ->assertSee('Keine Empfehlung von EINUNDZWANZIG') + ->assertDontSee('njump.me'); +});