bootstrap.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Run babel on tests to allow support for import/export statements in Node
  2. require('@babel/register')
  3. // Load JSDOM to mock the DOM in Node
  4. require('jsdom-global/register')
  5. // Load sinon-chai assertions so expect(stubFn).to.have.been.calledWith('abc')
  6. // has a nicer failure messages
  7. const chai = require('chai')
  8. chai.use(require('sinon-chai'))
  9. chai.use(require('chai-as-promised'))
  10. window.i18n = { currentLangCode: 'en' }
  11. require('../../frontend/js/i18n')
  12. const moment = require('moment')
  13. moment.updateLocale('en', {
  14. calendar: {
  15. lastDay: '[Yesterday]',
  16. sameDay: '[Today]',
  17. nextDay: '[Tomorrow]',
  18. lastWeek: 'ddd, Do MMM YY',
  19. nextWeek: 'ddd, Do MMM YY',
  20. sameElse: 'ddd, Do MMM YY'
  21. }
  22. })
  23. let inMemoryLocalStorage = {}
  24. global.localStorage = {
  25. // localStorage returns `null` when the item does not exist
  26. getItem: key =>
  27. inMemoryLocalStorage[key] !== undefined ? inMemoryLocalStorage[key] : null,
  28. setItem: (key, value) => (inMemoryLocalStorage[key] = value),
  29. clear: () => (inMemoryLocalStorage = {}),
  30. removeItem: key => delete inMemoryLocalStorage[key]
  31. }
  32. // node-fetch doesn't accept relative URL's: https://github.com/node-fetch/node-fetch/blob/master/docs/v2-LIMITS.md#known-differences
  33. const fetch = require('node-fetch')
  34. global.fetch = (url, ...options) => fetch('http://localhost' + url, ...options)
  35. // Mock global settings
  36. window.ExposedSettings = {}