From a9d9854e5e966f9b587710ed7bb2f9237b3b3c38 Mon Sep 17 00:00:00 2001 From: ncoronel Date: Tue, 29 Sep 2026 14:28:53 -0300 Subject: [PATCH] feat(brand): update footer color mapping and adjust tests --- .../Resources/AdminApp/BrandResource.php | 22 ++++++++++++++- .../Tenant/AdminAppBrandControllerTest.php | 27 +++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/app/Domains/Core/Tenant/Resources/AdminApp/BrandResource.php b/app/Domains/Core/Tenant/Resources/AdminApp/BrandResource.php index e29aa824..0a05fb07 100644 --- a/app/Domains/Core/Tenant/Resources/AdminApp/BrandResource.php +++ b/app/Domains/Core/Tenant/Resources/AdminApp/BrandResource.php @@ -18,13 +18,33 @@ class BrandResource extends JsonResource 'nombre' => $this->nombre, 'primary_color' => $this->primary_color, 'header_bg_color' => $this->header_bg_color, - 'footer_bg_color' => $this->footer_bg_color, + 'footer_color' => $this->footerColor(), 'header_logo' => $this->headerLogo?->getTemporaryUrl(1440), 'footer_logo' => $this->footerLogo?->getTemporaryUrl(1440), 'banner_images' => $this->bannerImages(), ]; } + private function footerColor(): string + { + $footerColor = strtolower(trim((string) $this->footer_bg_color)); + $primaryColor = strtolower(trim((string) $this->primary_color)); + + if ($footerColor !== '' && $footerColor === $primaryColor) { + return 'primary'; + } + + if (in_array($footerColor, ['#000', '#000000', 'black'], true)) { + return 'black'; + } + + if ($footerColor === '' || in_array($footerColor, ['#fff', '#ffffff', 'white'], true)) { + return 'white'; + } + + return 'primary'; + } + /** @return array> */ private function bannerImages(): array { diff --git a/tests/Feature/Tenant/AdminAppBrandControllerTest.php b/tests/Feature/Tenant/AdminAppBrandControllerTest.php index 85a87686..db864ac7 100644 --- a/tests/Feature/Tenant/AdminAppBrandControllerTest.php +++ b/tests/Feature/Tenant/AdminAppBrandControllerTest.php @@ -54,7 +54,7 @@ class AdminAppBrandControllerTest extends TestCase 'nombre' => 'Acme', 'primary_color' => '#112233', 'header_bg_color' => '#223344', - 'footer_bg_color' => '#445566', + 'footer_bg_color' => '#112233', 'header_logo_id' => $header->id, 'footer_logo_id' => $footer->id, ]); @@ -75,7 +75,7 @@ class AdminAppBrandControllerTest extends TestCase ->assertJsonPath('data.nombre', 'Acme') ->assertJsonPath('data.primary_color', '#112233') ->assertJsonPath('data.header_bg_color', '#223344') - ->assertJsonPath('data.footer_bg_color', '#445566') + ->assertJsonPath('data.footer_color', 'primary') ->assertJsonCount(2, 'data.banner_images'); foreach (['header_logo' => $header, 'footer_logo' => $footer] as $field => $image) { @@ -94,6 +94,29 @@ class AdminAppBrandControllerTest extends TestCase $this->assertStringNotContainsString('other.png', $response->getContent()); } + public function test_footer_color_is_mapped_to_a_supported_option(): void + { + $websiteType = $this->websiteType('shopit'); + $cases = [ + ['primary', '#112233', '#112233'], + ['white', '#112233', '#FFFFFF'], + ['black', '#112233', '#000000'], + ['primary', '#112233', '#445566'], + ]; + + foreach ($cases as $index => [$expected, $primaryColor, $footerColor]) { + $tenant = $this->tenant("tenant-{$index}", $websiteType, [ + 'primary_color' => $primaryColor, + 'footer_bg_color' => $footerColor, + ]); + Sanctum::actingAs($this->admin($tenant)); + + $this->getJson('/api/v1/adminapp/tenant/brand') + ->assertOk() + ->assertJsonPath('data.footer_color', $expected); + } + } + public function test_missing_and_non_shopit_carousels_return_an_empty_list(): void { $shopit = $this->websiteType('shopit');