Files
Investidor-V2/tests/frontend/search-territory.test.mjs
T

102 lines
3.6 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
searchTerritoryHref,
investmentPreparationHref,
} from '../../resources/js/lib/search-territory.ts';
void test('preparation carries only the validated portfolio origin and territorial choices, including nested catalogue return context', () => {
const href = investmentPreparationHref(
53,
'/oportunidades/florestas?province_id=p&district_id=d&q=private-note&context=other',
'origin',
);
const query = new URL(href, 'https://portal.invalid').searchParams;
assert.equal(query.get('source'), 'opportunity:53');
assert.equal(query.get('from_dossier'), 'origin');
assert.equal(query.get('province_id'), 'p');
assert.equal(query.get('district_id'), 'd');
assert.equal(query.has('q'), false);
assert.equal(query.has('context'), false);
assert.equal(
new URL(
investmentPreparationHref(
53,
'/oportunidades/florestas?catalogue_query=' +
encodeURIComponent('province_id=p&district_id=d'),
),
'https://portal.invalid',
).searchParams.get('district_id'),
'd',
);
});
void test('portfolio to catalogue to related screen retains only territorial search filters', () => {
const start =
'/carteira?province_id=inh&district_id=vil&q=airport&kind=project';
const catalogue = searchTerritoryHref('/oportunidades?view=grid', start);
assert.equal(
catalogue,
'/oportunidades?view=grid&province_id=inh&district_id=vil',
);
const detail = searchTerritoryHref('/carteira/id', catalogue);
assert.equal(
searchTerritoryHref('/carteira', detail),
'/carteira?province_id=inh&district_id=vil',
);
assert.equal(
searchTerritoryHref('/zonas?category=zee', start),
'/zonas?category=zee&province_id=inh&district_id=vil',
);
});
void test('nested historical return query restores territory without importing unrelated filters', () => {
assert.equal(
searchTerritoryHref(
'/oportunidades',
'/carteira/id?catalogue_query=' +
encodeURIComponent('province_id=inh&district_id=vil&q=airport'),
),
'/oportunidades?province_id=inh&district_id=vil',
);
});
void test('explicit parent changes or clearing never import incompatible descendants', () => {
const current =
'/oportunidades?province_id=inh&district_id=vil&admin_post_id=post&locality_id=loc';
assert.equal(
searchTerritoryHref('/carteira?province_id=cabo', current),
'/carteira?province_id=cabo',
);
assert.equal(
searchTerritoryHref('/carteira?district_id=other', current),
'/carteira?district_id=other&province_id=inh',
);
assert.equal(
searchTerritoryHref('/carteira?province_id=', current),
'/carteira?province_id=',
);
});
void test('no cross-tab, project, account, external or unrelated route inheritance', () => {
assert.equal(
searchTerritoryHref('/oportunidades', '/carteira'),
'/oportunidades',
);
assert.equal(
searchTerritoryHref(
'/oportunidades',
'/investimentos/id?province_id=private',
),
'/oportunidades',
);
assert.equal(
searchTerritoryHref('/investimentos/id', '/carteira?province_id=inh'),
'/investimentos/id',
);
assert.equal(
searchTerritoryHref(
'https://other.test/carteira',
'/carteira?province_id=inh',
),
'https://other.test/carteira',
);
});