feat(modal): refactor confirm delete modal handling and improve test coverage
This commit is contained in:
@@ -186,9 +186,61 @@ describe('ReutilizablesTestPageComponent', () => {
|
|||||||
).toContain('Todavia no se abrio ningun modal.');
|
).toContain('Todavia no se abrio ningun modal.');
|
||||||
|
|
||||||
confirmButton.click();
|
confirmButton.click();
|
||||||
|
fixture.detectChanges();
|
||||||
deleteButton.click();
|
deleteButton.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
expect(modalServiceStub.openConfirm).toHaveBeenCalled();
|
expect(modalServiceStub.openConfirm).toHaveBeenCalledWith({
|
||||||
expect(modalServiceStub.openConfirmDelete).toHaveBeenCalled();
|
title: 'Confirmar accion',
|
||||||
|
content: 'Caso base para verificar apertura, cierre y devolucion de resultado.',
|
||||||
|
confirmLabel: 'Confirmar'
|
||||||
|
});
|
||||||
|
expect(modalServiceStub.openConfirmDelete).toHaveBeenCalledWith({
|
||||||
|
title: 'Eliminar producto',
|
||||||
|
content:
|
||||||
|
'Esta accion eliminara el producto del catalogo. Podras volver a crearlo manualmente.',
|
||||||
|
confirmLabel: 'Eliminar'
|
||||||
|
});
|
||||||
|
expect(
|
||||||
|
element.querySelector('[data-testid="modal-last-result"]')?.textContent
|
||||||
|
).toContain('Resultado: false');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('updates the visible result when the confirm modal resolves to true', async () => {
|
||||||
|
const modalServiceStub = createModalServiceStub();
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [ReutilizablesTestPageComponent],
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: TenantService,
|
||||||
|
useValue: createTenantServiceStub(tenant)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: ToastService,
|
||||||
|
useValue: createToastServiceStub()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: ModalService,
|
||||||
|
useValue: modalServiceStub
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}).compileComponents();
|
||||||
|
|
||||||
|
const fixture = TestBed.createComponent(ReutilizablesTestPageComponent);
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const element = fixture.nativeElement as HTMLElement;
|
||||||
|
const confirmButton = Array.from(
|
||||||
|
element.querySelectorAll('.button-group app-button button')
|
||||||
|
).find((button) =>
|
||||||
|
button.textContent?.includes('Abrir confirm modal')
|
||||||
|
) as HTMLButtonElement;
|
||||||
|
|
||||||
|
confirmButton.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(
|
||||||
|
element.querySelector('[data-testid="modal-last-result"]')?.textContent
|
||||||
|
).toContain('Resultado: true');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -198,14 +198,11 @@ export class ReutilizablesTestPageComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected openConfirmDeleteModal(): void {
|
protected openConfirmDeleteModal(): void {
|
||||||
this.modalService.openConfirmDelete({
|
this.openConfirmDelete({
|
||||||
title: 'Eliminar producto',
|
title: 'Eliminar producto',
|
||||||
content:
|
content:
|
||||||
'Esta accion eliminara el producto del catalogo. Podras volver a crearlo manualmente.',
|
'Esta accion eliminara el producto del catalogo. Podras volver a crearlo manualmente.',
|
||||||
confirmLabel: 'Eliminar',
|
confirmLabel: 'Eliminar'
|
||||||
cancelLabel: 'Conservar'
|
|
||||||
}).subscribe((confirmed) => {
|
|
||||||
this.lastModalResult = `Resultado: ${confirmed}`;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,4 +231,12 @@ export class ReutilizablesTestPageComponent {
|
|||||||
this.lastModalResult = `Resultado: ${confirmed}`;
|
this.lastModalResult = `Resultado: ${confirmed}`;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private openConfirmDelete(
|
||||||
|
config: Parameters<ModalService['openConfirmDelete']>[0]
|
||||||
|
): void {
|
||||||
|
this.modalService.openConfirmDelete(config).subscribe((confirmed) => {
|
||||||
|
this.lastModalResult = `Resultado: ${confirmed}`;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user