From f6078d9f1fda19e260e52a13c232534ca9bd0ed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Sat, 29 Jul 2017 23:14:42 -0700 Subject: [PATCH] Add proper counter.js tests --- assets/static/__mocks__/faviconMock.js | 6 ++ assets/static/counter.test.js | 81 +++++++++++++++++++++++++- package.json | 1 + 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 assets/static/__mocks__/faviconMock.js diff --git a/assets/static/__mocks__/faviconMock.js b/assets/static/__mocks__/faviconMock.js new file mode 100644 index 000000000..c01c233aa --- /dev/null +++ b/assets/static/__mocks__/faviconMock.js @@ -0,0 +1,6 @@ +class MockFavicon { + badge() { + } +} + +module.exports = MockFavicon; diff --git a/assets/static/counter.test.js b/assets/static/counter.test.js index d0db8c1d7..57186396b 100644 --- a/assets/static/counter.test.js +++ b/assets/static/counter.test.js @@ -1,5 +1,84 @@ +const $ = require("jquery"); + const counter = require("./counter"); -test("counter hide()", () => { +const mockHTML = + "
" + + "
" + + "
" + + " " + + "
" + + "
"; + +test("counter & spinner visibility after hide() & show()", () => { + document.body.innerHTML = mockHTML; + + counter.init(); + expect($("#alert-count").css("display")).not.toEqual("none"); + expect($("#spinner").css("display")).toEqual("none"); + counter.hide(); + expect($("#alert-count").css("display")).toEqual("none"); + expect($("#spinner").css("display")).not.toEqual("none"); + + counter.show(); + expect($("#alert-count").css("display")).not.toEqual("none"); + expect($("#spinner").css("display")).toEqual("none"); + + counter.hide(); + expect($("#alert-count").css("display")).toEqual("none"); + expect($("#spinner").css("display")).not.toEqual("none"); + + counter.setCounter(0); + expect($("#alert-count").css("display")).not.toEqual("none"); + expect($("#spinner").css("display")).toEqual("none"); +}); + +test("counter colors are correct", () => { + document.body.innerHTML = mockHTML; + + counter.init(); + expect($("#alert-count").hasClass("text-success")).toBe(false); + expect($("#alert-count").hasClass("text-warning")).toBe(false); + expect($("#alert-count").hasClass("text-danger")).toBe(false); + + counter.setCounter(0); + expect(document.title).toBe("(◕‿◕)"); + expect($("#alert-count").hasClass("text-success")).toBe(true); + expect($("#alert-count").hasClass("text-warning")).toBe(false); + expect($("#alert-count").hasClass("text-danger")).toBe(false); + + for (var i = 1; i < 10; i++) { + counter.setCounter(i); + expect(document.title).toBe("(◕_◕)"); + expect($("#alert-count").hasClass("text-success")).toBe(false); + expect($("#alert-count").hasClass("text-warning")).toBe(true); + expect($("#alert-count").hasClass("text-danger")).toBe(false); + } + + for (i = 10; i < 20; i++) { + counter.setCounter(i); + expect(document.title).toBe("(◕︵◕)"); + expect($("#alert-count").hasClass("text-success")).toBe(false); + expect($("#alert-count").hasClass("text-warning")).toBe(false); + expect($("#alert-count").hasClass("text-danger")).toBe(true); + } +}); + +test("spinner children is red after error", () => { + document.body.innerHTML = mockHTML; + + counter.init(); + counter.markError(); + expect($("#spinner-child").hasClass("spinner-success")).toBe(false); + expect($("#spinner-child").hasClass("spinner-error")).toBe(true); +}); + +test("spinner children is green after success", () => { + document.body.innerHTML = mockHTML; + + counter.init(); + counter.markSuccess(); + expect($("#spinner-child").hasClass("spinner-success")).toBe(true); + expect($("#spinner-child").hasClass("spinner-error")).toBe(false); }); diff --git a/package.json b/package.json index 18fe0f68a..c28ad4f34 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "\\.(css|less)$": "/assets/static/__mocks__/styleMock.js", "no-op\\.js$": "/assets/static/__mocks__/styleMock.js", "font-awesome.config\\.js$": "/assets/static/__mocks__/styleMock.js", + "favico\\.js": "/assets/static/__mocks__/faviconMock.js", "./favicon.ico": "/assets/static/__mocks__/styleMock.js" } },