feat(carousel): add main carousel component with image support and integrate into store home page
This commit is contained in:
@@ -574,6 +574,24 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="component-demo card shadow-sm mt-4" data-testid="main-carousel">
|
||||
<div class="card-body">
|
||||
<span class="eyebrow">Reusable Component</span>
|
||||
<h2 class="mb-3">Main Carousel</h2>
|
||||
|
||||
<p class="text-muted mb-4">
|
||||
Carrusel panorámico compuesto únicamente por imágenes, con autoslide e indicadores.
|
||||
</p>
|
||||
|
||||
<app-main-carousel
|
||||
[images]="mainCarouselImages"
|
||||
[imageAlts]="mainCarouselImageAlts"
|
||||
[autoSlideInterval]="4000"
|
||||
ariaLabel="Promociones de la tienda"
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="component-demo card shadow-sm mt-4" data-testid="products-carousel">
|
||||
<div class="card-body">
|
||||
<span class="eyebrow">Reusable Component</span>
|
||||
|
||||
@@ -180,6 +180,41 @@ describe('ReutilizablesTestPageComponent', () => {
|
||||
).toBe(6);
|
||||
});
|
||||
|
||||
it('renders the main carousel demo with remote images', async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [ReutilizablesTestPageComponent],
|
||||
providers: [
|
||||
{
|
||||
provide: TenantService,
|
||||
useValue: createTenantServiceStub(tenant),
|
||||
},
|
||||
{
|
||||
provide: ToastService,
|
||||
useValue: createToastServiceStub(),
|
||||
},
|
||||
{
|
||||
provide: ModalService,
|
||||
useValue: createModalServiceStub(),
|
||||
},
|
||||
],
|
||||
}).compileComponents();
|
||||
|
||||
const fixture = TestBed.createComponent(ReutilizablesTestPageComponent);
|
||||
fixture.detectChanges();
|
||||
|
||||
const element = fixture.nativeElement as HTMLElement;
|
||||
const carouselDemo = element.querySelector('[data-testid="main-carousel"]');
|
||||
const images = carouselDemo?.querySelectorAll('.main-carousel__image');
|
||||
const indicators = carouselDemo?.querySelectorAll('.main-carousel__indicator');
|
||||
|
||||
expect(carouselDemo?.querySelector('app-main-carousel')).not.toBeNull();
|
||||
expect(images).toHaveLength(3);
|
||||
expect(indicators).toHaveLength(3);
|
||||
expect(images?.[0].getAttribute('src')).toContain('images.unsplash.com');
|
||||
|
||||
fixture.destroy();
|
||||
});
|
||||
|
||||
it('renders the modal showcase and opens the confirm demos from the buttons', async () => {
|
||||
const modalServiceStub = createModalServiceStub();
|
||||
await TestBed.configureTestingModule({
|
||||
|
||||
@@ -15,6 +15,7 @@ import { ToastService } from '../../../../core/services/toast.service';
|
||||
import { StepperComponent } from '../../../../shared/components/stepper/stepper.component';
|
||||
import { StepComponent } from '../../../../shared/components/stepper/step.component';
|
||||
import { CarouselComponent } from '../../../../shared/components/carousel/carousel.component';
|
||||
import { MainCarouselComponent } from '../../../../shared/components/main-carousel/main-carousel.component';
|
||||
|
||||
interface CarouselProductMock {
|
||||
id: number;
|
||||
@@ -41,6 +42,7 @@ interface CarouselProductMock {
|
||||
StepperComponent,
|
||||
StepComponent,
|
||||
CarouselComponent,
|
||||
MainCarouselComponent,
|
||||
],
|
||||
templateUrl: './reutilizables-test-page.component.html',
|
||||
styleUrl: './reutilizables-test-page.component.scss',
|
||||
@@ -73,6 +75,16 @@ export class ReutilizablesTestPageComponent {
|
||||
protected lastModalResult = 'Todavia no se abrio ningun modal.';
|
||||
protected readonly paginatorTotalPages = 8;
|
||||
protected readonly cartBackgroundColor = '#ffffff';
|
||||
protected readonly mainCarouselImages = [
|
||||
'https://images.unsplash.com/photo-1441986300917-64674bd600d8?auto=format&fit=crop&w=1600&q=80',
|
||||
'https://images.unsplash.com/photo-1529139574466-a303027c1d8b?auto=format&fit=crop&w=1600&q=80',
|
||||
'https://images.unsplash.com/photo-1483985988355-763728e1935b?auto=format&fit=crop&w=1600&q=80',
|
||||
];
|
||||
protected readonly mainCarouselImageAlts = [
|
||||
'Interior de una tienda de indumentaria',
|
||||
'Colección de moda en exteriores',
|
||||
'Percheros con prendas de distintos colores',
|
||||
];
|
||||
|
||||
protected readonly testProducts = [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user