Hustler-Stufe: Keller begehbar ab Stufe 3, Bot-Leads abrufbar erst ab Stufe 6
Die Stufen-Sperre trennt jetzt zwei Dinge: KELLER_BEGEHBAR_AB = 3 (Keller-Etage als Link, ?tab=botleads gueltig, Spur-Links in den Keller) und BOTLEADS_AB = 6 (Abruf von GET /botleads). kellerOffen/STUFE_KELLER entfallen, dafuer kellerBegehbar() und botleadsAbrufbar(). workersApi.botleads bleibt unter Stufe 6 hart gesperrt, der Text heisst nun BOTLEADS_GESPERRT_TEXT. Die Keller-Ansicht selbst (leeres Register ohne Abruf) folgt im naechsten Commit. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8363b63374
commit
6eb4dd3c51
11 files changed
+121
-82
No files matched your search
@@ -121,7 +121,7 @@ async function start(initial = {}) {
|
||||
const state = initial.state === undefined ? makeState() : initial.state
|
||||
const handle = { current: null }
|
||||
// Stufen-Sperre (hustlerStufe.js): die Zusicherungen dieser Datei gelten für das volle Haus (Stufe 6, Keller offen, Verhalten wie vor der Sperre);
|
||||
// stufe: 3 (Keller gesperrt) steht in den eigenen Tests am Ende des Abschnitts „Etagen“
|
||||
// stufe 1 und 2 (Keller zu) und 3 (Keller begehbar, leer) stehen in den eigenen Tests am Ende des Abschnitts „Etagen“
|
||||
let props = { state, workers: state ? indexWorkers(state) : {}, onZeige() {}, onOpen() {}, stufe: 6, ...initial }
|
||||
const mounted = __mount(jsx(() => jsx(HochhausWelt, { ...props, ref: handle }), {}))
|
||||
await settle()
|
||||
@@ -480,10 +480,10 @@ test('Etagen: ein Etagen-Knopf zoomt heran (Kamera wie kameraEtage), ohne onOpen
|
||||
} finally { ui.end(); restore() }
|
||||
})
|
||||
|
||||
// Stufen-Sperre: unterhalb der Keller-Stufe (6) gibt es keinen Weg in den Keller; die Etage verhält sich wie jede andere (zoomt heran), Arne bleibt klickbar
|
||||
test('Etagen bei Stufe 3 und 5: nur Freigabe ist ein Link, die Keller-Etage ist ein Knopf wie die anderen (Beschriftung, Text, kein href)', async () => {
|
||||
// Stufen-Sperre: unterhalb von Stufe 3 (KELLER_BEGEHBAR_AB) gibt es keinen Weg in den Keller; die Etage verhält sich wie jede andere (zoomt heran), Arne bleibt klickbar
|
||||
test('Etagen bei Stufe 1 und 2: nur Freigabe ist ein Link, die Keller-Etage ist ein Knopf wie die anderen (Beschriftung, Text, kein href)', async () => {
|
||||
const { ETAGEN } = await laden()
|
||||
for (const stufe of [1, 3, 5]) {
|
||||
for (const stufe of [1, 2]) {
|
||||
const ui = await start({ stufe })
|
||||
try {
|
||||
const etagen = byClass(ui.tree(), 'hk-etage')
|
||||
@@ -507,11 +507,11 @@ test('Etagen bei Stufe 3 und 5: nur Freigabe ist ein Link, die Keller-Etage ist
|
||||
}
|
||||
})
|
||||
|
||||
test('Stufe 3: Klick auf die Keller-Etage zoomt heran und öffnet keinen Bildschirm; die Freigabe-Etage öffnet weiter das Pult', async () => {
|
||||
test('Stufe 1 und 2: Klick auf die Keller-Etage zoomt heran und öffnet keinen Bildschirm; die Freigabe-Etage öffnet weiter das Pult', async () => {
|
||||
const { kameraEtage, ETAGEN } = await laden()
|
||||
const geoeffnet = []
|
||||
const restore = fensterAttrappe()
|
||||
const ui = await start({ stufe: 3, onOpen: (tab) => geoeffnet.push(tab) })
|
||||
const ui = await start({ stufe: 2, onOpen: (tab) => geoeffnet.push(tab) })
|
||||
try {
|
||||
ui.anhaengen()
|
||||
const keller = ETAGEN.find((e) => e.id === 'keller')
|
||||
@@ -540,13 +540,17 @@ test('Stufe 3: Arne bleibt im Haus sichtbar und klickbar (Detail-Dialog), auch d
|
||||
} finally { ui.end() }
|
||||
})
|
||||
|
||||
test('Stufe 6 und höher: die Keller-Etage bleibt der Link auf die Bot-Leads (wie vor der Sperre)', async () => {
|
||||
for (const stufe of [6, 7, 9]) {
|
||||
const ui = await start({ stufe })
|
||||
// Ab Stufe 3 ist der Keller begehbar (auch ohne Bot-Leads): die Etage ist der Link, genau wie mit Live-Daten ab Stufe 6
|
||||
test('Ab Stufe 3 (Produktion) und höher: die Keller-Etage ist der Link auf den Keller (wie vor der Sperre), Klick wechselt den Bildschirm', async () => {
|
||||
for (const stufe of [3, 4, 5, 6, 7, 9]) {
|
||||
const geoeffnet = []
|
||||
const ui = await start({ stufe, onOpen: (tab) => geoeffnet.push(tab) })
|
||||
try {
|
||||
const keller = ui.etage('Keller · Bot-Leads ▸')
|
||||
assert.equal(keller.tag, 'a', `Stufe ${stufe}`); assert.equal(keller.props.href, '/hustler?tab=botleads')
|
||||
assert.equal(keller.props['aria-label'], 'Keller · Bot-Leads: Bot-Leads öffnen')
|
||||
const e = ereignis(); keller.props.onClick(e)
|
||||
assert.equal(e.defaultPrevented, true, `Stufe ${stufe}`); assert.deepEqual(geoeffnet, ['botleads'], `Stufe ${stufe}`)
|
||||
} finally { ui.end() }
|
||||
}
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user