Release v1.3.83 — Fortschritt zeigte Übersetzungsschlüssel
Unter jedem Schritt stand `dashboard.step_state.done` statt eines Wortes —
im Adminbereich UND im Kundenportal, wo derselbe Stepper jemanden durch die
Einrichtung seiner Cloud begleitet.
Die Schlüssel gab es in keiner der beiden Sprachdateien. Die Paritätsprüfung
aus R16 konnte das nicht finden: sie vergleicht Deutsch mit Englisch, und die
beiden waren sich einig. Der Aufruf ist zusätzlich zusammengesetzt
(`__('dashboard.step_state.'.$state)`), also findet ihn auch keine Suche nach
festen Zeichenketten. Der neue Test rendert deshalb das Bauteil und prüft alle
vier Zustände in beiden Sprachen.
Dazu ein Test, der heute Nacht hochgegangen ist: PortalInvoicesTest verbot die
Zeichenkette '01.08.2026' — das Datum aus einer alten Attrappe. Heute ist der
1. August 2026, und die echten Rechnungen des Tests tragen das
Ausstellungsdatum von heute. Eine Zusicherung, die ein Datum verbietet,
verbietet auch den Tag, an dem es echt wird. Was die Attrappe ausmachte, war
ihr Satz, und den prüft der Nachbartest über 'Nächste Abbuchung' — stabil,
weil er nirgends sonst entsteht.
2235 Tests grün.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
feat/hostnamen-vergabe
v1.3.83
parent
ac81bc5b98
commit
e0c0bb2c29
|
|
@ -1,6 +1,19 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// Die Unterzeile je Schritt im Fortschritt (x-ui.progress-stepper). Sie
|
||||
// fehlte, also stand dort der Schlüssel selbst — im Adminbereich UND im
|
||||
// Kundenportal, wo der Stepper die Einrichtung begleitet.
|
||||
//
|
||||
// Der Punkt daneben trägt denselben Zustand als Farbe. Beides ist Absicht:
|
||||
// Farbe allein liest nicht jeder.
|
||||
'step_state' => [
|
||||
'pending' => 'Ausstehend',
|
||||
'running' => 'Läuft',
|
||||
'done' => 'Erledigt',
|
||||
'failed' => 'Fehlgeschlagen',
|
||||
],
|
||||
|
||||
'traffic' => [
|
||||
'title' => 'Datenvolumen diesen Monat',
|
||||
'label' => 'Datenvolumen',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,19 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// The sub-line under each step in x-ui.progress-stepper. It was missing, so
|
||||
// the key itself was printed — in the console AND in the customer portal,
|
||||
// where the stepper walks somebody through their setup.
|
||||
//
|
||||
// The dot beside it carries the same state as colour. Both on purpose:
|
||||
// colour alone is not readable by everyone.
|
||||
'step_state' => [
|
||||
'pending' => 'Pending',
|
||||
'running' => 'Running',
|
||||
'done' => 'Done',
|
||||
'failed' => 'Failed',
|
||||
],
|
||||
|
||||
'traffic' => [
|
||||
'title' => 'Data transfer this month',
|
||||
'label' => 'Data transfer',
|
||||
|
|
|
|||
|
|
@ -62,10 +62,18 @@ it('lists the invoices this customer was actually issued, with their real number
|
|||
->assertSee('214,80')
|
||||
// Newest first: the one somebody came here to fetch is the last one.
|
||||
->assertViewHas('invoices', fn ($invoices) => $invoices->first()->is($newer))
|
||||
// And nothing invented. These were the mock's, and its prefix belongs to
|
||||
// And nothing invented. This was the mock's, and its prefix belongs to
|
||||
// no configured series.
|
||||
->assertDontSee('CP-2026-0007')
|
||||
->assertDontSee('01.08.2026');
|
||||
//
|
||||
// Hier stand einmal auch `assertDontSee('01.08.2026')` — das Datum aus
|
||||
// der Attrappe. Es hat am 1. August 2026 zugeschlagen: die echten
|
||||
// Rechnungen dieses Tests tragen das Ausstellungsdatum von heute, also
|
||||
// war die Zeichenkette plötzlich zu Recht auf der Seite. Eine
|
||||
// Zusicherung, die ein Datum verbietet, verbietet auch den Tag, an dem
|
||||
// es echt wird. Was die Attrappe wirklich ausmachte, war ihr Satz, und
|
||||
// den prüft der Test „says nothing at all about a next charge" nebenan
|
||||
// über 'Nächste Abbuchung' — stabil, weil er nirgends sonst entsteht.
|
||||
->assertDontSee('CP-2026-0007');
|
||||
});
|
||||
|
||||
it('never shows one customer another customer\'s invoice', function () {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
|
||||
/**
|
||||
* Unter jedem Schritt steht ein Wort, kein Schlüssel.
|
||||
*
|
||||
* `dashboard.step_state.done` stand wörtlich unter jedem Schritt — im
|
||||
* Adminbereich UND im Kundenportal, wo derselbe Stepper jemanden durch die
|
||||
* Einrichtung seiner Cloud begleitet.
|
||||
*
|
||||
* Zwei Gründe, warum das durchkam, und beide erklären, warum dieser Test so
|
||||
* aussieht, wie er aussieht:
|
||||
*
|
||||
* - Die Paritätsprüfung aus R16 vergleicht Deutsch mit Englisch. Der Schlüssel
|
||||
* fehlte in BEIDEN, also waren sie sich einig.
|
||||
* - Der Aufruf ist zusammengesetzt (`__('dashboard.step_state.'.$state)`).
|
||||
* Keine Suche nach festen Zeichenketten findet ihn.
|
||||
*
|
||||
* Bleibt das, was das Bauteil wirklich ausgibt.
|
||||
*/
|
||||
it('names every step state instead of printing its key', function (string $state) {
|
||||
foreach (['de', 'en'] as $locale) {
|
||||
app()->setLocale($locale);
|
||||
|
||||
$html = Blade::render(
|
||||
'<x-ui.progress-stepper :steps="$steps" />',
|
||||
['steps' => [['label' => 'Ein Schritt', 'state' => $state]]],
|
||||
);
|
||||
|
||||
expect($html)->not->toContain('dashboard.step_state')
|
||||
->and($html)->toContain(__('dashboard.step_state.'.$state));
|
||||
}
|
||||
})->with(['pending', 'running', 'done', 'failed']);
|
||||
Loading…
Reference in New Issue