diff --git a/app/Support/OperatingMode.php b/app/Support/OperatingMode.php new file mode 100644 index 0000000..72afaca --- /dev/null +++ b/app/Support/OperatingMode.php @@ -0,0 +1,41 @@ +value)) + ?? self::Live; + } + + public static function set(self $mode): void + { + Settings::set(self::SETTING, $mode->value); + } + + public function isTest(): bool + { + return $this === self::Test; + } +} diff --git a/tests/Feature/OperatingModeTest.php b/tests/Feature/OperatingModeTest.php new file mode 100644 index 0000000..9ffd0b1 --- /dev/null +++ b/tests/Feature/OperatingModeTest.php @@ -0,0 +1,34 @@ +toBe(OperatingMode::Live); +}); + +it('reads the stored mode', function () { + Settings::set('platform.mode', 'test'); + + expect(OperatingMode::current())->toBe(OperatingMode::Test); +}); + +it('falls back to live when the stored value is not a mode', function () { + // Eine Zeile, die von Hand oder von einer alten Fassung geschrieben wurde. + // Live ist die sichere Richtung: eine echte Zahlung wird korrekt behandelt, + // ein Testereignis scheitert laut. + Settings::set('platform.mode', 'staging'); + + expect(OperatingMode::current())->toBe(OperatingMode::Live); +}); + +it('writes the mode and takes effect immediately', function () { + OperatingMode::set(OperatingMode::Test); + + expect(OperatingMode::current())->toBe(OperatingMode::Test); +});