From ecf14e763333c5cd14cb12f03f10abc2e01afac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Tue, 15 Aug 2017 19:43:49 -0700 Subject: [PATCH] Add a test for unsilence button --- assets/static/__mocks__/ajaxSuccessMock.js | 12 +++++++++ assets/static/unsilence.test.js | 30 ++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 assets/static/__mocks__/ajaxSuccessMock.js diff --git a/assets/static/__mocks__/ajaxSuccessMock.js b/assets/static/__mocks__/ajaxSuccessMock.js new file mode 100644 index 000000000..0155f863d --- /dev/null +++ b/assets/static/__mocks__/ajaxSuccessMock.js @@ -0,0 +1,12 @@ +const mockXHR = require("mock-xhr"); + +function ajaxSuccessMockServer() { + var server = new mockXHR.server(); + server.handle = function (request) { + request.setResponseHeader("Content-Type", "application/json"); + request.receive(200, JSON.stringify({"status":"success"})); + }; + return server; +} + +exports.ajaxSuccessMockServer = ajaxSuccessMockServer; diff --git a/assets/static/unsilence.test.js b/assets/static/unsilence.test.js index 1e94b8d4d..5e511d2b5 100644 --- a/assets/static/unsilence.test.js +++ b/assets/static/unsilence.test.js @@ -1,5 +1,31 @@ -test("silence setupSilenceForm()", () => { - window.jQuery = require("jquery"); +const $ = window.jQuery = require("jquery"); +const templatesMock = require("./__mocks__/templatesMock"); + +test("unsilence init()", () => { + var body = templatesMock.loadTemplates(); + body.push( + "" + ); + document.body.innerHTML = body; + + require("bootstrap/js/tooltip.js"); const unsilence = require("./unsilence"); + + const ajaxMock = require("./__mocks__/ajaxSuccessMock").ajaxSuccessMockServer(); + ajaxMock.start(); + unsilence.init(); + // icon should be trash-o before clicking + expect($("button > span.fa").hasClass("fa-trash-o")).toBe(true); + $("button.silence-delete").click(); + // and switch to green check mark in circle after + expect($("button > span.fa").hasClass("fa-trash-o")).toBe(false); + expect($("button > span.fa").hasClass("fa-check-circle")).toBe(true); + expect($("button > span.fa").hasClass("text-success")).toBe(true); + + ajaxMock.stop(); });