local-storage.test.js 2.3 KB

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