import * as client from './client';

describe('client API', () => {
  it('should succeed fetching', (done) => {
    const response = '{"meta":{"total_count":1},"items":[]}';
    fetch.mockResponseSuccess(response);

    client.get('/example/url').then((result) => {
      expect(result).toMatchSnapshot();
      done();
    });
  });

  it('should fail fetching', (done) => {
    fetch.mockResponseFailure();

    client.get('/example/url').catch((result) => {
      expect(result).toMatchSnapshot();
      done();
    });
  });

  it('should crash fetching', (done) => {
    fetch.mockResponseCrash();

    client.get('/example/url').catch((result) => {
      expect(result).toMatchSnapshot();
      done();
    });
  });

  it('should timeout fetching', (done) => {
    jest.useFakeTimers();
    fetch.mockResponseTimeout();

    client.get('/example/url').catch((result) => {
      expect(result).toMatchSnapshot();
      done();
    });

    jest.runOnlyPendingTimers();
  });
});
