feat: add ciontact table

This commit is contained in:
2025-12-14 20:41:46 -03:00
parent f74d15713c
commit 74ba14c3de
4 changed files with 136 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ContactListTable } from './contact-list-table';
import { STRINGS_INJECTOR } from '../../app.config';
import { strings } from '../../strings';
import { ContactService } from '../../pages/main/contact.service';
import { ContactDTO } from '../../models/ContactDTO';
import { By } from '@angular/platform-browser';
import { of } from 'rxjs';
describe('ContactListTable', () => {
let component: ContactListTable;
let fixture: ComponentFixture<ContactListTable>;
let contactService: jasmine.SpyObj<ContactService>;
let CONTACT_LIST_MOCK: ContactDTO[];
beforeEach(async () => {
contactService = jasmine.createSpyObj(ContactService.name, ['delete']);
CONTACT_LIST_MOCK = [new ContactDTO(1, 'MOCK', 'MOCK', '5491122222222')];
await TestBed.configureTestingModule({
imports: [ContactListTable],
providers: [
{ provide: STRINGS_INJECTOR, useValue: strings },
{ provide: ContactService, useValue: contactService },
],
}).compileComponents();
contactService.delete.and.returnValue(of([]));
fixture = TestBed.createComponent(ContactListTable);
component = fixture.componentInstance;
fixture.componentRef.setInput('contactList', CONTACT_LIST_MOCK);
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
describe('delete', () => {
it('should call for valid ID', () => {
const deleteSpy = spyOn(component, 'delete').and.callThrough();
const deleteButton = fixture.debugElement
.query(By.css('app-contact-actions-bar'))
.query(By.css('.btn--delete'));
deleteButton.triggerEventHandler('click');
expect(deleteSpy).toHaveBeenCalledWith(CONTACT_LIST_MOCK[0].id);
});
it("shouldn't call delete method if ID is falsy", () => {
CONTACT_LIST_MOCK[0].id = undefined;
const deleteButton = fixture.debugElement
.query(By.css('app-contact-actions-bar'))
.query(By.css('.btn--delete'));
deleteButton.triggerEventHandler('click');
expect(contactService.delete).not.toHaveBeenCalled();
});
});
});