blob: 372c6765b1351697fc679e2444ef552c20e48926 [file] [log] [blame]
import './index';
import { expect } from 'chai';
import { ParamSet } from 'common-sk/modules/query';
import { setUpElementUnderTest, eventPromise, noEventPromise } from '../../../infra-sk/modules/test_util';
import { FilterDialogSk, Filters } from './filter-dialog-sk';
import { FilterDialogSkPO } from './filter-dialog-sk_po';
const paramSet: ParamSet = {
'car make': ['chevrolet', 'dodge', 'ford', 'lincoln motor company'],
color: ['blue', 'green', 'red'],
used: ['yes', 'no'],
year: ['2020', '2019', '2018', '2017', '2016', '2015'],
};
const filters: Filters = {
diffConfig: {
'car make': ['chevrolet', 'dodge', 'ford'],
color: ['blue'],
year: ['2020', '2019'],
},
minRGBADelta: 0,
maxRGBADelta: 255,
sortOrder: 'descending',
mustHaveReferenceImage: false,
};
const differentFilters: Filters = {
diffConfig: {
color: ['green'],
used: ['yes', 'no'],
},
minRGBADelta: 50,
maxRGBADelta: 100,
sortOrder: 'ascending',
mustHaveReferenceImage: true,
};
describe('filter-dialog-sk', () => {
const newInstance = setUpElementUnderTest<FilterDialogSk>('filter-dialog-sk');
let filterDialogSk: FilterDialogSk;
let filterDialogSkPO: FilterDialogSkPO;
beforeEach(() => {
filterDialogSk = newInstance();
filterDialogSkPO = new FilterDialogSkPO(filterDialogSk);
});
it('should open the dialog with the given filters', async () => {
expect(await filterDialogSkPO.isDialogOpen()).to.be.false;
filterDialogSk.open(paramSet, filters);
expect(await filterDialogSkPO.isDialogOpen()).to.be.true;
expect(await filterDialogSkPO.getSelectedFilters()).to.deep.equal(filters);
});
it('should be possible to reopen the dialog with different filters', async () => {
filterDialogSk.open(paramSet, filters);
await filterDialogSkPO.clickCancelBtn();
filterDialogSk.open(paramSet, differentFilters);
expect(await filterDialogSkPO.getSelectedFilters()).to.deep.equal(differentFilters);
});
describe('filter button', () => {
it('closes the dialog', async () => {
filterDialogSk.open(paramSet, filters);
await filterDialogSkPO.clickFilterBtn();
expect(await filterDialogSkPO.isDialogOpen()).to.be.false;
});
it('returns unmodified filters via the "edit" event if the user made no changes', async () => {
filterDialogSk.open(paramSet, filters);
const editEvent = eventPromise<CustomEvent<Filters>>('edit');
await filterDialogSkPO.clickFilterBtn();
const newFilters = (await editEvent).detail;
expect(newFilters).to.deep.equal(filters);
});
it('returns the new filters via the "edit" event if the user made some changes', async () => {
filterDialogSk.open(paramSet, filters);
await filterDialogSkPO.setSelectedFilters(differentFilters);
const editEvent = eventPromise<CustomEvent<Filters>>('edit');
await filterDialogSkPO.clickFilterBtn();
const newFilters = (await editEvent).detail;
expect(newFilters).to.deep.equal(differentFilters);
});
});
describe('cancel button', () => {
it('closes the dialog without emitting the "edit" event', async () => {
filterDialogSk.open(paramSet, filters);
const noEvent = noEventPromise('edit');
await filterDialogSkPO.clickCancelBtn();
await noEvent;
expect(await filterDialogSkPO.isDialogOpen()).to.be.false;
});
it('discards any changes when reopened with same filters', async () => {
filterDialogSk.open(paramSet, filters);
await filterDialogSkPO.setSelectedFilters(differentFilters);
await filterDialogSkPO.clickCancelBtn();
filterDialogSk.open(paramSet, filters);
expect(await filterDialogSkPO.getSelectedFilters()).to.deep.equal(filters);
});
});
});