Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / loglevel / test / test-helpers.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/loglevel/test/test-helpers.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/loglevel/test/test-helpers.js
new file mode 100644 (file)
index 0000000..12cc4e5
--- /dev/null
@@ -0,0 +1,168 @@
+"use strict";
+
+if (typeof window === "undefined") {
+    window = {};
+}
+
+var logMethods = [
+    "trace",
+    "debug",
+    "info",
+    "warn",
+    "error"
+];
+
+define(function () {
+    function getStorageKey(loggerName) {
+        var key = "loglevel";
+        if (loggerName) {
+            key += ":" + loggerName;
+        }
+        return key;
+    }
+
+    var self = {};
+
+    // Jasmine matcher to check the log level of a log object
+    self.toBeAtLevel = function toBeAtLevel(level) {
+        var log = this.actual;
+        var expectedWorkingCalls = log.levels.SILENT - log.levels[level.toUpperCase()];
+        var realLogMethod = window.console.log;
+        var priorCalls = realLogMethod.calls.length;
+
+        for (var ii = 0; ii < logMethods.length; ii++) {
+            var methodName = logMethods[ii];
+            log[methodName](methodName);
+        }
+
+        expect(realLogMethod.calls.length - priorCalls).toEqual(expectedWorkingCalls);
+        return true;
+    };
+
+    self.isCookieStorageAvailable = function isCookieStorageAvailable() {
+        if (window && window.document && window.document.cookie) {
+            // We need to check not just that the cookie objects are available, but that they work, because
+            // if we run from file:// URLs they appear present but are non-functional
+            window.document.cookie = "test=hi;";
+
+            var result = window.document.cookie.indexOf('test=hi') !== -1;
+            window.document.cookie = "test=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
+
+            return result;
+        } else {
+            return false;
+        }
+    };
+
+    self.isLocalStorageAvailable = function isLocalStorageAvailable() {
+        try {
+            return !!window.localStorage;
+        } catch (e){
+            return false;
+        }
+    };
+
+    self.isAnyLevelStoragePossible = function isAnyLevelStoragePossible() {
+        return self.isCookieStorageAvailable() || self.isLocalStorageAvailable();
+    };
+
+    self.toBeTheLevelStoredByCookie = function toBeTheLevelStoredByCookie(name) {
+        var level = this.actual.toUpperCase();
+        var storageKey = encodeURIComponent(getStorageKey(name));
+
+        if (window.document.cookie.indexOf(storageKey + "=" + level) !== -1) {
+            return true;
+        } else {
+            return false;
+        }
+    };
+
+    self.toBeTheLevelStoredByLocalStorage = function toBeTheLevelStoredByLocalStorage(name) {
+        var level = this.actual.toUpperCase();
+
+        if (window.localStorage[getStorageKey(name)] === level) {
+            return true;
+        }
+
+        return false;
+    };
+
+    // Jasmine matcher to check whether a given string was saved by loglevel
+    self.toBeTheStoredLevel = function toBeTheStoredLevel(name) {
+        return self.toBeTheLevelStoredByLocalStorage.call(this, name) ||
+               self.toBeTheLevelStoredByCookie.call(this, name);
+    };
+
+    self.setCookieStoredLevel = function setCookieStoredLevel(level, name) {
+        window.document.cookie =
+            encodeURIComponent(getStorageKey(name)) + "=" +
+            level.toUpperCase() + ";";
+    };
+
+    self.setLocalStorageStoredLevel = function setLocalStorageStoredLevel(level, name) {
+        window.localStorage[getStorageKey(name)] = level.toUpperCase();
+    };
+
+    self.setStoredLevel = function setStoredLevel(level, name) {
+        if (self.isCookieStorageAvailable()) {
+            self.setCookieStoredLevel(level, name);
+        }
+        if (self.isLocalStorageAvailable()) {
+            self.setLocalStorageStoredLevel(level, name);
+        }
+    };
+
+    self.clearStoredLevels = function clearStoredLevels() {
+        if (self.isLocalStorageAvailable()) {
+            window.localStorage.clear();
+        }
+        if (self.isCookieStorageAvailable()) {
+            var storedKeys = window.document.cookie.match(/(?:^|;\s)(loglevel(\:\w+)?)(?=\=)/g);
+            if (storedKeys) {
+                for (var i = 0; i < storedKeys.length; i++) {
+                    window.document.cookie = storedKeys[i] + "=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
+                }
+            }
+        }
+    };
+
+    self.describeIf = function describeIf(condition, name, test) {
+        if (condition) {
+            jasmine.getEnv().describe(name, test);
+        }
+    };
+
+    self.itIf = function itIf(condition, name, test) {
+        if (condition) {
+            jasmine.getEnv().it(name, test);
+        }
+    };
+
+    // Forcibly reloads loglevel, and asynchronously hands the resulting log back to the given callback
+    // via Jasmine async magic
+    self.withFreshLog = function withFreshLog(toRun) {
+        require.undef("lib/loglevel");
+
+        var freshLog;
+
+        waitsFor(function() {
+            require(['lib/loglevel'], function(log) {
+                freshLog = log;
+            });
+            return typeof freshLog !== "undefined";
+        });
+
+        runs(function() {
+            toRun(freshLog);
+        });
+    };
+
+    // Wraps Jasmine's it(name, test) call to reload the loglevel dependency for the given test
+    self.itWithFreshLog = function itWithFreshLog(name, test) {
+        jasmine.getEnv().it(name, function() {
+            self.withFreshLog(test);
+        });
+    };
+
+    return self;
+});