Skip to content
This repository was archived by the owner on Jul 8, 2023. It is now read-only.

Commit

Permalink
👾 debounce-handler: improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Kir Belevich committed Aug 1, 2017
1 parent a3ce8c6 commit 6173c5e
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 30 deletions.
26 changes: 26 additions & 0 deletions packages/debounce-handler/test/__snapshots__/index.jsx.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`debounceHandler should debounce handler with \`delay\` option 1`] = `
Array [
Array [
"e",
],
Array [
"f",
],
]
`;

exports[`debounceHandler should debounce handler with \`leadingCall\` option 1`] = `
Array [
Array [
"a",
],
Array [
"e",
],
Array [
"f",
],
]
`;
60 changes: 30 additions & 30 deletions packages/debounce-handler/test/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ import { mount } from 'enzyme';

import debounceHandler from '../src/';

const DELAY = 20;
const HALF_DELAY = DELAY / 2;
const Target = () => null;

describe('debounceHandler', () => {
Expand Down Expand Up @@ -42,73 +40,75 @@ describe('debounceHandler', () => {
});

it('should debounce handler with `delay` option', (done) => {
const EnchancedTarget = debounceHandler('testHandler', DELAY)(Target);
const EnchancedTarget = debounceHandler('testHandler', 50)(Target);
const mockTestHandler = jest.fn();
const wrapper = mount(
<EnchancedTarget testHandler={mockTestHandler}/>
);
const testHandler = wrapper.find(Target).prop('testHandler');

testHandler('a');
expect(mockTestHandler).toHaveBeenCalledTimes(0);

setTimeout(() => {
testHandler('b');
expect(mockTestHandler).toHaveBeenCalledTimes(0);

setTimeout(() => {
testHandler('c');
expect(mockTestHandler).toHaveBeenCalledTimes(0);

setTimeout(() => {
testHandler('d');
expect(mockTestHandler).toHaveBeenCalledTimes(0);

setTimeout(() => {
expect(mockTestHandler).toHaveBeenCalledTimes(1);
expect(mockTestHandler).toHaveBeenCalledWith('d');
done();
}, DELAY);
}, HALF_DELAY);
}, HALF_DELAY);
}, HALF_DELAY);
testHandler('e');

setTimeout(() => {
testHandler('f');

setTimeout(() => {
expect(mockTestHandler.mock.calls).toMatchSnapshot();
done();
}, 50);
}, 50);
}, 40);
}, 30);
}, 30);
}, 30);
});

it('should debounce handler with `leadingCall` option', (done) => {
const EnchancedTarget = debounceHandler('testHandler', DELAY, true)(Target);
const EnchancedTarget = debounceHandler('testHandler', 50, true)(Target);
const mockTestHandler = jest.fn();
const wrapper = mount(
<EnchancedTarget testHandler={mockTestHandler}/>
);
const testHandler = wrapper.find(Target).prop('testHandler');

testHandler('a');
expect(mockTestHandler).toHaveBeenCalledTimes(1);
expect(mockTestHandler).toHaveBeenCalledWith('a');

setTimeout(() => {
testHandler('b');
expect(mockTestHandler).toHaveBeenCalledTimes(1);
expect(mockTestHandler).toHaveBeenCalledWith('a');

setTimeout(() => {
testHandler('c');
expect(mockTestHandler).toHaveBeenCalledTimes(1);
expect(mockTestHandler).toHaveBeenCalledWith('a');

setTimeout(() => {
testHandler('d');
expect(mockTestHandler).toHaveBeenCalledTimes(1);
expect(mockTestHandler).toHaveBeenCalledWith('a');

setTimeout(() => {
expect(mockTestHandler).toHaveBeenCalledTimes(2);
expect(mockTestHandler).toHaveBeenCalledWith('d');
done();
}, DELAY);
}, HALF_DELAY);
}, HALF_DELAY);
}, HALF_DELAY);
testHandler('e');

setTimeout(() => {
testHandler('f');

setTimeout(() => {
expect(mockTestHandler.mock.calls).toMatchSnapshot();
done();
}, 50);
}, 50);
}, 20);
}, 20);
}, 20);
}, 20);
});

describe('display name', () => {
Expand Down

0 comments on commit 6173c5e

Please sign in to comment.