37 lines
3.0 KiB
JavaScript
37 lines
3.0 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { searchTerritoryHref, investmentPreparationHref } from '../../resources/js/lib/search-territory.ts';
|
|
|
|
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');
|
|
});
|
|
|
|
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');
|
|
});
|
|
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');
|
|
});
|
|
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=');
|
|
});
|
|
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');
|
|
});
|