fix: the TAR probe view auto-selects the preset; the keyset selectors refresh (v3.8.0)
Two selector bugs in the new TAR-probe view and one stale-list bug in the RAM view, all from the lazy population of the view-specific preset selects: - cardsAutoSelectByIccid() set sp-card-sel and ram-card-sel only, so the TAR probe view never got the equipped card's preset (and tarExecute() then ran with preset_id: '', i.e. without persisting the counters it consumed); - tarRender()'s keep-fallback was -1 instead of the remembered _ramCardIdx, so the select stayed on "— Select card —" even when the auto-selection had remembered the preset; the TAR pill switch now also calls tarRender(); - the keyset selectors showed a stale "N — not defined in the preset": spKeysetSync() runs during the auto-selection, when ram/tar-card-sel have no options yet, so those lists were built with no preset; ramRender() now rebuilds them (spKeysetSync) once its preset is known - tarRender() already did. Tests: the auto-select covers tar-card-sel; a DOM-driven regression test (ramRender with a remembered preset and a two-keyset preset must show value="2" selected and no "not defined" entry); source guards for ramRender's sync, tarRender's keep and the TAR pill switch. sw cache simple-v339.
This commit is contained in:
@@ -34,7 +34,8 @@ const RAW_HEX = '980711090000640090F8';
|
||||
const DIGITS = '8970119000004600098';
|
||||
|
||||
function fakeDoc() {
|
||||
const els = { 'sp-card-sel': { value: '' }, 'ram-card-sel': { value: '' }, 'cards-iccid': { value: '' } };
|
||||
const els = { 'sp-card-sel': { value: '' }, 'ram-card-sel': { value: '' },
|
||||
'tar-card-sel': { value: '' }, 'cards-iccid': { value: '' } };
|
||||
globalThis.document = { getElementById: id => els[id] || null };
|
||||
return els;
|
||||
}
|
||||
@@ -78,6 +79,8 @@ test('cardsAutoSelectByIccid selects the preset in both SCP80 views', () => {
|
||||
assert.strictEqual(idx, 0);
|
||||
assert.strictEqual(els['sp-card-sel'].value, '0');
|
||||
assert.strictEqual(els['ram-card-sel'].value, '0');
|
||||
assert.strictEqual(els['tar-card-sel'].value, '0',
|
||||
'the TAR probe view gets the equipped card\'s preset too');
|
||||
assert.deepStrictEqual(applied, ['0']);
|
||||
assert.strictEqual(globalThis._ramCardIdx, 0);
|
||||
});
|
||||
@@ -162,5 +165,7 @@ test('the From card button and the duplicate refusal are wired into the form', (
|
||||
test('the card-state update wires the ICCID into the preset selection', () => {
|
||||
assert.ok(html.includes('cardsAutoSelectByIccid(status.iccid);'));
|
||||
assert.ok(html.includes('_cardsAutoIccid = null;'));
|
||||
assert.ok(html.includes("getElementById('tar-card-sel')"),
|
||||
'the auto-selection must cover the TAR probe view');
|
||||
assert.ok(html.includes("(data.iccid ? ' | ICCID: <b>' + esc(data.iccid) + '</b>' : '')"));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user