feat(brand): update footer color mapping and adjust tests

This commit is contained in:
2026-09-29 14:28:53 -03:00
parent 4bdd3effcc
commit a9d9854e5e
2 changed files with 46 additions and 3 deletions

View File

@@ -18,13 +18,33 @@ class BrandResource extends JsonResource
'nombre' => $this->nombre, 'nombre' => $this->nombre,
'primary_color' => $this->primary_color, 'primary_color' => $this->primary_color,
'header_bg_color' => $this->header_bg_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), 'header_logo' => $this->headerLogo?->getTemporaryUrl(1440),
'footer_logo' => $this->footerLogo?->getTemporaryUrl(1440), 'footer_logo' => $this->footerLogo?->getTemporaryUrl(1440),
'banner_images' => $this->bannerImages(), '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<int, array<string, mixed>> */ /** @return array<int, array<string, mixed>> */
private function bannerImages(): array private function bannerImages(): array
{ {

View File

@@ -54,7 +54,7 @@ class AdminAppBrandControllerTest extends TestCase
'nombre' => 'Acme', 'nombre' => 'Acme',
'primary_color' => '#112233', 'primary_color' => '#112233',
'header_bg_color' => '#223344', 'header_bg_color' => '#223344',
'footer_bg_color' => '#445566', 'footer_bg_color' => '#112233',
'header_logo_id' => $header->id, 'header_logo_id' => $header->id,
'footer_logo_id' => $footer->id, 'footer_logo_id' => $footer->id,
]); ]);
@@ -75,7 +75,7 @@ class AdminAppBrandControllerTest extends TestCase
->assertJsonPath('data.nombre', 'Acme') ->assertJsonPath('data.nombre', 'Acme')
->assertJsonPath('data.primary_color', '#112233') ->assertJsonPath('data.primary_color', '#112233')
->assertJsonPath('data.header_bg_color', '#223344') ->assertJsonPath('data.header_bg_color', '#223344')
->assertJsonPath('data.footer_bg_color', '#445566') ->assertJsonPath('data.footer_color', 'primary')
->assertJsonCount(2, 'data.banner_images'); ->assertJsonCount(2, 'data.banner_images');
foreach (['header_logo' => $header, 'footer_logo' => $footer] as $field => $image) { foreach (['header_logo' => $header, 'footer_logo' => $footer] as $field => $image) {
@@ -94,6 +94,29 @@ class AdminAppBrandControllerTest extends TestCase
$this->assertStringNotContainsString('other.png', $response->getContent()); $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 public function test_missing_and_non_shopit_carousels_return_an_empty_list(): void
{ {
$shopit = $this->websiteType('shopit'); $shopit = $this->websiteType('shopit');