<?php

use App\Support\OperatingMode;
use App\Support\Settings;

/**
 * Der Modus entscheidet, welche Zugangsdaten gelten. Er wird an genau einer
 * Stelle gelesen, damit nirgends sonst ein String verglichen wird — ein
 * Tippfehler in einem Vergleich wäre sonst ein stiller Wechsel auf Live.
 */
it('is live when nothing has been stored', function () {
    expect(OperatingMode::current())->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);
});
