local-storage.test.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { expect } from 'chai'
  2. import sinon from 'sinon'
  3. import customLocalStorage from '../../../frontend/js/infrastructure/local-storage'
  4. describe('localStorage', function() {
  5. let originalLocalStorage
  6. before(function() {
  7. originalLocalStorage = global.localStorage
  8. })
  9. after(function() {
  10. global.localStorage = originalLocalStorage
  11. })
  12. beforeEach(function() {
  13. global.localStorage = {
  14. getItem: sinon.stub().returns(null),
  15. setItem: sinon.stub(),
  16. clear: sinon.stub(),
  17. removeItem: sinon.stub()
  18. }
  19. global.console.error = sinon.stub()
  20. })
  21. afterEach(function() {
  22. global.console.error.reset()
  23. delete global.localStorage
  24. })
  25. it('getItem', function() {
  26. expect(customLocalStorage.getItem('foo')).to.be.null
  27. global.localStorage.getItem.returns('false')
  28. expect(customLocalStorage.getItem('foo')).to.equal(false)
  29. global.localStorage.getItem.returns('{"foo":"bar"}')
  30. expect(customLocalStorage.getItem('foo')).to.deep.equal({ foo: 'bar' })
  31. global.localStorage.getItem.throws(new Error('Nope'))
  32. expect(customLocalStorage.getItem('foo')).to.be.null
  33. expect(global.console.error).to.be.calledOnce
  34. })
  35. it('setItem', function() {
  36. customLocalStorage.setItem('foo', 'bar')
  37. expect(global.localStorage.setItem).to.be.calledOnceWith('foo', '"bar"')
  38. global.localStorage.setItem.reset()
  39. customLocalStorage.setItem('foo', true)
  40. expect(global.localStorage.setItem).to.be.calledOnceWith('foo', 'true')
  41. global.localStorage.setItem.reset()
  42. customLocalStorage.setItem('foo', { bar: 1 })
  43. expect(global.localStorage.setItem).to.be.calledOnceWith('foo', '{"bar":1}')
  44. global.localStorage.setItem.reset()
  45. global.localStorage.setItem.throws(new Error('Nope'))
  46. expect(customLocalStorage.setItem('foo', 'bar')).to.be.null
  47. expect(global.console.error).to.be.calledOnce
  48. })
  49. it('clear', function() {
  50. customLocalStorage.clear()
  51. expect(global.localStorage.clear).to.be.calledOnce
  52. global.localStorage.clear.throws(new Error('Nope'))
  53. expect(customLocalStorage.clear()).to.be.null
  54. expect(global.console.error).to.be.calledOnce
  55. })
  56. it('removeItem', function() {
  57. customLocalStorage.removeItem('foo')
  58. expect(global.localStorage.removeItem).to.be.calledOnceWith('foo')
  59. global.localStorage.removeItem.reset()
  60. global.localStorage.removeItem.throws(new Error('Nope'))
  61. expect(customLocalStorage.removeItem('foo')).to.be.null
  62. expect(global.console.error).to.be.calledOnce
  63. })
  64. })