mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-07 08:09:39 +02:00
Merge pull request #3063 from financelurker/feature/3062_critical_region_and_break_in_sequence_diagrams
feat: adding "Critical Region"/"Option" and "Break" blocks to sequence diagram
This commit is contained in:
@@ -843,6 +843,80 @@ end`;
|
||||
expect(messages[7].from).toBe('Bob');
|
||||
expect(messages[8].type).toBe(parser.yy.LINETYPE.ALT_END);
|
||||
});
|
||||
it('it should handle critical statements without options', function () {
|
||||
const str = `
|
||||
sequenceDiagram
|
||||
critical Establish a connection to the DB
|
||||
Service-->DB: connect
|
||||
end`;
|
||||
|
||||
mermaidAPI.parse(str);
|
||||
const actors = parser.yy.getActors();
|
||||
|
||||
expect(actors.Service.description).toBe('Service');
|
||||
expect(actors.DB.description).toBe('DB');
|
||||
|
||||
const messages = parser.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(3);
|
||||
expect(messages[0].type).toBe(parser.yy.LINETYPE.CRITICAL_START);
|
||||
expect(messages[1].from).toBe('Service');
|
||||
expect(messages[2].type).toBe(parser.yy.LINETYPE.CRITICAL_END);
|
||||
});
|
||||
it('it should handle critical statements with options', function () {
|
||||
const str = `
|
||||
sequenceDiagram
|
||||
critical Establish a connection to the DB
|
||||
Service-->DB: connect
|
||||
option Network timeout
|
||||
Service-->Service: Log error
|
||||
option Credentials rejected
|
||||
Service-->Service: Log different error
|
||||
end`;
|
||||
|
||||
mermaidAPI.parse(str);
|
||||
const actors = parser.yy.getActors();
|
||||
|
||||
expect(actors.Service.description).toBe('Service');
|
||||
expect(actors.DB.description).toBe('DB');
|
||||
|
||||
const messages = parser.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(7);
|
||||
expect(messages[0].type).toBe(parser.yy.LINETYPE.CRITICAL_START);
|
||||
expect(messages[1].from).toBe('Service');
|
||||
expect(messages[2].type).toBe(parser.yy.LINETYPE.CRITICAL_OPTION);
|
||||
expect(messages[3].from).toBe('Service');
|
||||
expect(messages[4].type).toBe(parser.yy.LINETYPE.CRITICAL_OPTION);
|
||||
expect(messages[5].from).toBe('Service');
|
||||
expect(messages[6].type).toBe(parser.yy.LINETYPE.CRITICAL_END);
|
||||
});
|
||||
it('it should handle break statements', function () {
|
||||
const str = `
|
||||
sequenceDiagram
|
||||
Consumer-->API: Book something
|
||||
API-->BookingService: Start booking process
|
||||
break when the booking process fails
|
||||
API-->Consumer: show failure
|
||||
end
|
||||
API-->BillingService: Start billing process`;
|
||||
|
||||
mermaidAPI.parse(str);
|
||||
const actors = parser.yy.getActors();
|
||||
|
||||
expect(actors.Consumer.description).toBe('Consumer');
|
||||
expect(actors.API.description).toBe('API');
|
||||
|
||||
const messages = parser.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(6);
|
||||
expect(messages[0].from).toBe('Consumer');
|
||||
expect(messages[1].from).toBe('API');
|
||||
expect(messages[2].type).toBe(parser.yy.LINETYPE.BREAK_START);
|
||||
expect(messages[3].from).toBe('API');
|
||||
expect(messages[4].type).toBe(parser.yy.LINETYPE.BREAK_END);
|
||||
expect(messages[5].from).toBe('API');
|
||||
});
|
||||
it('it should handle par statements a sequenceDiagram', function () {
|
||||
const str = `
|
||||
sequenceDiagram
|
||||
|
Reference in New Issue
Block a user