36 lines
3.0 KiB
JavaScript
36 lines
3.0 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {opportunityFillGroups,opportunityErrorGroup,opportunityMissingGroups} from '../../resources/js/lib/opportunity-fill-flow.ts';
|
|
import {territorialSearchParams} from '../../resources/js/lib/territorial-search-params.ts';
|
|
import {documentFacetLabel} from '../../resources/js/lib/document-facet-label.ts';
|
|
|
|
test('adaptive groups keep every applicable schema field once, including new specialized fields',()=>{
|
|
const keys=['official_title','locations','sector_id','documents','currency','real_estate','future_schema_field','currency'];
|
|
const groups=opportunityFillGroups(keys);
|
|
assert.deepEqual(groups.flatMap(group=>group.fields).sort(),[...new Set(keys)].sort());
|
|
assert.ok(groups.find(group=>group.id==='specific').fields.includes('future_schema_field'));
|
|
assert.deepEqual(opportunityFillGroups(['official_title']).map(group=>group.id),['idea']);
|
|
assert.deepEqual(opportunityFillGroups([]),[]);
|
|
});
|
|
test('saved pending fields and validation errors point to the correct existing group without inventing applicability',()=>{
|
|
const groups=opportunityFillGroups(['official_title','locations','total_investment']);
|
|
assert.equal(opportunityErrorGroup(groups,{'canonical.total_investment':'Valor em falta'}),'finance');
|
|
assert.equal(opportunityErrorGroup(groups,{'canonical.locations.0':'Local em falta'}),'territory');
|
|
assert.deepEqual(opportunityMissingGroups(groups,['locations.0','canonical.total_investment']).map(group=>group.id),['territory','finance']);
|
|
assert.equal(opportunityErrorGroup(groups,{reason:'Motivo em falta'}),undefined);
|
|
});
|
|
test('territorial search replaces old descendants while retaining all selected non-territorial filters',()=>{
|
|
const entries=[['province_id','old'],['district_id','old-child'],['locality_id','old-leaf'],['category','zee'],['q','Nacala'],['page','5']];
|
|
const scoped=territorialSearchParams(entries,[{id:'new',location_type:'province'}]);
|
|
assert.equal(scoped.get('province_id'),'new');assert.equal(scoped.has('district_id'),false);assert.equal(scoped.has('locality_id'),false);
|
|
assert.equal(scoped.get('category'),'zee');assert.equal(scoped.get('q'),'Nacala');assert.equal(scoped.has('page'),false);
|
|
const all=territorialSearchParams(entries,[]);assert.equal(all.has('province_id'),false);assert.equal(all.get('category'),'zee');
|
|
const unchanged=territorialSearchParams(entries);assert.equal(unchanged.get('district_id'),'old-child');
|
|
});
|
|
test('document facets have readable labels while original query identifiers remain unchanged',()=>{
|
|
const original=['agronegocio','education','media','pt','turismo'];
|
|
assert.deepEqual(original.map(documentFacetLabel),['Agronegócio','Formação e competências','Imagens e conteúdos de apoio','Português','Turismo']);
|
|
assert.deepEqual(original,['agronegocio','education','media','pt','turismo']);
|
|
assert.equal(documentFacetLabel('Tema definido pela Tempo'),'Tema definido pela Tempo');
|
|
});
|