api.spec.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* eslint-disable prefer-reflect */
  2. import { testSaga } from 'redux-saga-test-plan';
  3. import axios from 'axios';
  4. import {
  5. apiRequest
  6. } from 'sagas/api';
  7. describe('API sagas', () => {
  8. describe('apiRequest', () => {
  9. const route = 'employees';
  10. const fields = {
  11. name: 'John Doe',
  12. email: 'john.doe@mubaloo.com'
  13. };
  14. it('should make an API POST request', () => {
  15. const response = { isResponse: true };
  16. testSaga(apiRequest, 'post', route, [], fields)
  17. .next()
  18. .call([axios, 'post'], '/api1/employees', fields)
  19. .next(response)
  20. .returns({ response, err: null });
  21. });
  22. it('should handle errors', () => {
  23. const err = new Error('something bad happened');
  24. testSaga(apiRequest, 'post', route, [], fields)
  25. .next()
  26. .call([axios, 'post'], '/api1/employees', fields)
  27. .throw(err)
  28. .returns({ response: null, err });
  29. });
  30. it('should make an API GET request', () => {
  31. const response = { isResponse: true };
  32. testSaga(apiRequest, 'get', route, ['a0b'])
  33. .next()
  34. .call([axios, 'get'], '/api1/employees/a0b')
  35. .next(response)
  36. .returns({ response, err: null });
  37. });
  38. });
  39. });