From 3cd2a2a0f9c9f507be6736b829f637dba336e10f Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Tue, 25 Aug 2020 22:58:43 -0400 Subject: [PATCH] Added test spec for components/ui/pw-toggle.vue --- components/ui/__tests__/pw-toggle.spec.js | 52 +++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 components/ui/__tests__/pw-toggle.spec.js diff --git a/components/ui/__tests__/pw-toggle.spec.js b/components/ui/__tests__/pw-toggle.spec.js new file mode 100644 index 000000000..12e70c22c --- /dev/null +++ b/components/ui/__tests__/pw-toggle.spec.js @@ -0,0 +1,52 @@ +import pwToggle from "../pw-toggle" +import { mount } from "@vue/test-utils" + +const factory = (props, slot) => + mount(pwToggle, { + propsData: props, + slots: { + default: slot, + }, + }) + +describe("pwToggle", () => { + test("mounts properly", () => { + const wrapper = factory({ on: true }, "test") + + expect(wrapper).toBeTruthy() + }) + + test("mounts even without the on prop", () => { + const wrapper = factory({}, "test") + + expect(wrapper).toBeTruthy() + }) + + test("state is set correctly through the prop", () => { + const wrapper1 = factory({ on: true }, "test") + expect(wrapper1.vm.$refs.toggle.classList.contains("on")).toEqual(true) + + const wrapper2 = factory({ on: false }, "test") + expect(wrapper2.vm.$refs.toggle.classList.contains("on")).toEqual(false) + }) + + test("caption label is rendered", () => { + const wrapper = factory({ on: true }, "") + + expect(wrapper.find("#testcaption").exists()).toEqual(true) + }) + + test("clicking the button toggles the state", async () => { + const wrapper = factory({ on: true }, "test") + + wrapper.vm.toggle() + await wrapper.vm.$nextTick() + + expect(wrapper.vm.$refs.toggle.classList.contains("on")).toEqual(false) + + wrapper.vm.toggle() + await wrapper.vm.$nextTick() + + expect(wrapper.vm.$refs.toggle.classList.contains("on")).toEqual(true) + }) +})