52 lines
2.3 KiB
PHP
52 lines
2.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Finanzmanager\Database;
|
|
use Finanzmanager\Models\Einstellung;
|
|
use Finanzmanager\Services\E2EEinstellungen;
|
|
|
|
/**
|
|
* Die Einstellungen überleben einen E2E-Lauf: Was der Lauf ändert, anlegt oder
|
|
* löscht, ist nach dem Wiederherstellen wieder weg. Anlass: Der Bargeld-Test
|
|
* leerte die Adresse des Bargeld-Tools in der echten Instanz.
|
|
*/
|
|
class E2EEinstellungenTest extends TestCase
|
|
{
|
|
protected string $testName = 'Test 48: E2E-Einstellungen sichern und wiederherstellen';
|
|
|
|
public function run(): void
|
|
{
|
|
$pfad = $this->tempPfad('.json');
|
|
Einstellung::set('e2e_probe_url', 'https://kasse.example.net', 'bargeld');
|
|
Einstellung::set('e2e_probe_tage', '10', 'bargeld');
|
|
|
|
$vorher = Database::fetchAll('SELECT * FROM einstellungen ORDER BY schluessel');
|
|
|
|
$anzahl = E2EEinstellungen::sichern($pfad);
|
|
$this->assertEquals(count($vorher), $anzahl, 'Alle Zeilen werden gesichert');
|
|
|
|
// Der Lauf ändert, leert, löscht und legt an.
|
|
Einstellung::set('e2e_probe_url', '', 'bargeld');
|
|
Einstellung::set('e2e_probe_tage', '99', 'bargeld');
|
|
Einstellung::set('e2e_probe_neu', 'x', 'allgemein');
|
|
Database::execute("DELETE FROM einstellungen WHERE bereich = 'darstellung'");
|
|
|
|
$this->assertNull(E2EEinstellungen::sichern($pfad), 'Eine vorhandene Sicherung wird nicht überschrieben');
|
|
|
|
$wieder = E2EEinstellungen::wiederherstellen($pfad);
|
|
$this->assertEquals(count($vorher), $wieder, 'Alle Zeilen kommen zurück');
|
|
Einstellung::cacheLeeren();
|
|
|
|
$this->assertEquals('https://kasse.example.net', Einstellung::get('e2e_probe_url'), 'Die geleerte Adresse ist wieder da');
|
|
$this->assertEquals('10', Einstellung::get('e2e_probe_tage'), 'Der geänderte Wert ist zurückgesetzt');
|
|
$this->assertNull(Einstellung::get('e2e_probe_neu'), 'Vom Lauf angelegte Einstellungen verschwinden');
|
|
$this->assertEquals(
|
|
$vorher,
|
|
Database::fetchAll('SELECT * FROM einstellungen ORDER BY schluessel'),
|
|
'Die Tabelle ist Zeile für Zeile wie vorher, einschließlich Bereich und Änderungszeit'
|
|
);
|
|
$this->assert(!is_file($pfad), 'Die Sicherung ist danach gelöscht');
|
|
$this->assertNull(E2EEinstellungen::wiederherstellen($pfad), 'Ohne Sicherung geschieht nichts');
|
|
}
|
|
}
|