mirror of
				https://github.com/mermaid-js/mermaid.git
				synced 2025-10-31 02:44:17 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
 | |
| 
 | |
| 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');
 | |
|   });
 | |
| });
 | 
