feat(brand): update footer color mapping and adjust tests
This commit is contained in:
@@ -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<int, array<string, mixed>> */
|
||||
private function bannerImages(): array
|
||||
{
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user