fix: emit no badge markup when no badge is ticked

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Doar Mihai
2026-10-17 15:58:47 +03:00
co-authored by Claude Sonnet 5.5
parent 9920fafab6
commit bf365d029f
4 changed files with 16 additions and 7 deletions
@@ -5,7 +5,7 @@
@endphp @endphp
@if($ticked->isNotEmpty()) @if($ticked->isNotEmpty())
<div class="flex flex-wrap items-center gap-1.5"> <div {{ $attributes->merge(['class' => 'flex flex-wrap items-center gap-1.5']) }}>
@foreach($ticked as $key => $label) @foreach($ticked as $key => $label)
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 dark:bg-primary-900 text-primary-800 dark:text-primary-200"> <span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 dark:bg-primary-900 text-primary-800 dark:text-primary-200">
{{ $label }} {{ $label }}
@@ -38,9 +38,7 @@
</p> </p>
<!-- Badges --> <!-- Badges -->
<div class="mb-3 empty:hidden"> <x-product.badges :product="$product" class="mb-3" />
<x-product.badges :product="$product" />
</div>
<!-- Meta Information --> <!-- Meta Information -->
<div class="flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"> <div class="flex items-center justify-between text-xs text-gray-500 dark:text-gray-400">
+1 -3
View File
@@ -54,9 +54,7 @@
<span>{{ $product->created_at->format('M j, Y') }}</span> <span>{{ $product->created_at->format('M j, Y') }}</span>
</div> </div>
<div class="mt-3"> <x-product.badges :product="$product" class="mt-3" />
<x-product.badges :product="$product" />
</div>
@if($product->tags->isNotEmpty()) @if($product->tags->isNotEmpty())
<div class="mt-3 flex flex-wrap gap-x-3 gap-y-1 text-sm text-gray-500 dark:text-gray-400"> <div class="mt-3 flex flex-wrap gap-x-3 gap-y-1 text-sm text-gray-500 dark:text-gray-400">
+13
View File
@@ -100,3 +100,16 @@ test('existing product without new data still renders', function () {
$this->get(route('products.show', $product))->assertOk(); $this->get(route('products.show', $product))->assertOk();
}); });
test('badge-less product emits no badge markup on card or show page', function () {
$product = Product::factory()->approved()->create();
$this->get(route('products.show', $product))->assertOk()->assertDontSee('rounded-full text-xs font-medium', false);
$html = view('components.product.card', ['product' => $product->load(['user', 'category'])])->render();
expect($html)->not->toContain('mb-3 flex')
->and($html)->not->toContain('gap-1.5');
$badged = Product::factory()->approved()->create(['eu_made' => true])->load(['user', 'category']);
expect(view('components.product.card', ['product' => $badged])->render())->toContain('gap-1.5')->toContain('EU made');
});