@@ -6,106 +6,147 @@ const { TiledeskChatbotUtil } = require('..');
66 ************************/
77
88describe ( '_test directives_' , function ( ) {
9- // describe('A message and the \\agent directive', function() {
10- // it('should return a \\agent directive', function() {
11- // const msg = 'Moving you to an agent\n\\agent';
12- // const result = TiledeskChatbotUtil.parseDirectives(msg);
13- // console.log("result:", JSON.stringify(result));
14- // console.log("directives:", JSON.stringify(result.directives));
15- // assert(result != null);
16- // assert(result.directives != null);
17- // assert.strictEqual(result.directives.length, 1);
18- // assert(result.directives[0]);
19- // assert(result.directives[0].name === TiledeskChatbotUtil.AGENT_DIRECTIVE);
20- // assert(result.text === "Moving you to an agent");
21- // console.log("result.findDirective(\"\\agent\"):", result.findDirective(TiledeskChatbotUtil.AGENT_DIRECTIVE))
22- // assert(result.findDirective("\\agent").name === TiledeskChatbotUtil.AGENT_DIRECTIVE);
23- // });
24- // });
9+
10+ it ( 'A message and the \\agent directive. Should return a \\agent directive' , function ( ) {
11+ const msg = 'Moving you to an agent\n\\agent' ;
12+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
13+ console . log ( "result:" , JSON . stringify ( result ) ) ;
14+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
15+ assert ( result != null ) ;
16+ assert ( result . directives != null ) ;
17+ assert . strictEqual ( result . directives . length , 1 ) ;
18+ assert ( result . directives [ 0 ] ) ;
19+ assert ( result . directives [ 0 ] . name === TiledeskChatbotUtil . AGENT_DIRECTIVE ) ;
20+ assert ( result . text === "Moving you to an agent" ) ;
21+ assert ( result . findDirective ( TiledeskChatbotUtil . AGENT_DIRECTIVE ) . name != null ) ;
22+ } ) ;
2523
26- // describe('A message and the \\close directive', function() {
27- // it('should return a \\close directive', function() {
28- // const msg = 'Closing conversation\n\\close';
29- // const result = TiledeskChatbotUtil.parseDirectives(msg);
30- // console.log("result:", JSON.stringify(result));
31- // console.log("directives:", JSON.stringify(result.directives));
32- // assert(result != null);
33- // assert(result.directives != null);
34- // assert.strictEqual(result.directives.length, 1);
35- // assert(result.directives[0]);
36- // assert(result.directives[0].name === TiledeskChatbotUtil.CLOSE_DIRECTIVE);
37- // assert(result.text === "Closing conversation");
38- // console.log("result.findDirective(\"\\close\"):", result.findDirective(TiledeskChatbotUtil.CLOSE_DIRECTIVE))
39- // assert(result.findDirective("\\close").name === TiledeskChatbotUtil.CLOSE_DIRECTIVE);
40- // });
41- // });
24+ it ( 'Should return a \\close directive. A message and the \\close directive' , function ( ) {
25+ const msg = 'Closing conversation\n\\_tdclose' ;
26+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
27+ console . log ( "result:" , JSON . stringify ( result ) ) ;
28+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
29+ assert ( result != null ) ;
30+ assert ( result . directives != null ) ;
31+ assert . strictEqual ( result . directives . length , 1 ) ;
32+ assert ( result . directives [ 0 ] ) ;
33+ assert ( result . directives [ 0 ] . name === TiledeskChatbotUtil . CLOSE_DIRECTIVE ) ;
34+ assert ( result . text === "Closing conversation" ) ;
35+ console . log ( "result.findDirective(\"\\close\"):" , result . findDirective ( TiledeskChatbotUtil . CLOSE_DIRECTIVE ) )
36+ assert ( result . findDirective ( TiledeskChatbotUtil . CLOSE_DIRECTIVE ) . name != null ) ;
37+ } ) ;
38+
39+ it ( 'A message, \\department and \\jsonmessage. Should return a \\department followed by a \\jsonmessage directives' , function ( ) {
40+ const msg =
41+ `Moving to main menu
42+ \\_tddepartment Default Department
43+ \\_tdjsonmessage {"attributes":{"subtype":"info"}}` ;
44+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
45+ console . log ( "result:" , JSON . stringify ( result ) ) ;
46+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
47+ assert ( result != null ) ;
48+ assert ( result . directives != null ) ;
49+ assert . strictEqual ( result . directives . length , 2 ) ;
50+ assert ( result . directives [ 0 ] ) ;
51+ assert ( result . directives [ 1 ] ) ;
52+ assert ( result . directives [ 0 ] . name === TiledeskChatbotUtil . DEPARTMENT_DIRECTIVE ) ;
53+ assert ( result . directives [ 0 ] . parameter === 'Default Department' ) ;
54+ assert ( result . directives [ 1 ] . name === TiledeskChatbotUtil . JSONMESSAGE_DIRECTIVE ) ;
55+ assert ( result . directives [ 1 ] . parameter === '{"attributes":{"subtype":"info"}}' ) ;
56+ const json_param = JSON . parse ( result . directives [ 1 ] . parameter ) ;
57+ assert ( json_param . attributes . subtype === "info" ) ;
58+ console . log ( "result.directives[1].parameter:" , result . directives [ 1 ] . parameter ) ;
59+ assert ( result . text === "Moving to main menu" ) ;
60+ console . log ( "result.findDirective(\"\\department\"):" , result . findDirective ( TiledeskChatbotUtil . DEPARTMENT_DIRECTIVE ) )
61+ assert ( result . findDirective ( TiledeskChatbotUtil . DEPARTMENT_DIRECTIVE ) . name === TiledeskChatbotUtil . DEPARTMENT_DIRECTIVE ) ;
62+ assert ( result . findDirective ( TiledeskChatbotUtil . DEPARTMENT_DIRECTIVE ) . parameter === 'Default Department' ) ;
63+ console . log ( "result.findDirective(\"\\jsonmessage\"):" , result . findDirective ( TiledeskChatbotUtil . JSONMESSAGE_DIRECTIVE ) )
64+ assert ( result . findDirective ( TiledeskChatbotUtil . JSONMESSAGE_DIRECTIVE ) . name === TiledeskChatbotUtil . JSONMESSAGE_DIRECTIVE ) ;
65+ assert ( result . findDirective ( TiledeskChatbotUtil . JSONMESSAGE_DIRECTIVE ) . parameter === '{"attributes":{"subtype":"info"}}' ) ;
66+ } ) ;
67+
68+ it ( 'Only \\agent directive. Should return a \\agent and no text.' , function ( ) {
69+ const msg = '\\agent' ;
70+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
71+ console . log ( "result:" , JSON . stringify ( result ) ) ;
72+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
73+ assert ( result != null ) ;
74+ assert ( result . directives != null ) ;
75+ assert . strictEqual ( result . directives . length , 1 ) ;
76+ assert ( result . directives [ 0 ] ) ;
77+ assert ( result . directives [ 0 ] . name === TiledeskChatbotUtil . AGENT_DIRECTIVE ) ;
78+ assert ( result . text === "" ) ;
79+ assert ( result . findDirective ( TiledeskChatbotUtil . AGENT_DIRECTIVE ) . name != null ) ;
80+ } ) ;
4281
43- // describe('A message, \\department and \\jsonmessage', function() {
44- // it('should return a \\department followed by a \\jsonmessage directives', function() {
45- // const msg = 'Moving to main menu\n\\department Default Department\n\\jsonmessage {"attributes":{"subtype":"info"}}';
46- // const result = TiledeskChatbotUtil.parseDirectives(msg);
47- // console.log("result:", JSON.stringify(result));
48- // console.log("directives:", JSON.stringify(result.directives));
49- // assert(result != null);
50- // assert(result.directives != null);
51- // assert.strictEqual(result.directives.length, 2);
52- // assert(result.directives[0]);
53- // assert(result.directives[1]);
54- // assert(result.directives[0].name === TiledeskChatbotUtil.DEPARTMENT_DIRECTIVE);
55- // assert(result.directives[0].parameter === 'Default Department');
56- // assert(result.directives[1].name === TiledeskChatbotUtil.JSONMESSAGE_DIRECTIVE);
57- // assert(result.directives[1].parameter === '{"attributes":{"subtype":"info"}}');
58- // const json_param = JSON.parse(result.directives[1].parameter);
59- // console.log("json_param:", json_param);
60- // console.log("result.directives[1].parameter:", result.directives[1].parameter);
61- // assert(result.text === "Moving to main menu");
62- // console.log("result.findDirective(\"\\department\"):", result.findDirective(TiledeskChatbotUtil.DEPARTMENT_DIRECTIVE))
63- // assert(result.findDirective(TiledeskChatbotUtil.DEPARTMENT_DIRECTIVE).name === TiledeskChatbotUtil.DEPARTMENT_DIRECTIVE);
64- // assert(result.findDirective(TiledeskChatbotUtil.DEPARTMENT_DIRECTIVE).parameter === 'Default Department');
65- // console.log("result.findDirective(\"\\jsonmessage\"):", result.findDirective(TiledeskChatbotUtil.JSONMESSAGE_DIRECTIVE))
66- // assert(result.findDirective(TiledeskChatbotUtil.JSONMESSAGE_DIRECTIVE).name === TiledeskChatbotUtil.JSONMESSAGE_DIRECTIVE);
67- // assert(result.findDirective(TiledeskChatbotUtil.JSONMESSAGE_DIRECTIVE).parameter === '{"attributes":{"subtype":"info"}}');
68- // });
69- // });
82+ it ( 'should return a \\agent with text. One more only \\agent directive' , function ( ) {
83+ const msg =
84+ `We are looking for an operator..
85+ -
86+ JUST WAIT A MOMENT
87+ \\agent` ;
88+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
89+ console . log ( "result:" , JSON . stringify ( result ) ) ;
90+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
91+ assert ( result != null ) ;
92+ assert ( result . directives != null ) ;
93+ assert . strictEqual ( result . directives . length , 1 ) ;
94+ assert ( result . directives [ 0 ] ) ;
95+ assert ( result . directives [ 0 ] . name === TiledeskChatbotUtil . AGENT_DIRECTIVE ) ;
96+ assert ( result . text ===
97+ `We are looking for an operator..
98+ -
99+ JUST WAIT A MOMENT` ) ;
100+ assert ( result . findDirective ( TiledeskChatbotUtil . AGENT_DIRECTIVE ) . name != null ) ;
101+ } ) ;
70102
71- // describe('Only \\agent directive', function() {
72- // it('should return a \\agent and no text', function() {
73- // const msg = '\\agent';
74- // const result = TiledeskChatbotUtil.parseDirectives(msg);
75- // console.log("result:", JSON.stringify(result));
76- // console.log("directives:", JSON.stringify(result.directives));
77- // assert(result != null);
78- // assert(result.directives != null);
79- // assert.strictEqual(result.directives.length, 1);
80- // assert(result.directives[0]);
81- // assert(result.directives[0].name === TiledeskChatbotUtil.AGENT_DIRECTIVE);
82- // assert(result.text === "");
83- // console.log("result.findDirective(\"\\agent\"):", result.findDirective(TiledeskChatbotUtil.AGENT_DIRECTIVE))
84- // assert(result.findDirective("\\agent").name === TiledeskChatbotUtil.AGENT_DIRECTIVE);
85- // });
86- // });
103+ it ( 'Finds no directives' , function ( ) {
104+ const msg =
105+ `We are looking for an operator..
106+ -
107+ \\not_a_directive
108+ JUST WAIT A MOMENT
109+ \\not_a_directive` ;
110+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
111+ console . log ( "result:" , JSON . stringify ( result ) ) ;
112+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
113+ assert ( result != null ) ;
114+ assert ( result . directives != null ) ;
115+ assert . strictEqual ( result . directives . length , 0 ) ;
116+ assert ( result . text === msg ) ;
117+ } ) ;
87118
88- describe ( 'One more only \\agent directive' , function ( ) {
89- it ( 'should return a \\agent with text' , function ( ) {
90- const msg =
119+ it ( 'Finds 3 directives' , function ( ) {
120+ const msg =
91121`We are looking for an operator..
92122-
93123JUST WAIT A MOMENT
94- \\agent` ;
95- const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
96- console . log ( "result:" , JSON . stringify ( result ) ) ;
97- console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
98- assert ( result != null ) ;
99- assert ( result . directives != null ) ;
100- assert . strictEqual ( result . directives . length , 1 ) ;
101- assert ( result . directives [ 0 ] ) ;
102- assert ( result . directives [ 0 ] . name === TiledeskChatbotUtil . AGENT_DIRECTIVE ) ;
103- assert ( result . text ===
124+ \\_tdDir1 with params
125+ \\_tdDir2NoParam
126+ \\_tdDir3 one_param` ;
127+ const result = TiledeskChatbotUtil . parseDirectives ( msg ) ;
128+ console . log ( "result:" , JSON . stringify ( result ) ) ;
129+ console . log ( "directives:" , JSON . stringify ( result . directives ) ) ;
130+ assert ( result != null ) ;
131+ assert ( result . directives != null ) ;
132+ assert . strictEqual ( result . directives . length , 3 ) ;
133+ assert ( result . directives [ 0 ] ) ;
134+ assert ( result . directives [ 1 ] ) ;
135+ assert ( result . directives [ 2 ] ) ;
136+
137+ assert ( result . directives [ 0 ] . name === "Dir1" ) ;
138+ assert ( result . directives [ 0 ] . parameter === "with params" ) ;
139+ assert ( result . directives [ 1 ] . name === "Dir2NoParam" ) ;
140+ assert ( result . directives [ 1 ] . parameter == null ) ;
141+ assert ( result . directives [ 2 ] . name === "Dir3" ) ;
142+ assert ( result . directives [ 2 ] . parameter === "one_param" ) ;
143+
144+ assert ( result . text . trim ( ) ===
104145`We are looking for an operator..
105146-
106147JUST WAIT A MOMENT` ) ;
107- console . log ( " result.findDirective(\"\\agent\"):" , result . findDirective ( TiledeskChatbotUtil . AGENT_DIRECTIVE ) )
108- assert ( result . findDirective ( "\\agent " ) . name === TiledeskChatbotUtil . AGENT_DIRECTIVE ) ;
109- } ) ;
148+ assert ( result . findDirective ( "Dir1" ) . name === "Dir1" ) ;
149+ assert ( result . findDirective ( "Dir2NoParam " ) . name === "Dir2NoParam" ) ;
150+ assert ( result . findDirective ( "Dir3" ) . name === "Dir3" ) ;
110151 } ) ;
111152} ) ;
0 commit comments