From 3f418bfc3a057359b274c3d6284096926bb5f199 Mon Sep 17 00:00:00 2001 From: synaptode <270592402+synaptode@users.noreply.github.com> Date: Tue, 7 Apr 2026 16:40:35 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20[testing]=20test=20`toggle(=5F:)?= =?UTF-8?q?`=20method=20in=20PhantomFeatureFlags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PhantomFeatureFlagsTests.swift | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Tests/PhantomSwiftTests/PhantomFeatureFlagsTests.swift b/Tests/PhantomSwiftTests/PhantomFeatureFlagsTests.swift index f4e80b2..724c671 100644 --- a/Tests/PhantomSwiftTests/PhantomFeatureFlagsTests.swift +++ b/Tests/PhantomSwiftTests/PhantomFeatureFlagsTests.swift @@ -85,4 +85,43 @@ final class PhantomFeatureFlagsTests: XCTestCase { // Let's test that it *doesn't* crash and fails gracefully (flag is false). XCTAssertFalse(sut.isEnabled(key), "Setting an override for an unregistered flag should have no effect") } + + func testToggle() { + let sut = PhantomFeatureFlags.shared + let key = UUID().uuidString + + // Register with default false + sut.register(key: key, title: "Test Toggle Flag", defaultValue: false) + XCTAssertFalse(sut.isEnabled(key)) + + // Toggle should flip it to true + sut.toggle(key) + XCTAssertTrue(sut.isEnabled(key)) + + // Toggle again should flip it to false + sut.toggle(key) + XCTAssertFalse(sut.isEnabled(key)) + } + + func testToggleWithDefaultTrue() { + let sut = PhantomFeatureFlags.shared + let key = UUID().uuidString + + // Register with default true + sut.register(key: key, title: "Test Toggle Flag True", defaultValue: true) + XCTAssertTrue(sut.isEnabled(key)) + + // Toggle should flip it to false + sut.toggle(key) + XCTAssertFalse(sut.isEnabled(key)) + } + + func testToggleUnregisteredFlag() { + let sut = PhantomFeatureFlags.shared + let key = UUID().uuidString + + // Toggling an unregistered flag should not crash and should leave it disabled. + sut.toggle(key) + XCTAssertFalse(sut.isEnabled(key)) + } }