buildQuery.test.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. import { getChartBuildQueryRegistry } from '@superset-ui/core';
  20. import buildQuery from '../../src/plugin/buildQuery';
  21. describe('CartodiagramPlugin buildQuery', () => {
  22. const selectedChartParams = {
  23. extra_form_data: {},
  24. groupby: [],
  25. };
  26. const selectedChart = {
  27. viz_type: 'pie',
  28. params: JSON.stringify(selectedChartParams),
  29. };
  30. const formData = {
  31. datasource: '5__table',
  32. granularity_sqla: 'ds',
  33. series: 'foo',
  34. viz_type: 'my_chart',
  35. selected_chart: JSON.stringify(selectedChart),
  36. geom_column: 'geom',
  37. };
  38. let chartQueryBuilderMock: jest.MockedFunction<any>;
  39. beforeEach(() => {
  40. chartQueryBuilderMock = jest.fn();
  41. const registry = getChartBuildQueryRegistry();
  42. registry.registerValue('pie', chartQueryBuilderMock);
  43. });
  44. afterEach(() => {
  45. // remove registered buildQuery
  46. const registry = getChartBuildQueryRegistry();
  47. registry.clear();
  48. });
  49. it('should call the buildQuery function of the referenced chart', () => {
  50. buildQuery(formData);
  51. expect(chartQueryBuilderMock.mock.calls).toHaveLength(1);
  52. });
  53. it('should build groupby with geom in form data', () => {
  54. const expectedParams = { ...selectedChartParams, groupby: ['geom'] };
  55. buildQuery(formData);
  56. expect(chartQueryBuilderMock.mock.calls[0][0]).toEqual(expectedParams);
  57. });
  58. });