mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-15 14:29:25 +02:00
383 lines
7.1 KiB
TypeScript
383 lines
7.1 KiB
TypeScript
import { imgSnapshotTest } from '../../helpers/util.ts';
|
|
|
|
describe('Treemap Diagram', () => {
|
|
it('1: should render a basic treemap', () => {
|
|
imgSnapshotTest(
|
|
`treemap-beta
|
|
"Category A"
|
|
"Item A1": 10
|
|
"Item A2": 20
|
|
"Category B"
|
|
"Item B1": 15
|
|
"Item B2": 25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('2: should render a hierarchical treemap', () => {
|
|
imgSnapshotTest(
|
|
`treemap-beta
|
|
"Products"
|
|
"Electronics"
|
|
"Phones": 50
|
|
"Computers": 30
|
|
"Accessories": 20
|
|
"Clothing"
|
|
"Men's"
|
|
"Shirts": 10
|
|
"Pants": 15
|
|
"Women's"
|
|
"Dresses": 20
|
|
"Skirts": 10
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('3: should render a treemap with styling using classDef', () => {
|
|
imgSnapshotTest(
|
|
`treemap-beta
|
|
"Section 1"
|
|
"Leaf 1.1": 12
|
|
"Section 1.2":::class1
|
|
"Leaf 1.2.1": 12
|
|
"Section 2"
|
|
"Leaf 2.1": 20:::class1
|
|
"Leaf 2.2": 25
|
|
"Leaf 2.3": 12
|
|
|
|
classDef class1 fill:red,color:blue,stroke:#FFD600;
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('4: should handle long text that wraps', () => {
|
|
imgSnapshotTest(
|
|
`treemap-beta
|
|
"Main Category"
|
|
"This is a very long item name that should wrap to the next line when rendered in the treemap diagram": 50
|
|
"Short item": 20
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('5: should render with a forest theme', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
theme: forest
|
|
---
|
|
treemap-beta
|
|
"Category A"
|
|
"Item A1": 10
|
|
"Item A2": 20
|
|
"Category B"
|
|
"Item B1": 15
|
|
"Item B2": 25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('6: should handle multiple levels of nesting', () => {
|
|
imgSnapshotTest(
|
|
`treemap-beta
|
|
"Level 1"
|
|
"Level 2A"
|
|
"Level 3A": 10
|
|
"Level 3B": 15
|
|
"Level 2B"
|
|
"Level 3C": 20
|
|
"Level 3D"
|
|
"Level 4A": 5
|
|
"Level 4B": 5
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('7: should handle classDef with multiple styles', () => {
|
|
imgSnapshotTest(
|
|
`treemap-beta
|
|
"Main"
|
|
"A": 20
|
|
"B":::important
|
|
"B1": 10
|
|
"B2": 15
|
|
"C": 5:::secondary
|
|
|
|
classDef important fill:#f96,stroke:#333,stroke-width:2px;
|
|
classDef secondary fill:#6cf,stroke:#333,stroke-dasharray:5 5;
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8: should handle dollar value formatting with thousands separator', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: "$0,0"
|
|
---
|
|
treemap
|
|
"Budget"
|
|
"Operations"
|
|
"Salaries": 700000
|
|
"Equipment": 200000
|
|
"Supplies": 100000
|
|
"Marketing"
|
|
"Advertising": 400000
|
|
"Events": 100000
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8a: should handle percentage formatting', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: ".1%"
|
|
---
|
|
treemap-beta
|
|
"Market Share"
|
|
"Company A": 0.35
|
|
"Company B": 0.25
|
|
"Company C": 0.15
|
|
"Others": 0.25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8b: should handle decimal formatting', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: ".2f"
|
|
---
|
|
treemap-beta
|
|
"Metrics"
|
|
"Conversion Rate": 0.0567
|
|
"Bounce Rate": 0.6723
|
|
"Click-through Rate": 0.1289
|
|
"Engagement": 0.4521
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8c: should handle dollar sign with decimal places', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: "$.2f"
|
|
---
|
|
treemap-beta
|
|
"Product Prices"
|
|
"Basic": 19.99
|
|
"Standard": 49.99
|
|
"Premium": 99.99
|
|
"Enterprise": 199.99
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8d: should handle dollar sign with thousands separator and decimal places', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: "$,.2f"
|
|
---
|
|
treemap-beta
|
|
"Revenue"
|
|
"Q1": 1250345.75
|
|
"Q2": 1645789.25
|
|
"Q3": 1845123.50
|
|
"Q4": 2145678.75
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8e: should handle simple thousands separator', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: ","
|
|
---
|
|
treemap-beta
|
|
"User Counts"
|
|
"Active Users": 1250345
|
|
"New Signups": 45789
|
|
"Churned": 12350
|
|
"Converted": 78975
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8f: should handle valueFormat set via directive with dollar and thousands separator', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: "$,.0f"
|
|
---
|
|
treemap-beta
|
|
"Sales by Region"
|
|
"North": 1234567
|
|
"South": 7654321
|
|
"East": 4567890
|
|
"West": 9876543
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('8g: should handle scientific notation format', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
treemap:
|
|
valueFormat: ".2e"
|
|
---
|
|
treemap-beta
|
|
"Scientific Values"
|
|
"Value 1": 1234567
|
|
"Value 2": 0.0000123
|
|
"Value 3": 1000000000
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('9: should handle a complex example with multiple features', () => {
|
|
imgSnapshotTest(
|
|
`---
|
|
config:
|
|
theme: dark
|
|
treemap:
|
|
valueFormat: "$0,0"
|
|
---
|
|
treemap-beta
|
|
"Company Budget"
|
|
"Engineering":::engineering
|
|
"Frontend": 300000
|
|
"Backend": 400000
|
|
"DevOps": 200000
|
|
"Marketing":::marketing
|
|
"Digital": 250000
|
|
"Print": 100000
|
|
"Events": 150000
|
|
"Sales":::sales
|
|
"Direct": 500000
|
|
"Channel": 300000
|
|
|
|
classDef engineering fill:#6b9bc3,stroke:#333;
|
|
classDef marketing fill:#c36b9b,stroke:#333;
|
|
classDef sales fill:#c3a66b,stroke:#333;
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('10: should render the example from documentation', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
treemap-beta
|
|
"Section 1"
|
|
"Leaf 1.1": 12
|
|
"Section 1.2":::class1
|
|
"Leaf 1.2.1": 12
|
|
"Section 2"
|
|
"Leaf 2.1": 20:::class1
|
|
"Leaf 2.2": 25
|
|
"Leaf 2.3": 12
|
|
|
|
classDef class1 fill:red,color:blue,stroke:#FFD600;
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it('11: should handle comments', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
treemap-beta
|
|
%% This is a comment
|
|
"Category A"
|
|
"Item A1": 10
|
|
"Item A2": 20
|
|
%% Another comment
|
|
"Category B"
|
|
"Item B1": 15
|
|
"Item B2": 25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
/*
|
|
it.skip('12: should render a treemap with title', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
treemap-beta
|
|
title Treemap with Title
|
|
"Category A"
|
|
"Item A1": 10
|
|
"Item A2": 20
|
|
"Category B"
|
|
"Item B1": 15
|
|
"Item B2": 25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it.skip('13: should render a treemap with accessibility attributes', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
treemap-beta
|
|
accTitle: Accessible Treemap Title
|
|
accDescr: This is a description of the treemap for accessibility purposes
|
|
"Category A"
|
|
"Item A1": 10
|
|
"Item A2": 20
|
|
"Category B"
|
|
"Item B1": 15
|
|
"Item B2": 25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
|
|
it.skip('14: should render a treemap with title and accessibility attributes', () => {
|
|
imgSnapshotTest(
|
|
`
|
|
treemap
|
|
title Treemap with Title and Accessibility
|
|
accTitle: Accessible Treemap Title
|
|
accDescr: This is a description of the treemap for accessibility purposes
|
|
"Category A"
|
|
"Item A1": 10
|
|
"Item A2": 20
|
|
"Category B"
|
|
"Item B1": 15
|
|
"Item B2": 25
|
|
`,
|
|
{}
|
|
);
|
|
});
|
|
*/
|
|
});
|