102 lines
3.6 KiB
JavaScript
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',
|
|
);
|
|
});
|