addItem.spec.js
 1  const db = require('../../src/persistence');
 2  const addItem = require('../../src/routes/addItem');
 3  const ITEM = { id: 12345 };
 4  const {v4 : uuid} = require('uuid');
 5  
 6  jest.mock('uuid', () => ({ v4: jest.fn() }));
 7  
 8  jest.mock('../../src/persistence', () => ({
 9      removeItem: jest.fn(),
10      storeItem: jest.fn(),
11      getItem: jest.fn(),
12  }));
13  
14  test('it stores item correctly', async () => {
15      const id = 'something-not-a-uuid';
16      const name = 'A sample item';
17      const req = { body: { name } };
18      const res = { send: jest.fn() };
19  
20      uuid.mockReturnValue(id);
21  
22      await addItem(req, res);
23  
24      const expectedItem = { id, name, completed: false };
25  
26      expect(db.storeItem.mock.calls.length).toBe(1);
27      expect(db.storeItem.mock.calls[0][0]).toEqual(expectedItem);
28      expect(res.send.mock.calls[0].length).toBe(1);
29      expect(res.send.mock.calls[0][0]).toEqual(expectedItem);
30  });