Files
Investidor-V2/tests/frontend/business-locations.test.mjs
T
nala 1106509116
tests / ci (push) Canceled after 0s
vrsao 2
2026-10-08 14:02:01 +02:00

94 lines
2.6 KiB
JavaScript

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,
);
});