2023-07-07 17:21:18 +05:30
import { imgSnapshotTest , renderGraph } from '../../helpers/util.ts' ;
2022-12-24 20:25:59 +01:00
describe ( 'C4 diagram' , ( ) => {
it ( 'should render a simple C4Context diagram' , ( ) => {
imgSnapshotTest (
`
C4Context
accTitle : C4 context demo
accDescr : Many large C4 diagrams
title System Context diagram for Internet Banking System
Enterprise _Boundary ( b0 , "BankBoundary0" ) {
Person ( customerA , "Banking Customer A" , "A customer of the bank, with personal bank accounts." )
System ( SystemAA , "Internet Banking System" , "Allows customers to view information about their bank accounts, and make payments." )
Enterprise _Boundary ( b1 , "BankBoundary" ) {
System _Ext ( SystemC , "E-mail system" , "The internal Microsoft Exchange e-mail system." )
}
}
BiRel ( customerA , SystemAA , "Uses" )
Rel ( SystemAA , SystemC , "Sends e-mails" , "SMTP" )
Rel ( SystemC , customerA , "Sends e-mails to" )
UpdateElementStyle ( customerA , $fontColor = "red" , $bgColor = "grey" , $borderColor = "red" )
UpdateRelStyle ( customerA , SystemAA , $textColor = "blue" , $lineColor = "blue" , $offsetX = "5" )
UpdateRelStyle ( SystemC , customerA , $textColor = "red" , $lineColor = "red" , $offsetX = "-50" , $offsetY = "20" )
` ,
{ }
) ;
cy . get ( 'svg' ) ;
} ) ;
it ( 'should render a simple C4Container diagram' , ( ) => {
imgSnapshotTest (
`
C4Container
title Container diagram for Internet Banking System
System _Ext ( email _system , "E-Mail System" , "The internal Microsoft Exchange system" , $tags = "v1.0" )
Person ( customer , Customer , "A customer of the bank, with personal bank accounts" , $tags = "v1.0" )
Container _Boundary ( c1 , "Internet Banking" ) {
Container ( spa , "Single-Page App" , "JavaScript, Angular" , "Provides all the Internet banking functionality to customers via their web browser" )
}
Rel ( customer , spa , "Uses" , "HTTPS" )
Rel ( email _system , customer , "Sends e-mails to" )
` ,
{ }
) ;
cy . get ( 'svg' ) ;
} ) ;
it ( 'should render a simple C4Component diagram' , ( ) => {
imgSnapshotTest (
`
C4Component
title Component diagram for Internet Banking System - API Application
Container ( spa , "Single Page Application" , "javascript and angular" , "Provides all the internet banking functionality to customers via their web browser." )
Container _Boundary ( api , "API Application" ) {
Component ( sign , "Sign In Controller" , "MVC Rest Controller" , "Allows users to sign in to the internet banking system" )
}
Rel _Back ( spa , sign , "Uses" , "JSON/HTTPS" )
UpdateRelStyle ( spa , sign , $offsetY = "-40" )
` ,
{ }
) ;
cy . get ( 'svg' ) ;
} ) ;
it ( 'should render a simple C4Dynamic diagram' , ( ) => {
imgSnapshotTest (
`
C4Dynamic
title Dynamic diagram for Internet Banking System - API Application
ContainerDb ( c4 , "Database" , "Relational Database Schema" , "Stores user registration information, hashed authentication credentials, access logs, etc." )
Container ( c1 , "Single-Page Application" , "JavaScript and Angular" , "Provides all of the Internet banking functionality to customers via their web browser." )
Container _Boundary ( b , "API Application" ) {
Component ( c3 , "Security Component" , "Spring Bean" , "Provides functionality Related to signing in, changing passwords, etc." )
Component ( c2 , "Sign In Controller" , "Spring MVC Rest Controller" , "Allows users to sign in to the Internet Banking System." )
}
Rel ( c1 , c2 , "Submits credentials to" , "JSON/HTTPS" )
Rel ( c2 , c3 , "Calls isAuthenticated() on" )
Rel ( c3 , c4 , "select * from users where username = ?" , "JDBC" )
UpdateRelStyle ( c1 , c2 , $textColor = "red" , $offsetY = "-40" )
UpdateRelStyle ( c2 , c3 , $textColor = "red" , $offsetX = "-40" , $offsetY = "60" )
UpdateRelStyle ( c3 , c4 , $textColor = "red" , $offsetY = "-40" , $offsetX = "10" )
` ,
{ }
) ;
cy . get ( 'svg' ) ;
} ) ;
it ( 'should render a simple C4Deployment diagram' , ( ) => {
imgSnapshotTest (
`
C4Deployment
title Deployment Diagram for Internet Banking System - Live
Deployment _Node ( mob , "Customer's mobile device" , "Apple IOS or Android" ) {
Container ( mobile , "Mobile App" , "Xamarin" , "Provides a limited subset of the Internet Banking functionality to customers via their mobile device." )
}
Deployment _Node ( plc , "Big Bank plc" , "Big Bank plc data center" ) {
Deployment _Node ( dn , "bigbank-api*** x8" , "Ubuntu 16.04 LTS" ) {
Deployment _Node ( apache , "Apache Tomcat" , "Apache Tomcat 8.x" ) {
Container ( api , "API Application" , "Java and Spring MVC" , "Provides Internet Banking functionality via a JSON/HTTPS API." )
}
}
}
Rel ( mobile , api , "Makes API calls to" , "json/HTTPS" )
` ,
{ }
) ;
cy . get ( 'svg' ) ;
} ) ;
} ) ;