summaryrefslogtreecommitdiff
path: root/includes/external/matrix/node_modules/loglevel/test/console-fallback-test.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/matrix/node_modules/loglevel/test/console-fallback-test.js')
-rw-r--r--includes/external/matrix/node_modules/loglevel/test/console-fallback-test.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/includes/external/matrix/node_modules/loglevel/test/console-fallback-test.js b/includes/external/matrix/node_modules/loglevel/test/console-fallback-test.js
new file mode 100644
index 0000000..58fda9d
--- /dev/null
+++ b/includes/external/matrix/node_modules/loglevel/test/console-fallback-test.js
@@ -0,0 +1,98 @@
+"use strict";
+
+function consoleLogIsCalledBy(log, methodName) {
+ it(methodName + " calls console.log", function() {
+ log.setLevel(log.levels.TRACE);
+ log[methodName]("Log message for call to " + methodName);
+ expect(console.log.calls.length).toEqual(1);
+ });
+}
+
+function mockConsole() {
+ return {"log" : jasmine.createSpy("console.log")};
+}
+
+define(['../lib/loglevel'], function(log) {
+ var originalConsole = window.console;
+
+ describe("Fallback functionality:", function() {
+ describe("with no console present", function() {
+ beforeEach(function() {
+ window.console = undefined;
+ });
+
+ afterEach(function() {
+ window.console = originalConsole;
+ });
+
+ it("silent method calls are allowed", function() {
+ var result = log.setLevel(log.levels.SILENT);
+ log.trace("hello");
+
+ expect(result).toBeUndefined();
+ });
+
+ it("setting an active level gently returns an error string", function() {
+ var result = log.setLevel(log.levels.TRACE);
+ expect(result).toEqual("No console available for logging");
+ });
+
+ it("active method calls are allowed, once the active setLevel fails", function() {
+ log.setLevel(log.levels.TRACE);
+ log.trace("hello");
+ });
+
+ describe("if a console later appears", function () {
+ it("logging is re-enabled and works correctly when next used", function () {
+ log.setLevel(log.levels.WARN);
+
+ window.console = mockConsole();
+ log.error("error");
+
+ expect(window.console.log).toHaveBeenCalled();
+ });
+
+ it("logging is re-enabled but does nothing when used at a blocked level", function () {
+ log.setLevel(log.levels.WARN);
+
+ window.console = mockConsole();
+ log.trace("trace");
+
+ expect(window.console.log).not.toHaveBeenCalled();
+ });
+
+ it("changing level works correctly from that point", function () {
+ window.console = mockConsole();
+ var result = log.setLevel(log.levels.WARN);
+
+ expect(result).toBeUndefined();
+ });
+ });
+ });
+
+ describe("with a console that only supports console.log", function() {
+ beforeEach(function() {
+ window.console = mockConsole();
+ });
+
+ afterEach(function() {
+ window.console = originalConsole;
+ });
+
+ it("log can be set to silent", function() {
+ log.setLevel(log.levels.SILENT);
+ });
+
+ it("log can be set to an active level", function() {
+ log.setLevel(log.levels.ERROR);
+ });
+
+ consoleLogIsCalledBy(log, "trace");
+ consoleLogIsCalledBy(log, "debug");
+ consoleLogIsCalledBy(log, "info");
+ consoleLogIsCalledBy(log, "warn");
+ consoleLogIsCalledBy(log, "trace");
+ });
+ });
+});
+