/** * @jest-environment jsdom */ import { Application } from "stimulus"; import tabs_controller from "../../../app/webpacker/controllers/tabs_controller"; describe("TabsController", () => { beforeAll(() => { const application = Application.start(); application.register("tabs", tabs_controller); }); describe("#select", () => { beforeEach(() => { document.body.innerHTML = `
Dogs content
Cats content
Birds content
`; }); 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); }); }); });