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