mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Chart builder: drop unparseable expressions mid-edit, polite glyphed inline feedback
This commit is contained in:
@@ -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', () => {
|
||||
|
||||
Reference in New Issue
Block a user