diff --git a/tests/unit/geometry/label/defaultCfg-spec.ts b/tests/unit/geometry/label/defaultCfg-spec.ts new file mode 100644 index 0000000000..b2f064a726 --- /dev/null +++ b/tests/unit/geometry/label/defaultCfg-spec.ts @@ -0,0 +1,57 @@ +import { flatten } from 'lodash'; +import { getTheme } from '../../../../src/theme/'; +import { Chart } from '../../../../src'; +import { createDiv } from '../../../util/dom'; + +const Theme = getTheme('default'); + +describe('GeometryLabel default ThemeCfg', () => { + const div = createDiv(); + const data = [ + { type: 'item1', value: 5 }, + { type: 'item2', value: 5 }, + { type: 'item3', value: 5 }, + { type: 'item4', value: 5 }, + ]; + const chart = new Chart({ + container: div, + autoFit: true, + height: 400, + }); + chart.coordinate('theta', { radius: 0.8 }); + chart.data(data); + const pie = chart.interval().position('value'); + const geometry = pie.color('type').adjust('stack').label('type'); + chart.render(); + + // @ts-ignore + const geometryLabel = geometry.geometryLabel; + + it('default use `theme.labels`, when offset >= 0', () => { + let labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].style).toMatchObject(Theme.labels.style); + + geometry.label('type', { offset: 0 }); + labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].style).toMatchObject(Theme.labels.style); + }); + + it('default use `theme.innerLabels`, when offset < 0', () => { + geometry.label('type', { offset: '-10%' }); + let labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].labelLine).toBeNull(); + expect(labelItems[0].style).toMatchObject(Theme.innerLabels.style); + + geometry.label('type', { offset: '10%' }); + labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].style).toMatchObject(Theme.labels.style); + + geometry.label('type', { offset: -40 }); + labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].style).toMatchObject(Theme.innerLabels.style); + }); + + afterAll(() => { + chart.destroy(); + }); +}); diff --git a/tests/unit/geometry/label/label-offset-spec.ts b/tests/unit/geometry/label/label-offset-spec.ts index 700eb70988..d32522cb53 100644 --- a/tests/unit/geometry/label/label-offset-spec.ts +++ b/tests/unit/geometry/label/label-offset-spec.ts @@ -79,9 +79,21 @@ describe('Pie GeometryLabel offset', () => { const coordinate = chart.getCoordinate(); let labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); - labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); expect(labelItems[0].offset).not.toEqual(coordinate.getRadius() * -0.5); expect(labelItems[0].offset).toBeCloseTo((coordinate.getRadius() / 0.8) * 0.2 * -0.3); + + geometry.label('type', { offset: -10 }); + labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].offset).toEqual(-10); + + geometry.label('type', { offset: 10 }); + labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].offset).toEqual(10); + + geometry.label('type', { offset: '10%' }); + labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); + expect(labelItems[0].offset).not.toEqual(coordinate.getRadius() * 0.1); + expect(labelItems[0].offset).toBeCloseTo((coordinate.getRadius() / 0.8) * 0.2 * 0.1); }); afterAll(() => { @@ -123,5 +135,4 @@ describe('Interval GeometryLabel offset', () => { const labelItems = geometryLabel.getLabelItems(flatten(geometry.dataArray)); expect(labelItems[0].offset).toBe(0); }); - });