import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import { createLatestRequestGuard } from '../../../admin/src/views/pharmacy/medicine_mapping/latest-request.mjs' const list = createLatestRequestGuard() const firstList = list.next({ page_no: 1, local_name: 'A' }) const secondList = list.next({ page_no: 2, local_name: 'B' }) assert.deepEqual(firstList.snapshot, { page_no: 1, local_name: 'A' }) assert.equal(list.isLatest(firstList), false) assert.equal(list.isLatest(secondList), true) const catalog = createLatestRequestGuard() const rowA = catalog.next({ localMedicineId: 1, keyword: 'A' }) catalog.invalidate() const rowB = catalog.next({ localMedicineId: 2, keyword: 'B' }) assert.equal(catalog.isLatest(rowA), false) assert.equal(catalog.isLatest(rowB), true) assert.deepEqual(rowB.snapshot, { localMedicineId: 2, keyword: 'B' }) const statusRequests = createLatestRequestGuard() const mountedStatus = statusRequests.next({ source: 'mount' }) const syncedStatus = statusRequests.next({ source: 'sync' }) const savedStatus = statusRequests.next({ source: 'save' }) const unlinkedStatus = statusRequests.next({ source: 'unlink' }) assert.equal(statusRequests.isLatest(mountedStatus), false) assert.equal(statusRequests.isLatest(syncedStatus), false) assert.equal(statusRequests.isLatest(savedStatus), false) assert.equal(statusRequests.isLatest(unlinkedStatus), true) list.next({ page_no: 3, local_name: 'C' }) catalog.invalidate() assert.equal(statusRequests.isLatest(unlinkedStatus), true) const page = readFileSync( new URL('../../../admin/src/views/pharmacy/medicine_mapping/index.vue', import.meta.url), 'utf8' ) assert.match(page, /medicineMappingLists\(ticket\.snapshot\)/) assert.match(page, /listRequests\.isLatest\(ticket\)/) assert.match(page, /catalogRequests\.invalidate\(\)/) assert.match(page, /catalogRequests\.isLatest\(ticket\)/) assert.match(page, /localMedicineId/) assert.match(page, /const initialTicket = await searchCatalogNow\(rowSnapshot\.local_name, localMedicineId\)/) assert.match(page, /catalogRequests\.isLatest\(initialTicket\)/) assert.match(page, /const statusRequests = createLatestRequestGuard/) const loadStatusStart = page.indexOf('const loadStatus = async () => {') const loadStatusEnd = page.indexOf('\nconst search =', loadStatusStart) assert.ok(loadStatusStart >= 0 && loadStatusEnd > loadStatusStart) const loadStatusSource = page.slice(loadStatusStart, loadStatusEnd) assert.match(loadStatusSource, /const ticket = statusRequests\.next\(undefined\)/) assert.match(loadStatusSource, /const nextStatus = await medicineMappingStatus\(\)/) assert.match( loadStatusSource, /if \(statusRequests\.isLatest\(ticket\)\) \{\s*status\.value = nextStatus\s*\}/ ) assert.match( loadStatusSource, /finally\s*\{\s*if \(statusRequests\.isLatest\(ticket\)\) \{\s*statusLoading\.value = false\s*\}/ ) assert.equal(page.match(/loadStatus\(\)/g)?.length, 4) console.log('zyt mapping latest-request behavior and production wiring passed: 25')