import { EventEmitter } from '@angular/core'; import { FulfilmentFieldControlComponentInterface, } from './../../models/index'; import { FulfilmentFieldControlListComponent, } from './fulfilment-field-control-list.component'; const initFulfilmentFieldControlListComponent = () => { return new FulfilmentFieldControlListComponent(); }; describe('defaults', () => { test('Sets a default for fulfilmentFieldsAndImages', () => { expect( initFulfilmentFieldControlListComponent().fulfilmentFieldsAndImages, ).toBeUndefined(); }); test('Sets a default for selectedCurrency', () => { expect( initFulfilmentFieldControlListComponent().currency, ).toBeUndefined(); }); test('Sets a default for currentFieldName', () => { expect( initFulfilmentFieldControlListComponent().currentFieldName, ).toBeUndefined(); }); test('Sets a default for showPricing', () => { expect( initFulfilmentFieldControlListComponent().showPricing, ).toBeUndefined(); }); test('Sets defaults for showDeleteButton', () => { expect(initFulfilmentFieldControlListComponent().showDeleteButton) .toBeUndefined(); }); test('Sets a default for mainSectionText', () => { expect( initFulfilmentFieldControlListComponent().mainSectionText, ).toBe('SELECT SIDE'); }); test('Sets a default for deleteButtonTooltipText', () => { expect( initFulfilmentFieldControlListComponent().deleteButtonTooltipText, ).toBeUndefined(); }); test('Sets a default for replaceButtonTooltipText', () => { expect( initFulfilmentFieldControlListComponent().replaceButtonTooltipText, ).toBeUndefined(); }); test('Sets a default for invertButtonTooltipText', () => { expect( initFulfilmentFieldControlListComponent().invertButtonTooltipText, ).toBeUndefined(); }); test('Sets a default for uploadingText', () => { expect( initFulfilmentFieldControlListComponent().uploadingText, ).toBeUndefined(); }); test('Sets a default for onDeleteClicked', () => { expect( initFulfilmentFieldControlListComponent().onDeleteClicked, ).toEqual(new EventEmitter()); }); test('Sets a default for onReplaceImage', () => { expect( initFulfilmentFieldControlListComponent().onReplaceImage, ).toEqual(new EventEmitter()); }); test('Sets a default for onReplaceUploadFilesError', () => { expect( initFulfilmentFieldControlListComponent().onReplaceUploadFilesError, ).toEqual(new EventEmitter()); }); test('Sets a default for onInvertClicked', () => { expect( initFulfilmentFieldControlListComponent().onInvertClicked, ).toEqual(new EventEmitter()); }); test('Sets a default for onAlignHorizontalClicked', () => { expect( initFulfilmentFieldControlListComponent().onAlignHorizontalClicked, ).toEqual(new EventEmitter()); }); test('Sets a default for onAlignVerticalClicked', () => { expect( initFulfilmentFieldControlListComponent().onAlignVerticalClicked, ).toEqual(new EventEmitter()); }); test('Sets a default for onResetClicked', () => { expect( initFulfilmentFieldControlListComponent().onResetClicked, ).toEqual(new EventEmitter()); }); test('Sets a default for onSectionClicked', () => { expect( initFulfilmentFieldControlListComponent().onSectionClicked, ).toEqual(new EventEmitter()); }); test('Sets a default for onToggleEditToolsMenu', () => { expect( initFulfilmentFieldControlListComponent().onToggleEditToolsMenu, ).toEqual(new EventEmitter()); }); }); describe('trackByFieldName', () => { test('Returns the fieldName of the fulfilment field control', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const fulfilmentField = { fieldName: 'field1', } as FulfilmentFieldControlComponentInterface; const result = fulfilmentFieldControlListComponent.trackByFieldName( fulfilmentField, ); expect(result).toBe('field1'); }); }); describe('getIsCurrentField$', () => { const runGetIsCurrentField$Test = ({ currentFieldName, expectedValue, }: { currentFieldName: string, expectedValue: boolean, }) => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); fulfilmentFieldControlListComponent.currentFieldName = currentFieldName; const fulfilmentField = { fieldName: 'field1', } as FulfilmentFieldControlComponentInterface; const result = fulfilmentFieldControlListComponent.getIsCurrentField( fulfilmentField, ); expect(result).toBe(expectedValue); }; // tslint:disable-next-line test('Returns true if the currentFieldName equals the supplied field name', () => { runGetIsCurrentField$Test({ currentFieldName: 'field1', expectedValue: true, }); }); // tslint:disable-next-line test('Returns false if the currentFieldName does not equal the supplied field name', () => { runGetIsCurrentField$Test({ currentFieldName: 'field2', expectedValue: false, }); }); }); describe('deleteClicked', () => { test('Emits an event to onDeleteClicked', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const fulfilmentField = { fieldName: 'field', } as FulfilmentFieldControlComponentInterface; fulfilmentFieldControlListComponent.onDeleteClicked.emit = jest.fn(); fulfilmentFieldControlListComponent.deleteClicked( fulfilmentField, ); expect(fulfilmentFieldControlListComponent.onDeleteClicked.emit) .toHaveBeenCalledWith(fulfilmentField.fieldName); }); }); describe('replaceImage', () => { test('Emits an event to onReplaceImage', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const files = [] as File[]; const fulfilmentField = { fieldName: 'field', } as FulfilmentFieldControlComponentInterface; fulfilmentFieldControlListComponent.onReplaceImage.emit = jest.fn(); fulfilmentFieldControlListComponent.replaceImage( files, fulfilmentField, ); expect(fulfilmentFieldControlListComponent.onReplaceImage.emit) .toHaveBeenCalledWith([files, 'field']); }); }); describe('replaceUploadFilesError', () => { test('Emits an event to onReplaceUploadFilesError', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const fulfilmentField = { fieldName: 'field', } as FulfilmentFieldControlComponentInterface; fulfilmentFieldControlListComponent.onReplaceUploadFilesError.emit = jest.fn(); fulfilmentFieldControlListComponent .replaceUploadFilesError(fulfilmentField); expect( fulfilmentFieldControlListComponent.onReplaceUploadFilesError.emit, ).toHaveBeenCalled(); }); }); describe('invertClicked', () => { test('Emits an event to onInvertClicked', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const fulfilmentField = { fieldName: 'field', } as FulfilmentFieldControlComponentInterface; fulfilmentFieldControlListComponent.onInvertClicked.emit = jest.fn(); fulfilmentFieldControlListComponent.invertClicked(fulfilmentField); expect( fulfilmentFieldControlListComponent.onInvertClicked.emit, ).toHaveBeenCalledWith('field'); }); }); describe('alignHorizontalClicked', () => { test('Emits an event to onAlignHorizontalClicked', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); fulfilmentFieldControlListComponent.onAlignHorizontalClicked.emit = jest.fn(); fulfilmentFieldControlListComponent .alignHorizontalClicked(); expect( fulfilmentFieldControlListComponent.onAlignHorizontalClicked.emit, ).toHaveBeenCalled(); }); }); describe('alignVerticalClicked', () => { test('Emits an event to onAlignVerticalClicked', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); fulfilmentFieldControlListComponent.onAlignVerticalClicked.emit = jest.fn(); fulfilmentFieldControlListComponent .alignVerticalClicked(); expect( fulfilmentFieldControlListComponent.onAlignVerticalClicked.emit, ).toHaveBeenCalled(); }); }); describe('resetClicked', () => { test('Emits an event to onResetClicked', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); fulfilmentFieldControlListComponent.onResetClicked.emit = jest.fn(); fulfilmentFieldControlListComponent .resetClicked(); expect( fulfilmentFieldControlListComponent.onResetClicked.emit, ).toHaveBeenCalled(); }); }); describe('sectionClicked', () => { test('Emits an event to onSectionClicked', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const fulfilmentField = { fieldName: 'field', } as FulfilmentFieldControlComponentInterface; fulfilmentFieldControlListComponent.onSectionClicked.emit = jest.fn(); fulfilmentFieldControlListComponent.sectionClicked(fulfilmentField); expect( fulfilmentFieldControlListComponent.onSectionClicked.emit, ).toHaveBeenCalledWith('field'); }); }); describe('toggleEditToolsMenu', () => { test('Emits an event to onToggleEditToolsMenu with the fieldName', () => { const fulfilmentFieldControlListComponent = initFulfilmentFieldControlListComponent(); const fulfilmentField = { fieldName: 'field', } as FulfilmentFieldControlComponentInterface; fulfilmentFieldControlListComponent.onToggleEditToolsMenu.emit = jest.fn(); fulfilmentFieldControlListComponent .toggleEditToolsMenu(fulfilmentField); expect( fulfilmentFieldControlListComponent.onToggleEditToolsMenu.emit, ).toHaveBeenCalledWith('field'); }); });