Chart builder: drop unparseable expressions mid-edit, polite glyphed inline feedback

This commit is contained in:
2026-06-11 16:08:03 +03:00
parent 05df0cd7d3
commit d666599a58
9 changed files with 157 additions and 24 deletions
+23
View File
@@ -974,6 +974,29 @@ describe('buildTransforms (predicate coercion + shape)', () => {
};
expect(buildTransforms(config)).toEqual([]);
});
it('drops a syntactically-invalid expression filter (mid-edit preview resilience)', () => {
const t = buildTransforms(
withFilters(
filter({ mode: 'expression', expr: 'datum.value *' }), // half-typed → unparseable
filter({ id: 'f2', mode: 'expression', expr: 'datum.value > 0' }), // valid stays
),
);
expect(t).toEqual([{ filter: 'datum.value > 0' }]);
});
it('drops a calculated field whose expression does not parse', () => {
const config: BuilderConfig = {
datasetName: 'D',
mark: 'bar',
encodings: {},
calculates: [
calc({ as: 'bad', expr: 'datum.a +' }),
calc({ id: 'c2', as: 'ok', expr: 'datum.a' }),
],
};
expect(buildTransforms(config)).toEqual([{ calculate: 'datum.a', as: 'ok' }]);
});
});
describe('buildChartSpec — transform integration', () => {