Shop Review B I-4: Steuerart und Lieferzeit ohne Vorbelegung
kleinunternehmer ist ab jetzt null (nicht gewaehlt), lieferzeit leer. istVollstaendig verlangt eine bewusste Wahl (true oder false), der Shop kann sonst nicht geoeffnet werden. Im Reiter Einstellungen gibt es zwei Pflicht-Radiobuttons ohne Vorauswahl; Preise, Artikel und Muster rechnen bei null wie bei Regelbesteuerung. Tests und Fixtures angepasst. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7104f97feb
commit
1f56b86791
20 files changed
+123
-20
No files matched your search
@@ -11,10 +11,10 @@ import { ANBIETER_HINWEIS, PAYPAL_HINWEIS, SEPA_WARNUNG, STRIPE_HINWEIS, render
|
||||
const STANDARD = {
|
||||
shopname: '',
|
||||
anbieter: { name: '', strasse: '', plz: '', ort: '', land: 'DE', email: '', telefon: '', ustId: '' },
|
||||
kleinunternehmer: true,
|
||||
kleinunternehmer: null,
|
||||
versand: { aktiv: true, laender: ['DE'], kostenCent: { DE: 490 }, freiAbCent: null },
|
||||
abholung: { aktiv: false, adresse: '', hinweis: '' },
|
||||
lieferzeit: '2–4 Werktage',
|
||||
lieferzeit: '',
|
||||
zahlungsarten: ['card'],
|
||||
akzent: '#111111',
|
||||
mindestbestellCent: null,
|
||||
@@ -80,6 +80,8 @@ async function oeffne(fx, ctxExtra) {
|
||||
}
|
||||
|
||||
const feldVon = (root, name) => root.querySelector(`[data-feld="${name}"]`)
|
||||
// Steuerart: zwei Radiobuttons ohne Vorauswahl
|
||||
const steuerRadio = (root, wert) => root.querySelector(`[data-feld="kleinunternehmer"][value="${wert}"]`)
|
||||
const fehlerVon = (root, name) => root.querySelector(`[data-fehler="${name}"]`)
|
||||
const speichernKnopf = (root) => root.querySelector('[data-aktion="einstellungen-speichern"]')
|
||||
const puts = (fx) => fx.fetchLog.filter((a) => a.method === 'PUT')
|
||||
@@ -95,13 +97,18 @@ test('Standardwerte: Felder gefüllt, Länder nur DE, Karte fest, Hinweise zu Kl
|
||||
assert.equal(feldVon(root, 'akzent').type, 'color')
|
||||
assert.equal(feldVon(root, 'akzent').value, '#111111')
|
||||
assert.equal(feldVon(root, 'anbieter.land').value, 'DE')
|
||||
assert.equal(feldVon(root, 'kleinunternehmer').checked, true)
|
||||
// I-4: keine Vorauswahl bei der Steuerart, Lieferzeit leer
|
||||
assert.equal(steuerRadio(root, 'ja').type, 'radio')
|
||||
assert.equal(steuerRadio(root, 'nein').type, 'radio')
|
||||
assert.equal(steuerRadio(root, 'ja').checked, false)
|
||||
assert.equal(steuerRadio(root, 'nein').checked, false)
|
||||
assert.equal(steuerRadio(root, 'ja').getAttribute('name'), steuerRadio(root, 'nein').getAttribute('name'))
|
||||
assert.equal(feldVon(root, 'versand.aktiv').checked, true)
|
||||
assert.equal(feldVon(root, 'versand.laender').value, 'DE')
|
||||
assert.equal(feldVon(root, 'versand.kostenCent.DE').value, '4,90')
|
||||
assert.equal(feldVon(root, 'versand.kostenCent.DE').type, 'text', 'Betrag als Text, Komma bleibt erlaubt')
|
||||
assert.equal(feldVon(root, 'versand.freiAbCent').value, '')
|
||||
assert.equal(feldVon(root, 'lieferzeit').value, '2–4 Werktage')
|
||||
assert.equal(feldVon(root, 'lieferzeit').value, '')
|
||||
assert.equal(feldVon(root, 'mindestbestellCent').value, '')
|
||||
assert.equal(feldVon(root, 'ruecksendekosten').value, 'kaeufer')
|
||||
assert.equal(fx.text(root).includes(ANBIETER_HINWEIS), true)
|
||||
@@ -109,7 +116,8 @@ test('Standardwerte: Felder gefüllt, Länder nur DE, Karte fest, Hinweise zu Kl
|
||||
assert.equal(fx.text(root).includes(STRIPE_HINWEIS), true)
|
||||
assert.equal(fx.text(root).includes(PAYPAL_HINWEIS), true)
|
||||
assert.match(SEPA_WARNUNG, /^Bei Lastschrift ist das Geld erst nach einigen Tagen sicher\. Versende erst, wenn die Bestellung als bezahlt markiert ist\.$/)
|
||||
assert.match(fx.text(root), /Kleinunternehmer nach § 19 UStG/)
|
||||
assert.match(fx.text(root), /Ich bin Kleinunternehmer nach § 19 UStG/)
|
||||
assert.match(fx.text(root), /Ich weise Umsatzsteuer aus/)
|
||||
// Österreich und Abholung sind zu: ihre Felder sind versteckt
|
||||
assert.equal(feldVon(root, 'versand.kostenCent.AT').closest('.sh-versand-at').hidden, true)
|
||||
assert.equal(feldVon(root, 'abholung.adresse').closest('.sh-abhol-details').hidden, true)
|
||||
@@ -134,7 +142,8 @@ test('gespeicherte Werte werden angezeigt, Österreich und Abholung sind sichtba
|
||||
assert.equal(feldVon(root, 'akzent').value, '#ff8800')
|
||||
assert.equal(feldVon(root, 'anbieter.plz').value, '67655')
|
||||
assert.equal(feldVon(root, 'anbieter.ustId').value, 'DE123456789')
|
||||
assert.equal(feldVon(root, 'kleinunternehmer').checked, false)
|
||||
assert.equal(steuerRadio(root, 'nein').checked, true)
|
||||
assert.equal(steuerRadio(root, 'ja').checked, false)
|
||||
assert.equal(feldVon(root, 'versand.laender').value, 'DE,AT')
|
||||
assert.equal(feldVon(root, 'versand.kostenCent.AT').value, '9,90')
|
||||
assert.equal(feldVon(root, 'versand.kostenCent.AT').closest('.sh-versand-at').hidden, false)
|
||||
@@ -164,6 +173,21 @@ test('Schalter blenden Österreich, Versand- und Abholfelder ein und aus', mitDo
|
||||
}))
|
||||
|
||||
/* ------------------------------------------------------------- Speichern --- */
|
||||
test('Steuerart I-4: Radiobuttons schließen sich aus, ohne Wahl wird null gespeichert, mit Wahl true oder false', mitDom({ get: ANTWORT(STANDARD, 1) }, async (fx) => {
|
||||
const { root } = await oeffne(fx)
|
||||
await fx.klick(speichernKnopf(root))
|
||||
assert.equal(puts(fx)[0].body.einstellungen.kleinunternehmer, null)
|
||||
await fx.klick(steuerRadio(root, 'ja'))
|
||||
assert.equal(steuerRadio(root, 'ja').checked, true)
|
||||
assert.equal(steuerRadio(root, 'nein').checked, false)
|
||||
await fx.klick(speichernKnopf(root))
|
||||
assert.equal(puts(fx)[1].body.einstellungen.kleinunternehmer, true)
|
||||
await fx.klick(steuerRadio(root, 'nein'))
|
||||
assert.equal(steuerRadio(root, 'ja').checked, false)
|
||||
await fx.klick(speichernKnopf(root))
|
||||
assert.equal(puts(fx)[2].body.einstellungen.kleinunternehmer, false)
|
||||
}))
|
||||
|
||||
test('Speichern: Körper mit ganzen Cent, Version, Meldung und neuLaden; der Stand des Servers kommt zurück ins Formular', mitDom({
|
||||
get: ANTWORT(STANDARD, 2),
|
||||
put: (aufruf) => ({ body: ANTWORT({ ...aufruf.body.einstellungen, anbieter: { ...aufruf.body.einstellungen.anbieter, email: 'erika@example.com' } }, 3) }),
|
||||
@@ -177,7 +201,7 @@ test('Speichern: Körper mit ganzen Cent, Version, Meldung und neuLaden; der Sta
|
||||
await fx.setze(feldVon(root, 'anbieter.ort'), 'Kaiserslautern')
|
||||
await fx.setze(feldVon(root, 'anbieter.email'), 'Erika@Example.com')
|
||||
await fx.setze(feldVon(root, 'anbieter.ustId'), 'DE123456789')
|
||||
await fx.klick(feldVon(root, 'kleinunternehmer'))
|
||||
await fx.klick(steuerRadio(root, 'nein'))
|
||||
await fx.setze(feldVon(root, 'versand.laender'), 'DE,AT')
|
||||
await fx.setze(feldVon(root, 'versand.kostenCent.DE'), '4,9')
|
||||
await fx.setze(feldVon(root, 'versand.kostenCent.AT'), '9,90')
|
||||
|
||||
Reference in new issue
Block a user