mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-15 06:19:24 +02:00
add tests
This commit is contained in:
@@ -532,18 +532,90 @@ describe('when parsing ER diagram it...', function () {
|
|||||||
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ONE_OR_MORE);
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ONE_OR_MORE);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should handle zero-or-one-to-zero-or-more relationships (aliases "one or zero" and "zero or many")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nA one or zero to many B : has');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
|
||||||
|
expect(Object.keys(erDb.getEntities()).length).toBe(2);
|
||||||
|
expect(rels.length).toBe(1);
|
||||||
|
expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ZERO_OR_MORE);
|
||||||
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ZERO_OR_ONE);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle one-or-more-to-zero-or-one relationships (aliases "one or many" and "zero or one")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nA one or many optionally to zero or one B : has');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
|
||||||
|
expect(Object.keys(erDb.getEntities()).length).toBe(2);
|
||||||
|
expect(rels.length).toBe(1);
|
||||||
|
expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ZERO_OR_ONE);
|
||||||
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ONE_OR_MORE);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle zero-or-more-to-zero-or-more relationships (aliases "zero or more" and "zero or many")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nA zero or more to zero or many B : has');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
|
||||||
|
expect(Object.keys(erDb.getEntities()).length).toBe(2);
|
||||||
|
expect(rels.length).toBe(1);
|
||||||
|
expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ZERO_OR_MORE);
|
||||||
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ZERO_OR_MORE);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle zero-or-more-to-one-or-more relationships (aliases "many(0)" and "many(1)")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nA many(0) to many(1) B : has');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
|
||||||
|
expect(Object.keys(erDb.getEntities()).length).toBe(2);
|
||||||
|
expect(rels.length).toBe(1);
|
||||||
|
expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ONE_OR_MORE);
|
||||||
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ZERO_OR_MORE);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle zero-or-more-to-only-one relationships (aliases "many(0)" and "many(1)")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nA many optionally to one B : has');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
|
||||||
|
expect(Object.keys(erDb.getEntities()).length).toBe(2);
|
||||||
|
expect(rels.length).toBe(1);
|
||||||
|
expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ONLY_ONE);
|
||||||
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ZERO_OR_MORE);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle only-one-to-only-one relationships (aliases "only one")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nA only one optionally to only one B : has');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
|
||||||
|
expect(Object.keys(erDb.getEntities()).length).toBe(2);
|
||||||
|
expect(rels.length).toBe(1);
|
||||||
|
expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ONLY_ONE);
|
||||||
|
expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.ONLY_ONE);
|
||||||
|
});
|
||||||
|
|
||||||
it('should represent identifying relationships properly', function () {
|
it('should represent identifying relationships properly', function () {
|
||||||
erDiagram.parser.parse('erDiagram\nHOUSE ||--|{ ROOM : contains');
|
erDiagram.parser.parse('erDiagram\nHOUSE ||--|{ ROOM : contains');
|
||||||
const rels = erDb.getRelationships();
|
const rels = erDb.getRelationships();
|
||||||
expect(rels[0].relSpec.relType).toBe(erDb.Identification.IDENTIFYING);
|
expect(rels[0].relSpec.relType).toBe(erDb.Identification.IDENTIFYING);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should represent identifying relationships properly (alias "to")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\nHOUSE one to one ROOM : contains');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
expect(rels[0].relSpec.relType).toBe(erDb.Identification.IDENTIFYING);
|
||||||
|
});
|
||||||
|
|
||||||
it('should represent non-identifying relationships properly', function () {
|
it('should represent non-identifying relationships properly', function () {
|
||||||
erDiagram.parser.parse('erDiagram\n PERSON ||..o{ POSSESSION : owns');
|
erDiagram.parser.parse('erDiagram\n PERSON ||..o{ POSSESSION : owns');
|
||||||
const rels = erDb.getRelationships();
|
const rels = erDb.getRelationships();
|
||||||
expect(rels[0].relSpec.relType).toBe(erDb.Identification.NON_IDENTIFYING);
|
expect(rels[0].relSpec.relType).toBe(erDb.Identification.NON_IDENTIFYING);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should represent non-identifying relationships properly (alias "optionally to")', function () {
|
||||||
|
erDiagram.parser.parse('erDiagram\n PERSON many optionally to many POSSESSION : owns');
|
||||||
|
const rels = erDb.getRelationships();
|
||||||
|
expect(rels[0].relSpec.relType).toBe(erDb.Identification.NON_IDENTIFYING);
|
||||||
|
});
|
||||||
|
|
||||||
it('should not accept a syntax error', function () {
|
it('should not accept a syntax error', function () {
|
||||||
const doc = 'erDiagram\nA xxx B : has';
|
const doc = 'erDiagram\nA xxx B : has';
|
||||||
expect(() => {
|
expect(() => {
|
||||||
|
Reference in New Issue
Block a user