mirror of
https://github.com/apache/superset.git
synced 2026-05-22 08:15:36 +00:00
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>
51 lines
1.8 KiB
TypeScript
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);
|
|
});
|