1
0

filter Customer table + class TableFilter

This commit is contained in:
Michael Hoennig
2019-04-03 11:53:36 +02:00
parent d182637f41
commit 89437ca067
5 changed files with 158 additions and 6 deletions
src
main
test
javascript
spec
app

@@ -0,0 +1,86 @@
import { TableFilter } from 'app/shared/util/tablefilter';
/* To run these tests in IntelliJ IDEA, you need a run configuration with
Configuration File:
~/Projekte/Hostsharing/hsadmin-ng/src/test/javascript/jest.conf.js
and a Node Interpreter, e.g. if installed with nvm, this could be:
~/.nvm/versions/node/v10.15.3/bin/node
*/
describe('TableFilter Tests', () => {
describe('TableFilter', () => {
let filter: TableFilter<{ name: string; number: string }>;
let asynchronously: () => void;
beforeEach(() => {
filter = new TableFilter({ name: 'contains', number: 'equals' }, 100, () => {
asynchronously();
});
});
it('trigger() asynchronously calls the reload-handler', done => {
// given
filter.criteria.name = 'Test Filter Value';
// when
filter.trigger();
let triggerStartedAtMillis = Date.now();
// then
asynchronously = () => {
expect(Date.now()).toBeGreaterThan(triggerStartedAtMillis);
done();
};
});
it('if trigger() is called multiple times during debounce, debounce period ands after last trigger()', done => {
// given
filter.criteria.name = 'Test Filter Value';
// when
filter.trigger();
let triggerStartedAtMillis = null;
setTimeout(() => {
filter.trigger();
triggerStartedAtMillis = Date.now();
}, 50);
// then
asynchronously = () => {
expect(triggerStartedAtMillis).not.toBeNull();
expect(Date.now()).toBeGreaterThan(triggerStartedAtMillis);
done();
};
});
it('when filter "name" is set to "test value", buildQueryCriteria() returns { "name.contains": "test value" }', () => {
// given
filter.criteria.name = 'test value';
// when
let actual = filter.buildQueryCriteria();
// then
expect(filter.buildQueryCriteria()).toEqual({ 'name.contains': 'test value' });
});
it('reset() clears criteria and calls reload-handler, considering debounce period', done => {
// given
filter.criteria.name = 'Test Filter Value';
// when
filter.trigger();
let triggerStartedAtMillis = null;
setTimeout(() => {
filter.reset();
triggerStartedAtMillis = Date.now();
}, 50);
// then
asynchronously = () => {
expect(triggerStartedAtMillis).not.toBeNull();
expect(Date.now()).toBeGreaterThan(triggerStartedAtMillis);
done();
};
});
});
});