From 81f5755e3d53ef827ad55cb08c2b08e8b782f477 Mon Sep 17 00:00:00 2001
From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com>
Date: Mon, 31 Jan 2022 16:34:35 +0000
Subject: [PATCH] Add tests for tabs_controller
---
.../stimulus/tabs_controller_test.js | 67 +++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 spec/javascripts/stimulus/tabs_controller_test.js
diff --git a/spec/javascripts/stimulus/tabs_controller_test.js b/spec/javascripts/stimulus/tabs_controller_test.js
new file mode 100644
index 0000000000..a67296bd0b
--- /dev/null
+++ b/spec/javascripts/stimulus/tabs_controller_test.js
@@ -0,0 +1,67 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import { Application } from "stimulus";
+import tabs_controller from "../../../app/webpacker/controllers/tabs_controller";
+
+describe("TabsController", () => {
+ describe("#select", () => {
+ beforeEach(() => {
+ document.body.innerHTML = `
+
+
+
+
+
+
+ Dogs content
+
+
+ Cats content
+
+
+ Birds content
+
+
+ `;
+
+ const application = Application.start();
+ application.register("tabs", tabs_controller);
+ });
+
+ it("shows the corresponding content when a tab button is clicked", () => {
+ const dogs_button = document.querySelectorAll('button')[0];
+ const cats_button = document.querySelectorAll('button')[1];
+ const birds_button = document.querySelectorAll('button')[2];
+ const dogs_content = document.querySelectorAll('.content-area')[0];
+ const cats_content = document.querySelectorAll('.content-area')[1];
+ const birds_content = document.querySelectorAll('.content-area')[2];
+
+ expect(dogs_content.hidden).toBe(false);
+ expect(cats_content.hidden).toBe(true);
+ expect(birds_content.hidden).toBe(true);
+
+ expect(document.querySelectorAll('button.active').length).toBe(1);
+ expect(document.querySelectorAll('button.active')[0]).toBe(dogs_button);
+
+ birds_button.click();
+
+ expect(dogs_content.hidden).toBe(true);
+ expect(cats_content.hidden).toBe(true);
+ expect(birds_content.hidden).toBe(false);
+
+ expect(document.querySelectorAll('button.active').length).toBe(1);
+ expect(document.querySelectorAll('button.active')[0]).toBe(birds_button);
+
+ cats_button.click();
+
+ expect(dogs_content.hidden).toBe(true);
+ expect(cats_content.hidden).toBe(false);
+ expect(birds_content.hidden).toBe(true);
+
+ expect(document.querySelectorAll('button.active').length).toBe(1);
+ expect(document.querySelectorAll('button.active')[0]).toBe(cats_button);
+ });
+ });
+});