1+ import { describe , expect , it } from 'vitest' ;
2+ import { render , screen } from '@testing-library/react' ;
3+ import testArchitectures from '../fixtures/diff-test-architectures.json' with { type : 'json' } ;
4+ import { DiffResult } from '@finos/calm-models/diff' ;
5+ import { DiffGraph } from './DiffGraph.js' ;
6+
7+ describe ( 'DiffGraph' , ( ) => {
8+ it ( 'should render without crashing' , ( ) => {
9+ const architecture = testArchitectures . baseArchitecture ;
10+ const diffResult : DiffResult = {
11+ nodesAdded : [ ] ,
12+ nodesRemoved : [ ] ,
13+ nodesModified : [ ] ,
14+ nodesSame : architecture . nodes ,
15+ nodesRenamed : [ ] ,
16+ edgesAdded : [ ] ,
17+ edgesRemoved : [ ] ,
18+ edgesModified : [ ] ,
19+ edgesSame : architecture . relationships ,
20+ edgesRenamed : [ ] ,
21+ } ;
22+
23+ render (
24+ < DiffGraph
25+ architecture = { architecture }
26+ diffResult = { diffResult }
27+ isFirst = { true }
28+ />
29+ ) ;
30+
31+ // Check if nodes are rendered by looking for names
32+ testArchitectures . baseArchitecture . nodes . forEach ( node => {
33+ expect ( screen . getByText ( node . name ) ) . toBeInTheDocument ( ) ;
34+ } ) ;
35+
36+ // Expect there to be as many edges rendered as in the architecture
37+ screen . findAllByRole ( 'edge' ) . then ( edges => {
38+ expect ( edges ) . toHaveLength ( testArchitectures . baseArchitecture . relationships . length ) ;
39+ } ) ;
40+ } ) ;
41+
42+ it ( 'should handle empty architecture gracefully' , ( ) => {
43+ const emptyArchitecture = {
44+ nodes : [ ] ,
45+ relationships : [ ] ,
46+ } ;
47+ const diffResult : DiffResult = {
48+ nodesAdded : [ ] ,
49+ nodesRemoved : [ ] ,
50+ nodesModified : [ ] ,
51+ nodesSame : [ ] ,
52+ nodesRenamed : [ ] ,
53+ edgesAdded : [ ] ,
54+ edgesRemoved : [ ] ,
55+ edgesModified : [ ] ,
56+ edgesSame : [ ] ,
57+ edgesRenamed : [ ] ,
58+ } ;
59+
60+ render (
61+ < DiffGraph
62+ architecture = { emptyArchitecture }
63+ diffResult = { diffResult }
64+ isFirst = { true }
65+ />
66+ ) ;
67+
68+ screen . findAllByRole ( 'node' ) . then ( nodes => {
69+ expect ( nodes ) . toHaveLength ( 0 ) ;
70+ } ) ;
71+ screen . findAllByRole ( 'edge' ) . then ( edges => {
72+ expect ( edges ) . toHaveLength ( 0 ) ;
73+ } ) ;
74+ } ) ;
75+ } ) ;
0 commit comments