Files
superset2/superset-frontend/plugins/plugin-chart-country-map/test/plugin/buildQuery.test.ts
Evan Rusackas 52dfc853d2 test(country-map): transformProps + buildQuery tests
transformProps tests cover the URL-derivation logic — the core piece
that maps form_data into the right build-pipeline output:

- Admin 0 + worldview → world choropleth URL
- Admin 1 + country → per-country file
- Region set + country → regional aggregation
- Composite overrides admin level + country
- Worldview defaults to 'ukr' when not specified
- Different worldviews reflected in URL
- Admin 1 without country → null URL (chart UI prompts)
- Pass-through of metricName/numberFormat/linearColorScheme
- Pass-through of query data + width/height

buildQuery tests cover that we're producing a valid chart/data
QueryContext with the expected shape (one query, form_data preserved,
orderby normalized as array).

These are the units most likely to break silently if someone refactors
the form_data → URL mapping or the query layer.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 17:01:25 -07:00

51 lines
1.8 KiB
TypeScript

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import buildQuery from '../../src/plugin/buildQuery';
import { CountryMapFormData } from '../../src/types';
const baseFormData: CountryMapFormData = {
datasource: '3__table',
viz_type: 'country_map',
metric: 'sum__num',
entity: 'iso_code',
adhoc_filters: [],
};
test('buildQuery returns a chart/data context with one query', () => {
const ctx = buildQuery(baseFormData);
expect(ctx).toBeDefined();
expect(Array.isArray(ctx.queries)).toBe(true);
expect(ctx.queries.length).toBe(1);
});
test('buildQuery preserves form data on the context', () => {
const ctx = buildQuery(baseFormData);
expect(ctx.form_data).toMatchObject({
viz_type: 'country_map',
metric: 'sum__num',
entity: 'iso_code',
});
});
test('buildQuery normalizes orderby on the query object', () => {
const ctx = buildQuery({ ...baseFormData, order_desc: true });
// orderby should be present as an array (possibly empty if no metric ordering)
expect(Array.isArray(ctx.queries[0].orderby)).toBe(true);
});