Merge pull request #3367 from dbartholomae/add_tests_for_C4_system_context_macros
Add tests for C4 system context macros
This commit is contained in:
commit
d78adc6fb9
|
@ -0,0 +1,110 @@
|
||||||
|
import c4Db from '../c4Db';
|
||||||
|
import c4 from './c4Diagram.jison';
|
||||||
|
import { setConfig } from '../../../config';
|
||||||
|
|
||||||
|
setConfig({
|
||||||
|
securityLevel: 'strict',
|
||||||
|
});
|
||||||
|
|
||||||
|
describe.each(['Boundary'])('parsing a C4 %s', function (macroName) {
|
||||||
|
beforeEach(function () {
|
||||||
|
c4.parser.yy = c4Db;
|
||||||
|
c4.parser.yy.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a C4 diagram with one Boundary correctly', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
${macroName}(b1, "BankBoundary") {
|
||||||
|
System(SystemAA, "Internet Banking System")
|
||||||
|
}`);
|
||||||
|
|
||||||
|
const yy = c4.parser.yy;
|
||||||
|
|
||||||
|
const boundaries = yy.getBoundarys();
|
||||||
|
expect(boundaries.length).toBe(2);
|
||||||
|
const boundary = boundaries[1];
|
||||||
|
|
||||||
|
expect(boundary).toEqual({
|
||||||
|
alias: 'b1',
|
||||||
|
label: {
|
||||||
|
text: 'BankBoundary',
|
||||||
|
},
|
||||||
|
// TODO: Why are link, and tags undefined instead of not appearing at all?
|
||||||
|
// Compare to Person where they don't show up.
|
||||||
|
link: undefined,
|
||||||
|
tags: undefined,
|
||||||
|
parentBoundary: 'global',
|
||||||
|
type: {
|
||||||
|
// TODO: Why is this `system` instead of `boundary`?
|
||||||
|
text: 'system',
|
||||||
|
},
|
||||||
|
wrap: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the alias', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(b1, "BankBoundary") {
|
||||||
|
System(SystemAA, "Internet Banking System")
|
||||||
|
}`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getBoundarys()[1]).toMatchObject({
|
||||||
|
alias: 'b1',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the label', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(b1, "BankBoundary") {
|
||||||
|
System(SystemAA, "Internet Banking System")
|
||||||
|
}`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getBoundarys()[1]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: 'BankBoundary',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the type', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(b1, "", "company") {
|
||||||
|
System(SystemAA, "Internet Banking System")
|
||||||
|
}`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getBoundarys()[1]).toMatchObject({
|
||||||
|
type: { text: 'company' },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a link', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(b1, $link="https://github.com/mermaidjs") {
|
||||||
|
System(SystemAA, "Internet Banking System")
|
||||||
|
}`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getBoundarys()[1]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
link: 'https://github.com/mermaidjs',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse tags', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(b1, $tags="tag1,tag2") {
|
||||||
|
System(SystemAA, "Internet Banking System")
|
||||||
|
}`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getBoundarys()[1]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
tags: 'tag1,tag2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -1,49 +1,20 @@
|
||||||
import flowDb from '../c4Db';
|
import c4Db from '../c4Db';
|
||||||
import flow from './c4Diagram.jison';
|
import c4 from './c4Diagram.jison';
|
||||||
import { setConfig } from '../../../config';
|
import { setConfig } from '../../../config';
|
||||||
|
|
||||||
setConfig({
|
setConfig({
|
||||||
securityLevel: 'strict',
|
securityLevel: 'strict',
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('parsing a flow chart', function () {
|
describe('parsing a C4 diagram', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
flow.parser.yy = flowDb;
|
c4.parser.yy = c4Db;
|
||||||
flow.parser.yy.clear();
|
c4.parser.yy.clear();
|
||||||
});
|
|
||||||
|
|
||||||
it('should parse a C4 diagram with one Person correctly', function () {
|
|
||||||
flow.parser.parse(`C4Context
|
|
||||||
title System Context diagram for Internet Banking System
|
|
||||||
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")`);
|
|
||||||
|
|
||||||
const yy = flow.parser.yy;
|
|
||||||
expect(yy.getC4Type()).toBe('C4Context');
|
|
||||||
expect(yy.getTitle()).toBe('System Context diagram for Internet Banking System');
|
|
||||||
|
|
||||||
const shapes = yy.getC4ShapeArray();
|
|
||||||
expect(shapes.length).toBe(1);
|
|
||||||
const onlyShape = shapes[0];
|
|
||||||
|
|
||||||
expect(onlyShape).toEqual({
|
|
||||||
alias: 'customerA',
|
|
||||||
descr: {
|
|
||||||
text: 'A customer of the bank, with personal bank accounts.',
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
text: 'Banking Customer A',
|
|
||||||
},
|
|
||||||
parentBoundary: 'global',
|
|
||||||
typeC4Shape: {
|
|
||||||
text: 'person',
|
|
||||||
},
|
|
||||||
wrap: false,
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a trailing whitespaces after statements', function () {
|
it('should handle a trailing whitespaces after statements', function () {
|
||||||
const whitespace = ' ';
|
const whitespace = ' ';
|
||||||
const rendered = flow.parser.parse(`C4Context${whitespace}
|
const rendered = c4.parser.parse(`C4Context${whitespace}
|
||||||
title System Context diagram for Internet Banking System${whitespace}
|
title System Context diagram for Internet Banking System${whitespace}
|
||||||
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")${whitespace}`);
|
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")${whitespace}`);
|
||||||
|
|
||||||
|
@ -51,11 +22,11 @@ Person(customerA, "Banking Customer A", "A customer of the bank, with personal b
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle parameter names that are keywords', function () {
|
it('should handle parameter names that are keywords', function () {
|
||||||
flow.parser.parse(`C4Context
|
c4.parser.parse(`C4Context
|
||||||
title title
|
title title
|
||||||
Person(Person, "Person", "Person")`);
|
Person(Person, "Person", "Person")`);
|
||||||
|
|
||||||
const yy = flow.parser.yy;
|
const yy = c4.parser.yy;
|
||||||
expect(yy.getTitle()).toBe('title');
|
expect(yy.getTitle()).toBe('title');
|
||||||
|
|
||||||
const shapes = yy.getC4ShapeArray();
|
const shapes = yy.getC4ShapeArray();
|
||||||
|
@ -68,10 +39,10 @@ Person(Person, "Person", "Person")`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should allow default in the parameters', function () {
|
it('should allow default in the parameters', function () {
|
||||||
flow.parser.parse(`C4Context
|
c4.parser.parse(`C4Context
|
||||||
Person(default, "default", "default")`);
|
Person(default, "default", "default")`);
|
||||||
|
|
||||||
const yy = flow.parser.yy;
|
const yy = c4.parser.yy;
|
||||||
|
|
||||||
const shapes = yy.getC4ShapeArray();
|
const shapes = yy.getC4ShapeArray();
|
||||||
expect(shapes.length).toBe(1);
|
expect(shapes.length).toBe(1);
|
|
@ -0,0 +1,111 @@
|
||||||
|
import c4Db from '../c4Db';
|
||||||
|
import c4 from './c4Diagram.jison';
|
||||||
|
import { setConfig } from '../../../config';
|
||||||
|
|
||||||
|
setConfig({
|
||||||
|
securityLevel: 'strict',
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('parsing a C4 Person', function () {
|
||||||
|
beforeEach(function () {
|
||||||
|
c4.parser.yy = c4Db;
|
||||||
|
c4.parser.yy.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a C4 diagram with one Person correctly', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")`);
|
||||||
|
|
||||||
|
const yy = c4.parser.yy;
|
||||||
|
|
||||||
|
const shapes = yy.getC4ShapeArray();
|
||||||
|
expect(shapes.length).toBe(1);
|
||||||
|
const onlyShape = shapes[0];
|
||||||
|
|
||||||
|
expect(onlyShape).toEqual({
|
||||||
|
alias: 'customerA',
|
||||||
|
descr: {
|
||||||
|
text: 'A customer of the bank, with personal bank accounts.',
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
text: 'Banking Customer A',
|
||||||
|
},
|
||||||
|
parentBoundary: 'global',
|
||||||
|
typeC4Shape: {
|
||||||
|
text: 'person',
|
||||||
|
},
|
||||||
|
wrap: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the alias', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person(customerA, "Banking Customer A")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
alias: 'customerA',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the label', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person(customerA, "Banking Customer A")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: 'Banking Customer A',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the description', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person(customerA, "", "A customer of the bank, with personal bank accounts.")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
descr: {
|
||||||
|
text: 'A customer of the bank, with personal bank accounts.',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a sprite', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person(customerA, $sprite="users")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
sprite: 'users',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a link', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person(customerA, $link="https://github.com/mermaidjs")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
link: 'https://github.com/mermaidjs',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse tags', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person(customerA, $tags="tag1,tag2")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
tags: 'tag1,tag2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,116 @@
|
||||||
|
import c4Db from '../c4Db';
|
||||||
|
import c4 from './c4Diagram.jison';
|
||||||
|
import { setConfig } from '../../../config';
|
||||||
|
|
||||||
|
setConfig({
|
||||||
|
securityLevel: 'strict',
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('parsing a C4 Person_Ext', function () {
|
||||||
|
beforeEach(function () {
|
||||||
|
c4.parser.yy = c4Db;
|
||||||
|
c4.parser.yy.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a C4 diagram with one Person_Ext correctly', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
Person_Ext(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")`);
|
||||||
|
|
||||||
|
const yy = c4.parser.yy;
|
||||||
|
|
||||||
|
const shapes = yy.getC4ShapeArray();
|
||||||
|
expect(shapes.length).toBe(1);
|
||||||
|
const onlyShape = shapes[0];
|
||||||
|
|
||||||
|
expect(onlyShape).toEqual({
|
||||||
|
alias: 'customerA',
|
||||||
|
descr: {
|
||||||
|
text: 'A customer of the bank, with personal bank accounts.',
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
text: 'Banking Customer A',
|
||||||
|
},
|
||||||
|
// TODO: Why are link, sprite, and tags undefined instead of not appearing at all?
|
||||||
|
// Compare to Person where they don't show up.
|
||||||
|
link: undefined,
|
||||||
|
sprite: undefined,
|
||||||
|
tags: undefined,
|
||||||
|
parentBoundary: 'global',
|
||||||
|
typeC4Shape: {
|
||||||
|
text: 'external_person',
|
||||||
|
},
|
||||||
|
wrap: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the alias', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person_Ext(customerA, "Banking Customer A")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
alias: 'customerA',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the label', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person_Ext(customerA, "Banking Customer A")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: 'Banking Customer A',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the description', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person_Ext(customerA, "", "A customer of the bank, with personal bank accounts.")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
descr: {
|
||||||
|
text: 'A customer of the bank, with personal bank accounts.',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a sprite', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person_Ext(customerA, $sprite="users")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
sprite: 'users',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a link', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person_Ext(customerA, $link="https://github.com/mermaidjs")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
link: 'https://github.com/mermaidjs',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse tags', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
Person_Ext(customerA, $tags="tag1,tag2")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
tags: 'tag1,tag2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,123 @@
|
||||||
|
import c4Db from '../c4Db';
|
||||||
|
import c4 from './c4Diagram.jison';
|
||||||
|
import { setConfig } from '../../../config';
|
||||||
|
|
||||||
|
setConfig({
|
||||||
|
securityLevel: 'strict',
|
||||||
|
});
|
||||||
|
|
||||||
|
describe.each([
|
||||||
|
['System', 'system'],
|
||||||
|
['SystemDb', 'system_db'],
|
||||||
|
['SystemQueue', 'system_queue'],
|
||||||
|
['System_Ext', 'external_system'],
|
||||||
|
['SystemDb_Ext', 'external_system_db'],
|
||||||
|
['SystemQueue_Ext', 'external_system_queue'],
|
||||||
|
])('parsing a C4 %s', function (macroName, elementName) {
|
||||||
|
beforeEach(function () {
|
||||||
|
c4.parser.yy = c4Db;
|
||||||
|
c4.parser.yy.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a C4 diagram with one System correctly', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
title System Context diagram for Internet Banking System
|
||||||
|
${macroName}(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")`);
|
||||||
|
|
||||||
|
const yy = c4.parser.yy;
|
||||||
|
|
||||||
|
const shapes = yy.getC4ShapeArray();
|
||||||
|
expect(shapes.length).toBe(1);
|
||||||
|
const onlyShape = shapes[0];
|
||||||
|
|
||||||
|
expect(onlyShape).toEqual({
|
||||||
|
alias: 'SystemAA',
|
||||||
|
descr: {
|
||||||
|
text: 'Allows customers to view information about their bank accounts, and make payments.',
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
text: 'Internet Banking System',
|
||||||
|
},
|
||||||
|
// TODO: Why are link, sprite, and tags undefined instead of not appearing at all?
|
||||||
|
// Compare to Person where they don't show up.
|
||||||
|
link: undefined,
|
||||||
|
sprite: undefined,
|
||||||
|
tags: undefined,
|
||||||
|
parentBoundary: 'global',
|
||||||
|
typeC4Shape: {
|
||||||
|
text: elementName,
|
||||||
|
},
|
||||||
|
wrap: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the alias', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(SystemAA, "Internet Banking System")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
alias: 'SystemAA',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the label', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(SystemAA, "Internet Banking System")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: 'Internet Banking System',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse the description', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(SystemAA, "", "Allows customers to view information about their bank accounts, and make payments.")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
descr: {
|
||||||
|
text: 'Allows customers to view information about their bank accounts, and make payments.',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a sprite', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(SystemAA, $sprite="users")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
sprite: 'users',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse a link', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(SystemAA, $link="https://github.com/mermaidjs")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
link: 'https://github.com/mermaidjs',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse tags', function () {
|
||||||
|
c4.parser.parse(`C4Context
|
||||||
|
${macroName}(SystemAA, $tags="tag1,tag2")`);
|
||||||
|
|
||||||
|
expect(c4.parser.yy.getC4ShapeArray()[0]).toMatchObject({
|
||||||
|
label: {
|
||||||
|
text: {
|
||||||
|
tags: 'tag1,tag2',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue