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,
|
'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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|||||||
Reference in New Issue
Block a user