import assert from 'node:assert/strict'; import test from 'node:test'; import { decodeBusinessLocations, emptyBusinessLocation, encodeBusinessLocations, hasDuplicateBusinessLocationPath, updateBusinessLocation, } from '../../resources/js/lib/business-locations.ts'; void test('location paths survive draft encoding and malformed drafts are ignored safely', () => { const paths = [ { province_id: 'province-a', district_id: 'district-a', admin_post_id: '', locality_id: '', }, { province_id: 'province-b', district_id: '', admin_post_id: '', locality_id: '', }, ]; assert.deepEqual( decodeBusinessLocations(encodeBusinessLocations(paths)), paths, ); assert.deepEqual(decodeBusinessLocations('{invalid'), []); assert.deepEqual(decodeBusinessLocations('null'), []); }); void test('changing a parent clears every dependent selection in only that row', () => { const initial = { province_id: 'province-a', district_id: 'district-a', admin_post_id: 'post-a', locality_id: 'locality-a', }; const rows = [initial, emptyBusinessLocation()]; const updated = updateBusinessLocation( rows, 0, 'district_id', 'district-b', ); assert.deepEqual(updated[0], { province_id: 'province-a', district_id: 'district-b', admin_post_id: '', locality_id: '', }); assert.deepEqual(updated[1], emptyBusinessLocation()); }); void test('overlapping paths are detected while separate administrative branches remain valid', () => { assert.equal( hasDuplicateBusinessLocationPath([ { province_id: 'province-a', district_id: '', admin_post_id: '', locality_id: '', }, { province_id: 'province-a', district_id: 'district-a', admin_post_id: '', locality_id: '', }, ]), true, ); assert.equal( hasDuplicateBusinessLocationPath([ { province_id: 'province-a', district_id: 'district-a', admin_post_id: '', locality_id: '', }, { province_id: 'province-a', district_id: 'district-b', admin_post_id: '', locality_id: '', }, emptyBusinessLocation(), ]), false, ); });