--- /dev/null
+"use strict";\r
+\r
+define(['test/test-helpers'], function(testHelpers) {\r
+ var describeIf = testHelpers.describeIf;\r
+ var it = testHelpers.itWithFreshLog;\r
+\r
+ var originalConsole = window.console;\r
+ var originalDocument = window.document;\r
+\r
+ describeIf(testHelpers.isCookieStorageAvailable() && !testHelpers.isLocalStorageAvailable(),\r
+ "Cookie-only persistence tests:", function() {\r
+\r
+ beforeEach(function() {\r
+ window.console = {"log" : jasmine.createSpy("console.log")};\r
+ this.addMatchers({\r
+ "toBeAtLevel" : testHelpers.toBeAtLevel,\r
+ "toBeTheStoredLevel" : testHelpers.toBeTheLevelStoredByCookie\r
+ });\r
+ });\r
+\r
+ afterEach(function() {\r
+ window.console = originalConsole;\r
+ });\r
+\r
+ describe("If no level is saved", function() {\r
+ beforeEach(function() {\r
+ testHelpers.clearStoredLevels();\r
+ });\r
+\r
+ it("log level is set to warn by default", function(log) {\r
+ expect(log).toBeAtLevel("warn");\r
+ });\r
+\r
+ it("warn is persisted as the current level", function(log) {\r
+ expect("warn").toBeTheStoredLevel();\r
+ });\r
+\r
+ it("log can be set to info level", function(log) {\r
+ log.setLevel("info");\r
+ expect(log).toBeAtLevel("info");\r
+ });\r
+\r
+ it("log.setLevel() sets a cookie with the given level", function(log) {\r
+ log.setLevel("debug");\r
+ expect("debug").toBeTheStoredLevel();\r
+ });\r
+ });\r
+\r
+ describe("If info level is saved", function() {\r
+ beforeEach(function() {\r
+ testHelpers.setStoredLevel("info");\r
+ });\r
+\r
+ it("info is the default log level", function(log) {\r
+ expect(log).toBeAtLevel("info");\r
+ });\r
+\r
+ it("log can be changed to warn level", function(log) {\r
+ log.setLevel("warn");\r
+ expect(log).toBeAtLevel("warn");\r
+ });\r
+\r
+ it("log.setLevel() overwrites the saved level", function(log) {\r
+ log.setLevel("error");\r
+\r
+ expect("error").toBeTheStoredLevel();\r
+ expect("info").not.toBeTheStoredLevel();\r
+ });\r
+ });\r
+\r
+ describe("If the level is saved with other data", function() {\r
+ beforeEach(function() {\r
+ window.document.cookie = "qwe=asd";\r
+ window.document.cookie = "loglevel=ERROR";\r
+ window.document.cookie = "msg=hello world";\r
+ });\r
+\r
+ it("error is the default log level", function(log) {\r
+ expect(log).toBeAtLevel("error");\r
+ });\r
+\r
+ it("log can be changed to silent level", function(log) {\r
+ log.setLevel("silent");\r
+ expect(log).toBeAtLevel("silent");\r
+ });\r
+\r
+ it("log.setLevel() overrides the saved level only", function(log) {\r
+ log.setLevel("debug");\r
+\r
+ expect('debug').toBeTheStoredLevel();\r
+ expect(window.document.cookie).toContain("msg=hello world");\r
+ });\r
+ });\r
+\r
+ describe("If the level cookie is set incorrectly", function() {\r
+ beforeEach(function() {\r
+ testHelpers.setCookieStoredLevel('gibberish');\r
+ });\r
+\r
+ it("warn is the default log level", function(log) {\r
+ expect(log).toBeAtLevel("warn");\r
+ });\r
+\r
+ it("warn is persisted as the current level, overriding the invalid cookie", function(log) {\r
+ expect("warn").toBeTheStoredLevel();\r
+ });\r
+\r
+ it("log can be changed to info level", function(log) {\r
+ log.setLevel("info");\r
+ expect(log).toBeAtLevel("info");\r
+ });\r
+\r
+ it("log.setLevel() overrides the saved level with the new level", function(log) {\r
+ expect('debug').not.toBeTheStoredLevel();\r
+\r
+ log.setLevel("debug");\r
+\r
+ expect('debug').toBeTheStoredLevel();\r
+ });\r
+ });\r
+ });\r
+});\r