From ced3408aaa38bb1ffb94f9e15588cec98d61e6a1 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 2 Jul 2024 15:50:55 +0500 Subject: [PATCH] 12632 - add specs --- .../toggle_control_controller_test.js | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/spec/javascripts/stimulus/toggle_control_controller_test.js b/spec/javascripts/stimulus/toggle_control_controller_test.js index dca6e3df0e..12746389e7 100644 --- a/spec/javascripts/stimulus/toggle_control_controller_test.js +++ b/spec/javascripts/stimulus/toggle_control_controller_test.js @@ -71,11 +71,12 @@ describe("ToggleControlController", () => { `; }); - it("Enables when input is filled", () => { + it("Enables when input is filled and focuses the control", () => { input.value = "a" input.dispatchEvent(new Event("input")); expect(control.disabled).toBe(false); + expect(document.activeElement).toBe(control); }); it("Disables when input is emptied", () => { @@ -88,6 +89,37 @@ describe("ToggleControlController", () => { expect(control.disabled).toBe(true); }); }); + describe("with button as control target", () => { + beforeEach(() => { + document.body.innerHTML = `
+ +
`; + }); + + it("Enables the button control when input is filled, focus remains on input", () => { + // Simulating click on input to focus it + input.focus(); + input.value = "test" + input.dispatchEvent(new Event("input")); + + expect(control.disabled).toBe(false); + expect(document.activeElement).toBe(input); + }); + + it("Disables the button control when input is emptied, focus remains on input", () => { + // Simulating click on input to focus it + input.focus(); + input.value = "test" + input.dispatchEvent(new Event("input")); + + input.value = "" + input.dispatchEvent(new Event("input")); + + expect(control.disabled).toBe(true); + expect(document.activeElement).toBe(input); + }); + }) }); describe("#displayIfMatch", () => {