1import { memoize, guardAsync } from '../fn';
2
3describe(memoize, () => {
4  it(`memoizes`, () => {
5    const fn = jest.fn(() => 'd');
6    const memoized = memoize(fn);
7    expect(memoized()).toEqual('d');
8    expect(memoized()).toEqual('d');
9    expect(memoized()).toEqual('d');
10    expect(fn).toHaveBeenCalledTimes(1);
11  });
12});
13
14describe(guardAsync, () => {
15  it(`guards async function`, async () => {
16    const fn = jest.fn(async () => 'd');
17    const guard = guardAsync(fn);
18    expect(await guard()).toEqual('d');
19    expect(await guard()).toEqual('d');
20    expect(await guard()).toEqual('d');
21    expect(fn).toHaveBeenCalledTimes(1);
22  });
23});
24