bootstrap.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. Object.defineProperty(global, 'localStorage', {
  25. value: {
  26. // localStorage returns `null` when the item does not exist
  27. getItem: key =>
  28. inMemoryLocalStorage[key] !== undefined
  29. ? inMemoryLocalStorage[key]
  30. : null,
  31. setItem: (key, value) => (inMemoryLocalStorage[key] = value),
  32. clear: () => (inMemoryLocalStorage = {}),
  33. removeItem: key => delete inMemoryLocalStorage[key]
  34. },
  35. writable: true
  36. })
  37. // node-fetch doesn't accept relative URL's: https://github.com/node-fetch/node-fetch/blob/master/docs/v2-LIMITS.md#known-differences
  38. const fetch = require('node-fetch')
  39. global.fetch = (url, ...options) => fetch('http://localhost' + url, ...options)
  40. // Mock global settings
  41. window.ExposedSettings = {}