local-storage-test.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. "use strict";
  2. define(['test/test-helpers'], function(testHelpers) {
  3. var describeIf = testHelpers.describeIf;
  4. var it = testHelpers.itWithFreshLog;
  5. var originalConsole = window.console;
  6. describeIf(testHelpers.isLocalStorageAvailable(), "Local storage persistence tests:", function() {
  7. beforeEach(function() {
  8. window.console = {"log" : jasmine.createSpy("console.log")};
  9. this.addMatchers({
  10. "toBeAtLevel" : testHelpers.toBeAtLevel,
  11. "toBeTheStoredLevel" : testHelpers.toBeTheLevelStoredByLocalStorage,
  12. "toBeTheLevelStoredByLocalStorage": testHelpers.toBeTheLevelStoredByLocalStorage,
  13. "toBeTheLevelStoredByCookie": testHelpers.toBeTheLevelStoredByCookie
  14. });
  15. testHelpers.clearStoredLevels();
  16. });
  17. afterEach(function() {
  18. window.console = originalConsole;
  19. });
  20. describe("If no level is saved", function() {
  21. it("log level is set to warn by default", function(log) {
  22. expect(log).toBeAtLevel("warn");
  23. });
  24. it("warn is not persisted as the current level", function(log) {
  25. expect("warn").not.toBeTheStoredLevel();
  26. });
  27. it("log can be set to info level", function(log) {
  28. log.setLevel("info");
  29. expect(log).toBeAtLevel("info");
  30. });
  31. it("log.setLevel() sets a cookie with the given level", function(log) {
  32. log.setLevel("debug");
  33. expect("debug").toBeTheStoredLevel();
  34. });
  35. it("log.setLevel() does not set a cookie if `persist` argument is false", function(log) {
  36. log.setLevel("debug", false);
  37. expect("debug").not.toBeTheStoredLevel();
  38. });
  39. });
  40. describe("If trace level is saved", function () {
  41. beforeEach(function () {
  42. testHelpers.setStoredLevel("trace");
  43. });
  44. it("trace is the default log level", function (log) {
  45. expect(log).toBeAtLevel("trace");
  46. });
  47. });
  48. describe("If debug level is saved", function () {
  49. beforeEach(function () {
  50. testHelpers.setStoredLevel("debug");
  51. });
  52. it("debug is the default log level", function (log) {
  53. expect(log).toBeAtLevel("debug");
  54. });
  55. });
  56. describe("If info level is saved", function() {
  57. beforeEach(function() {
  58. testHelpers.setStoredLevel("info");
  59. });
  60. it("info is the default log level", function(log) {
  61. expect(log).toBeAtLevel("info");
  62. });
  63. it("log can be changed to warn level", function(log) {
  64. log.setLevel("warn");
  65. expect(log).toBeAtLevel("warn");
  66. });
  67. it("log.setLevel() overwrites the saved level", function(log) {
  68. log.setLevel("error");
  69. expect("error").toBeTheStoredLevel();
  70. expect("info").not.toBeTheStoredLevel();
  71. });
  72. it("log.setLevel() does not overwrite the saved level if `persist` argument is false", function(log) {
  73. log.setLevel("error", false);
  74. expect("info").toBeTheStoredLevel();
  75. expect("error").not.toBeTheStoredLevel();
  76. });
  77. it("log.resetLevel() clears the saved level", function(log) {
  78. log.resetLevel();
  79. expect(undefined).toBeTheStoredLevel();
  80. expect("info").not.toBeTheStoredLevel();
  81. });
  82. });
  83. describe("If warn level is saved", function () {
  84. beforeEach(function () {
  85. testHelpers.setStoredLevel("warn");
  86. });
  87. it("warn is the default log level", function (log) {
  88. expect(log).toBeAtLevel("warn");
  89. });
  90. });
  91. describe("If error level is saved", function () {
  92. beforeEach(function () {
  93. testHelpers.setStoredLevel("error");
  94. });
  95. it("error is the default log level", function (log) {
  96. expect(log).toBeAtLevel("error");
  97. });
  98. });
  99. describe("If the level is saved with other data", function() {
  100. beforeEach(function() {
  101. window.localStorage['qwe'] = "asd";
  102. window.localStorage['loglevel'] = "ERROR";
  103. window.localStorage['msg'] = "hello world";
  104. });
  105. it("error is the default log level", function(log) {
  106. expect(log).toBeAtLevel("error");
  107. });
  108. it("log can be changed to silent level", function(log) {
  109. log.setLevel("silent");
  110. expect(log).toBeAtLevel("silent");
  111. });
  112. it("log.setLevel() overrides the saved level only", function(log) {
  113. log.setLevel("debug");
  114. expect('debug').toBeTheStoredLevel();
  115. expect(window.localStorage['msg']).toBe("hello world");
  116. });
  117. });
  118. describe("If the level is stored incorrectly", function() {
  119. beforeEach(function() {
  120. testHelpers.setLocalStorageStoredLevel('gibberish');
  121. });
  122. it("warn is the default log level", function(log) {
  123. expect(log).toBeAtLevel("warn");
  124. });
  125. it("warn is not persisted as the current level", function(log) {
  126. expect("warn").not.toBeTheStoredLevel();
  127. });
  128. it("log can be changed to info level", function(log) {
  129. log.setLevel("info");
  130. expect(log).toBeAtLevel("info");
  131. });
  132. it("log.setLevel() overrides the saved level with the new level", function(log) {
  133. expect('debug').not.toBeTheStoredLevel();
  134. log.setLevel("debug");
  135. expect('debug').toBeTheStoredLevel();
  136. });
  137. });
  138. describeIf(testHelpers.isCookieStorageAvailable() && testHelpers.isLocalStorageAvailable(),
  139. "if localStorage and cookies are both available", function () {
  140. it("the level stored in cookies is ignored if a local storage level is set", function () {
  141. testHelpers.setCookieStoredLevel("info");
  142. testHelpers.setLocalStorageStoredLevel("debug");
  143. testHelpers.withFreshLog(function (log) {
  144. expect(log).toBeAtLevel("debug");
  145. });
  146. });
  147. it("the level stored in cookies is used if no local storage level is set", function () {
  148. testHelpers.setCookieStoredLevel("info");
  149. window.localStorage.clear();
  150. testHelpers.withFreshLog(function (log) {
  151. expect(log).toBeAtLevel("info");
  152. });
  153. });
  154. it("the local storage level is set and the cookie level is not", function (log) {
  155. log.setLevel("error");
  156. expect("error").toBeTheLevelStoredByLocalStorage();
  157. expect("error").not.toBeTheLevelStoredByCookie();
  158. });
  159. });
  160. });
  161. });