152 lines
4.5 KiB
TypeScript
Generated
152 lines
4.5 KiB
TypeScript
Generated
|
|
/*
|
|
* 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 { init, use, EChartsType } from '@/src/export/core';
|
|
import {
|
|
PieChart
|
|
} from '@/src/export/charts';
|
|
import {
|
|
TitleComponent
|
|
} from '@/src/export/components';
|
|
import {
|
|
CanvasRenderer
|
|
} from '@/src/export/renderers';
|
|
use([PieChart, TitleComponent, CanvasRenderer]);
|
|
import { EChartsOption } from '@/src/export/option';
|
|
|
|
|
|
function createChart(theme?: object): EChartsType {
|
|
const el = document.createElement('div');
|
|
Object.defineProperty(el, 'clientWidth', {
|
|
get() {
|
|
return 500;
|
|
}
|
|
});
|
|
Object.defineProperty(el, 'clientHeight', {
|
|
get() {
|
|
return 400;
|
|
}
|
|
});
|
|
const chart = init(el, theme);
|
|
return chart;
|
|
};
|
|
|
|
function makeComponentError(componentName: string, componentImportName: string) {
|
|
return `[ECharts] Component ${componentName} is used but not imported.
|
|
import { ${componentImportName} } from 'echarts/components';
|
|
echarts.use([${componentImportName}]);`;
|
|
}
|
|
|
|
function makeSerieError(seriesName: string, seriesImportName: string) {
|
|
return `[ECharts] Series ${seriesName} is used but not imported.
|
|
import { ${seriesImportName} } from 'echarts/charts';
|
|
echarts.use([${seriesImportName}]);`;
|
|
}
|
|
|
|
|
|
// !!!!IMPORTANTE NOTE:
|
|
// DO NOT test on the same component twice.
|
|
// Because error message will be cached. It will not report on the same component twice.
|
|
|
|
describe('model_componentMissing', function () {
|
|
const oldConsoleErr = console.error;
|
|
|
|
it('Should report grid component missing error', function () {
|
|
const chart = createChart();
|
|
console.error = jest.fn();
|
|
chart.setOption<EChartsOption>({
|
|
xAxis: {},
|
|
yAxis: {},
|
|
series: []
|
|
});
|
|
expect(console.error).toHaveBeenCalledWith(
|
|
makeComponentError('xAxis', 'GridComponent')
|
|
);
|
|
|
|
console.error = oldConsoleErr;
|
|
});
|
|
|
|
it('Should report dataZoom component missing error', function () {
|
|
const chart = createChart();
|
|
console.error = jest.fn();
|
|
chart.setOption<EChartsOption>({
|
|
dataZoom: {}
|
|
});
|
|
expect(console.error).toHaveBeenCalledWith(
|
|
makeComponentError('dataZoom', 'DataZoomComponent')
|
|
);
|
|
|
|
console.error = oldConsoleErr;
|
|
});
|
|
|
|
it('Should not report title component missing error', function () {
|
|
const chart = createChart();
|
|
console.error = jest.fn();
|
|
chart.setOption<EChartsOption>({
|
|
title: {},
|
|
series: []
|
|
});
|
|
expect(console.error).not.toBeCalled();
|
|
|
|
console.error = oldConsoleErr;
|
|
});
|
|
|
|
it('Should report funnel series missing error', function () {
|
|
const chart = createChart();
|
|
console.error = jest.fn();
|
|
chart.setOption<EChartsOption>({
|
|
series: [{
|
|
type: 'funnel'
|
|
}]
|
|
});
|
|
expect(console.error).toHaveBeenCalledWith(
|
|
makeSerieError('funnel', 'FunnelChart')
|
|
);
|
|
|
|
console.error = oldConsoleErr;
|
|
});
|
|
|
|
it('Should not report pie series missing error', function () {
|
|
const chart = createChart();
|
|
console.error = jest.fn();
|
|
chart.setOption<EChartsOption>({
|
|
series: [{
|
|
type: 'pie'
|
|
}]
|
|
});
|
|
expect(console.error).not.toBeCalled();
|
|
console.error = oldConsoleErr;
|
|
});
|
|
|
|
|
|
it('Should not report visualMap component missing error when using theme', function () {
|
|
const chart = createChart({
|
|
visualMap: {
|
|
borderColor: '#71708A'
|
|
}
|
|
});
|
|
|
|
console.error = jest.fn();
|
|
chart.setOption<EChartsOption>({});
|
|
expect(console.error).not.toBeCalled();
|
|
|
|
console.error = oldConsoleErr;
|
|
});
|
|
}); |