@xapp/stentor-templates 1.0.0-beta.37 → 1.0.0-beta.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },
7
- "version": "1.0.0-beta.37",
7
+ "version": "1.0.0-beta.38",
8
8
  "description": "PLACEHOLDER DESCRIPTION OF PACKAGE",
9
9
  "types": "lib/index",
10
10
  "main": "lib/index",
@@ -23,19 +23,19 @@
23
23
  "typescript": "3.3.4000"
24
24
  },
25
25
  "dependencies": {
26
- "@xapp/stentor-alexa": "^1.0.0-beta.37",
27
- "@xapp/stentor-app": "^1.0.0-beta.37",
28
- "@xapp/stentor-constants": "^1.0.0-beta.37",
29
- "@xapp/stentor-handler": "^1.0.0-beta.37",
30
- "@xapp/stentor-handler-media": "^1.0.0-beta.37",
31
- "@xapp/stentor-interaction-model": "^1.0.0-beta.37",
32
- "@xapp/stentor-models": "^1.0.0-beta.37",
33
- "@xapp/stentor-request": "^1.0.0-beta.37"
26
+ "@xapp/stentor-alexa": "^1.0.0-beta.38",
27
+ "@xapp/stentor-app": "^1.0.0-beta.38",
28
+ "@xapp/stentor-constants": "^1.0.0-beta.38",
29
+ "@xapp/stentor-handler": "^1.0.0-beta.38",
30
+ "@xapp/stentor-handler-media": "^1.0.0-beta.38",
31
+ "@xapp/stentor-interaction-model": "^1.0.0-beta.38",
32
+ "@xapp/stentor-models": "^1.0.0-beta.38",
33
+ "@xapp/stentor-request": "^1.0.0-beta.38"
34
34
  },
35
35
  "scripts": {
36
36
  "build": "tsc -d true -p .",
37
37
  "clean": "rm -rf ./lib/*",
38
38
  "test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\""
39
39
  },
40
- "gitHead": "d392e986bd0305c68e20aee744d521513d65b9ef"
40
+ "gitHead": "daced3e8046c996b41b73eabdbb900307e895dfc"
41
41
  }
@@ -1,448 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* tslint:disable:no-magic-numbers */
4
- const chai_1 = require("chai");
5
- const stentor_alexa_1 = require("@xapp/stentor-alexa");
6
- const stentor_handler_1 = require("@xapp/stentor-handler");
7
- const stentor_handler_media_1 = require("@xapp/stentor-handler-media");
8
- const Constants_1 = require("../Constants");
9
- const OnDemandTemplateFactory_1 = require("../OnDemandTemplateFactory");
10
- const organizationId = "UnitTestOrganizationId";
11
- const appId = "appId";
12
- const intentId = "LaunchRequest";
13
- const name = "name";
14
- const invocationName = "ON_DEMAND_TEMPLATE_REQUIRED";
15
- const appIcon = "https://some.other.url/prod/ACME/image-two.png";
16
- const summary = "summary";
17
- const icon = "https://some.url/prod/ACME/image-name.png";
18
- const rssFeedUrl = "https://some.url";
19
- const location = {
20
- streetAddress: "Tuscon, AZ",
21
- geocode: {
22
- latitude: 2,
23
- longitude: 3
24
- }
25
- };
26
- const platformData = {
27
- alexa: {
28
- platform: stentor_alexa_1.ALEXA_PLATFORM,
29
- privacyAndCompliance: {
30
- allowsPurchases: true,
31
- containsAds: false,
32
- isChildDirected: true,
33
- isExportCompliant: false,
34
- usesPersonalInfo: true
35
- }
36
- }
37
- };
38
- const baseTemplateProps = {
39
- alexaCategory: stentor_alexa_1.PODCAST,
40
- templateType: Constants_1.ON_DEMAND_TEMPLATE,
41
- organizationId,
42
- appId,
43
- name,
44
- invocationName,
45
- summary,
46
- icon,
47
- collaborationAgreementUrl: "https://hello.com",
48
- location,
49
- keywords: Constants_1.ON_DEMAND_TEMPLATE_KEYWORDS,
50
- rssFeedUrl,
51
- customIntros: [
52
- {
53
- name: "Intro 1",
54
- outputSpeech: "Hi",
55
- schedule: {
56
- start: {
57
- time: "9:00 Z",
58
- format: "H:mm Z"
59
- },
60
- duration: {
61
- amount: 2,
62
- format: "h"
63
- }
64
- }
65
- },
66
- {
67
- name: "Intro 2",
68
- outputSpeech: "hi"
69
- }
70
- ],
71
- platformData
72
- };
73
- const baseData = {
74
- url: rssFeedUrl
75
- };
76
- const baseAppProps = {
77
- organizationId,
78
- appId,
79
- name,
80
- invocationName,
81
- icon: appIcon,
82
- location: {
83
- streetAddress: "Phoenix, AZ",
84
- geocode: {
85
- latitude: 1,
86
- longitude: 0
87
- }
88
- },
89
- platformData: {
90
- alexa: {
91
- platform: stentor_alexa_1.ALEXA_PLATFORM,
92
- privacyAndCompliance: {
93
- allowsPurchases: false,
94
- containsAds: true,
95
- isChildDirected: false,
96
- isExportCompliant: true,
97
- usesPersonalInfo: false
98
- }
99
- }
100
- }
101
- };
102
- const basePlayPodcastHandlerProps = {
103
- intentId,
104
- appId,
105
- organizationId,
106
- type: stentor_handler_media_1.PLAY_PODCAST_HANDLER_TYPE,
107
- content: {
108
- [intentId]: [
109
- {
110
- outputSpeech: "hello"
111
- }
112
- ]
113
- },
114
- data: Object.assign({}, baseData)
115
- };
116
- describe("OnDemandTemplateFactory", () => {
117
- describe("#generateTemplate()", () => {
118
- let template;
119
- beforeEach(() => {
120
- template = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateTemplate(Object.assign({}, baseAppProps), [
121
- Object.assign({}, basePlayPodcastHandlerProps)
122
- ]);
123
- });
124
- it("sets the type", () => {
125
- chai_1.expect(template.templateType).to.equal(Constants_1.ON_DEMAND_TEMPLATE);
126
- });
127
- it("sets the alexa category", () => {
128
- chai_1.expect(template.alexaCategory).to.equal(stentor_alexa_1.PODCAST);
129
- });
130
- it("sets the dialogflow default agent token", () => {
131
- chai_1.expect(template.dialogflowClientToken).to.equal(Constants_1.ON_DEMAND_DIALOGFLOW_DEFAULT_AGENT_TOKEN);
132
- });
133
- it("sets the keywords", () => {
134
- chai_1.expect(template.keywords).to.have.length(5);
135
- });
136
- it("sets the invocation name", () => {
137
- chai_1.expect(template.invocationName).to.equal(invocationName);
138
- });
139
- it("sets the RSS feed url", () => {
140
- chai_1.expect(template.rssFeedUrl).to.equal(rssFeedUrl);
141
- });
142
- it("sets the custom intros", () => {
143
- chai_1.expect(template.customIntros).to.exist;
144
- chai_1.expect(template.customIntros).to.have.length(1);
145
- });
146
- it("sets the address", () => {
147
- chai_1.expect(template.location.streetAddress).to.equal("Phoenix, AZ");
148
- });
149
- it("sets the geocode on the location", () => {
150
- chai_1.expect(template.location.geocode.latitude).to.equal(1);
151
- chai_1.expect(template.location.geocode.longitude).to.equal(0);
152
- });
153
- it("sets the icon", () => {
154
- chai_1.expect(template.icon).to.equal(appIcon);
155
- });
156
- it("sets the small icon", () => {
157
- chai_1.expect(template.smallIcon).to.contain("https://some.other");
158
- });
159
- it("sets the large icon", () => {
160
- chai_1.expect(template.largeIcon).to.contain("https://some.other");
161
- });
162
- it("sets the platformData", () => {
163
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.allowsPurchases).to.equal(false);
164
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.containsAds).to.equal(true);
165
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.isChildDirected).to.equal(false);
166
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.isExportCompliant).to.equal(true);
167
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.usesPersonalInfo).to.equal(false);
168
- });
169
- describe("with alwaysPlayLatest and nextIsOlder set on the handler", () => {
170
- beforeEach(() => {
171
- template = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateTemplate(Object.assign({}, baseAppProps), [
172
- Object.assign({}, basePlayPodcastHandlerProps, { data: {
173
- url: rssFeedUrl,
174
- alwaysPlayLatest: true,
175
- nextIsOlder: true
176
- } })
177
- ]);
178
- });
179
- it("sets template contentType to replaced", () => {
180
- chai_1.expect(template.contentType).to.equal(Constants_1.ON_DEMAND_CONTENT_TYPE_REPLACED);
181
- });
182
- });
183
- describe("with alwaysPlayLatest and nextIsOlder is false", () => {
184
- beforeEach(() => {
185
- template = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateTemplate(Object.assign({}, baseAppProps), [
186
- Object.assign({}, basePlayPodcastHandlerProps, { data: {
187
- url: rssFeedUrl,
188
- alwaysPlayLatest: true
189
- } })
190
- ]);
191
- });
192
- it("sets template contentType to replaced", () => {
193
- chai_1.expect(template.contentType).to.equal(Constants_1.ON_DEMAND_CONTENT_TYPE_REPLACED);
194
- });
195
- });
196
- describe("with offerToPlayLatest set on the handler", () => {
197
- beforeEach(() => {
198
- template = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateTemplate(Object.assign({}, baseAppProps), [
199
- Object.assign({}, basePlayPodcastHandlerProps, { data: {
200
- url: rssFeedUrl,
201
- offerToPlayLatest: true
202
- } })
203
- ]);
204
- });
205
- it("sets template contentType to stand alone", () => {
206
- chai_1.expect(template.contentType).to.equal(Constants_1.ON_DEMAND_CONTENT_TYPE_STAND_ALONE);
207
- });
208
- });
209
- });
210
- describe("#generateApp()", () => {
211
- let template;
212
- let app;
213
- beforeEach(() => {
214
- template = Object.assign({}, baseTemplateProps);
215
- app = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateApp(template);
216
- });
217
- it("sets the type", () => {
218
- chai_1.expect(app.templateType).to.equal(Constants_1.ON_DEMAND_TEMPLATE);
219
- });
220
- it("sets the alexa category", () => {
221
- chai_1.expect(app.alexaCategory).to.equal(stentor_alexa_1.PODCAST);
222
- });
223
- it("sets the location", () => {
224
- chai_1.expect(app.location.streetAddress).to.equal(location.streetAddress);
225
- chai_1.expect(app.location.geocode.latitude).to.equal(location.geocode.latitude);
226
- chai_1.expect(app.location.geocode.longitude).to.equal(location.geocode.longitude);
227
- });
228
- it("sets the organizationId", () => {
229
- chai_1.expect(app.organizationId).to.equal(organizationId);
230
- });
231
- it("sets the appId", () => {
232
- chai_1.expect(app.appId).to.equal(appId);
233
- });
234
- it("sets the keywords", () => {
235
- chai_1.expect(app.keywords).to.have.length(5);
236
- });
237
- it("sets the name", () => {
238
- chai_1.expect(app.name).to.equal(name);
239
- });
240
- it("sets the invocation name and lower cases it", () => {
241
- chai_1.expect(app.invocationName).to.equal(invocationName.toLowerCase());
242
- });
243
- it("sets the summary", () => {
244
- chai_1.expect(app.summary).to.equal(summary);
245
- });
246
- it("sets the description", () => {
247
- chai_1.expect(app.description).to.exist;
248
- chai_1.expect(app.description).to.contain(summary);
249
- chai_1.expect(app.description).to.contain(invocationName.toLowerCase());
250
- });
251
- it("sets the example phrases", () => {
252
- chai_1.expect(app.examplePhrases).to.have.length(3);
253
- chai_1.expect(app.examplePhrases[0]).to.contain(invocationName.toLowerCase());
254
- });
255
- it("sets the testing instructions", () => {
256
- chai_1.expect(app.testingInstructions).to.exist;
257
- });
258
- it("sets the collaborationAgreementUrl", () => {
259
- chai_1.expect(template.collaborationAgreementUrl).to.exist;
260
- chai_1.expect(template.collaborationAgreementUrl).to.equal("https://hello.com");
261
- });
262
- it("adds the collaboration agreement URL to the testing instructions", () => {
263
- chai_1.expect(app.testingInstructions).to.contain("https://go.xappmedia.com/" + app.organizationId + "/iprights");
264
- });
265
- it("sets the smallIcon", () => {
266
- chai_1.expect(app.smallIcon).to.exist;
267
- });
268
- it("sets the largeIcon", () => {
269
- chai_1.expect(app.largeIcon).to.exist;
270
- });
271
- describe("without invocation name", () => {
272
- beforeEach(() => {
273
- template = Object.assign({}, baseTemplateProps);
274
- delete template.invocationName;
275
- app = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateApp(template);
276
- });
277
- it("sets the invocation name to undefined", () => {
278
- chai_1.expect(app.invocationName).to.be.undefined;
279
- });
280
- });
281
- describe("with optional App", () => {
282
- beforeEach(() => {
283
- template = Object.assign({}, baseTemplateProps);
284
- app = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateApp(template, {
285
- organizationId,
286
- appId,
287
- name: "Test App",
288
- keywords: ["EXISTING"],
289
- location: {
290
- streetAddress: "WRONG",
291
- geocode: {
292
- latitude: 4,
293
- longitude: 5
294
- }
295
- }
296
- });
297
- });
298
- it("uses the template keywords as precedence", () => {
299
- chai_1.expect(app.keywords).to.have.length(5);
300
- });
301
- it("uses the template location as precedence", () => {
302
- chai_1.expect(app.location.streetAddress).to.equal("Tuscon, AZ");
303
- chai_1.expect(app.location.geocode.latitude).to.equal(2);
304
- chai_1.expect(app.location.geocode.longitude).to.equal(3);
305
- });
306
- });
307
- });
308
- describe("#generateHandlers()", () => {
309
- let template;
310
- let handlers;
311
- let handler;
312
- beforeEach(() => {
313
- template = Object.assign({}, baseTemplateProps);
314
- handlers = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateHandlers(template);
315
- handler = handlers[0];
316
- });
317
- it("returns the correct number of handlers", () => {
318
- chai_1.expect(handlers).to.have.length(1);
319
- });
320
- it("sets the intentId as a LaunchRequest", () => {
321
- chai_1.expect(handler.intentId).to.equal("LaunchRequest");
322
- });
323
- it("sets the type as a Play Podcast Handler type", () => {
324
- chai_1.expect(stentor_handler_1.isHandler(handler)).to.be.true;
325
- if (stentor_handler_1.isHandler(handler)) {
326
- chai_1.expect(handler.type).to.equal(stentor_handler_media_1.PLAY_PODCAST_HANDLER_TYPE);
327
- }
328
- });
329
- it("sets the organizationId", () => {
330
- chai_1.expect(handler.organizationId).to.equal(organizationId);
331
- });
332
- it("sets the appId", () => {
333
- chai_1.expect(handler.appId).to.equal("appId");
334
- });
335
- it("sets the name", () => {
336
- chai_1.expect(handler.name).to.have.length.greaterThan(0);
337
- });
338
- it("sets the RSS feed url on the data", () => {
339
- chai_1.expect(stentor_handler_1.isHandler(handler)).to.be.true;
340
- if (stentor_handler_1.isHandler(handler)) {
341
- chai_1.expect(handler.data).to.have.property("url", "https://some.url");
342
- }
343
- });
344
- describe("with undefined URL on the template", () => {
345
- beforeEach(() => {
346
- template = Object.assign({}, baseTemplateProps);
347
- delete template.rssFeedUrl;
348
- handlers = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateHandlers(template);
349
- handler = handlers[0];
350
- });
351
- it("passes out a handler", () => {
352
- chai_1.expect(handler).to.exist;
353
- });
354
- it("sets the url to an empty string", () => {
355
- chai_1.expect(stentor_handler_1.isHandler(handler)).to.be.true;
356
- if (stentor_handler_1.isHandler(handler)) {
357
- chai_1.expect(handler.data).to.have.property("url", "");
358
- }
359
- });
360
- });
361
- describe("with replaced content set", () => {
362
- beforeEach(() => {
363
- template = Object.assign({}, baseTemplateProps, { contentType: Constants_1.ON_DEMAND_CONTENT_TYPE_REPLACED });
364
- handlers = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateHandlers(template);
365
- handler = handlers[0];
366
- });
367
- it("returns the correct number of handlers", () => {
368
- chai_1.expect(handlers).to.have.length(1);
369
- });
370
- it("sets alwaysPlayLatest to true", () => {
371
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
372
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
373
- chai_1.expect(handler.data.alwaysPlayLatest).to.be.true;
374
- }
375
- });
376
- it("sets nextIsOlder to true", () => {
377
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
378
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
379
- chai_1.expect(handler.data.nextIsOlder).to.be.true;
380
- }
381
- });
382
- it("sets offerToPlayLatest to false", () => {
383
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
384
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
385
- chai_1.expect(handler.data.offerToPlayLatest).to.be.false;
386
- }
387
- });
388
- describe("with existing handlers", () => {
389
- beforeEach(() => {
390
- template = Object.assign({}, baseTemplateProps, { contentType: Constants_1.ON_DEMAND_CONTENT_TYPE_REPLACED });
391
- const existingHandler = Object.assign({}, basePlayPodcastHandlerProps, { data: {
392
- url: rssFeedUrl,
393
- nextIsOlder: false
394
- } });
395
- // Pass it an existing handler that has nextIsOlder set to false
396
- // which simulates a customer that wanted something different
397
- // from the default
398
- handlers = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateHandlers(template, [existingHandler]);
399
- handler = handlers[0];
400
- });
401
- it("returns the correct number of handlers", () => {
402
- chai_1.expect(handlers).to.have.length(1);
403
- });
404
- it("sets alwaysPlayLatest to true", () => {
405
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
406
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
407
- chai_1.expect(handler.data.alwaysPlayLatest).to.be.true;
408
- }
409
- });
410
- it("keeps the preexisting setting for nextIsOlder of false", () => {
411
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
412
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
413
- chai_1.expect(handler.data.nextIsOlder).to.be.false;
414
- }
415
- });
416
- });
417
- });
418
- describe("with contentType set to stand alone", () => {
419
- beforeEach(() => {
420
- template = Object.assign({}, baseTemplateProps, { contentType: Constants_1.ON_DEMAND_CONTENT_TYPE_STAND_ALONE });
421
- handlers = new OnDemandTemplateFactory_1.OnDemandTemplateFactory().generateHandlers(template);
422
- handler = handlers[0];
423
- });
424
- it("returns the correct number of handlers", () => {
425
- chai_1.expect(handlers).to.have.length(1);
426
- });
427
- it("sets offerToPlayLatest to true", () => {
428
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
429
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
430
- chai_1.expect(handler.data.offerToPlayLatest).to.be.true;
431
- }
432
- });
433
- it("sets nextIsOlder to false", () => {
434
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
435
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
436
- chai_1.expect(handler.data.nextIsOlder).to.be.false;
437
- }
438
- });
439
- it("sets alwaysPlayLatest to false", () => {
440
- chai_1.expect(stentor_handler_media_1.isPlayPodcastHandlerProps(handler)).to.be.true;
441
- if (stentor_handler_media_1.isPlayPodcastHandlerProps(handler)) {
442
- chai_1.expect(handler.data.alwaysPlayLatest).to.be.false;
443
- }
444
- });
445
- });
446
- });
447
- });
448
- //# sourceMappingURL=OnDemandTemplateFactory.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OnDemandTemplateFactory.test.js","sourceRoot":"","sources":["../../../src/onDemand/__test__/OnDemandTemplateFactory.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,299 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* tslint:disable:no-magic-numbers */
4
- const chai_1 = require("chai");
5
- const stentor_alexa_1 = require("@xapp/stentor-alexa");
6
- const stentor_handler_1 = require("@xapp/stentor-handler");
7
- const stentor_handler_media_1 = require("@xapp/stentor-handler-media");
8
- const __1 = require("../");
9
- const organizationId = "UnitTestOrganizationId";
10
- const appId = "appId";
11
- const intentId = "intentId";
12
- const name = "name";
13
- const invocationName = "invocationName";
14
- const summary = "summary";
15
- const icon = "https://some.url/prod/ACME/image-name.png";
16
- const appIcon = "https://some.other.url/prod/ACME/image-two.png";
17
- const location = {
18
- streetAddress: "Tuscon, AZ",
19
- geocode: {
20
- latitude: 2,
21
- longitude: 3
22
- }
23
- };
24
- const platformData = {
25
- alexa: {
26
- platform: stentor_alexa_1.ALEXA_PLATFORM,
27
- privacyAndCompliance: {
28
- allowsPurchases: true,
29
- containsAds: false,
30
- isChildDirected: true,
31
- isExportCompliant: false,
32
- usesPersonalInfo: true
33
- }
34
- }
35
- };
36
- const baseProps = {
37
- templateType: __1.RADIO_TEMPLATE,
38
- organizationId,
39
- appId,
40
- name,
41
- invocationName,
42
- summary,
43
- icon,
44
- collaborationAgreementUrl: "https://hello.com",
45
- location,
46
- keywords: __1.RADIO_TEMPLATE_KEYWORDS,
47
- liveStreamUrl: "https://some.url",
48
- customIntros: [
49
- {
50
- name: "Intro 1",
51
- outputSpeech: "Hi",
52
- schedule: {
53
- start: {
54
- time: "9:00 Z",
55
- format: "H:mm Z"
56
- },
57
- duration: {
58
- amount: 2,
59
- format: "h"
60
- }
61
- }
62
- },
63
- {
64
- name: "Intro 2",
65
- outputSpeech: "hi"
66
- }
67
- ],
68
- platformData
69
- };
70
- describe("RadioTemplateFactory", () => {
71
- describe("#generateTemplate()", () => {
72
- let template;
73
- beforeEach(() => {
74
- template = new __1.RadioTemplateFactory().generateTemplate({
75
- organizationId,
76
- appId,
77
- name,
78
- invocationName,
79
- icon: appIcon,
80
- testingInstructions: "Hello https://you.found.me More text",
81
- location: {
82
- streetAddress: "Pheonix, AZ",
83
- geocode: {
84
- latitude: 1,
85
- longitude: 0
86
- }
87
- },
88
- platformData: {
89
- alexa: {
90
- platform: "alexa",
91
- privacyAndCompliance: {
92
- allowsPurchases: false,
93
- containsAds: true,
94
- isChildDirected: false,
95
- isExportCompliant: true,
96
- usesPersonalInfo: false
97
- }
98
- }
99
- }
100
- }, [
101
- {
102
- intentId,
103
- appId,
104
- organizationId,
105
- type: stentor_handler_media_1.PLAY_LIVE_STREAM_HANDLER_TYPE,
106
- content: {
107
- [intentId]: [
108
- {
109
- outputSpeech: "hello"
110
- }
111
- ]
112
- },
113
- data: {
114
- url: "https://some.other.url"
115
- }
116
- }
117
- ]);
118
- });
119
- it("sets the type", () => {
120
- chai_1.expect(template.templateType).to.equal(__1.RADIO_TEMPLATE);
121
- });
122
- it("sets the keywords", () => {
123
- chai_1.expect(template.keywords).to.have.length(4);
124
- });
125
- it("sets the invocation name", () => {
126
- chai_1.expect(template.invocationName).to.equal(invocationName);
127
- });
128
- it("sets the live stream url", () => {
129
- chai_1.expect(template.liveStreamUrl).to.equal("https://some.other.url");
130
- });
131
- it("sets the custom intros", () => {
132
- chai_1.expect(template.customIntros).to.exist;
133
- chai_1.expect(template.customIntros).to.have.length(1);
134
- });
135
- it("sets the collaborationAgreementUrl", () => {
136
- chai_1.expect(template.collaborationAgreementUrl).to.exist;
137
- chai_1.expect(template.collaborationAgreementUrl).to.equal("https://you.found.me");
138
- });
139
- it("sets the address", () => {
140
- chai_1.expect(template.location.streetAddress).to.equal("Pheonix, AZ");
141
- });
142
- it("sets the geocode on the location", () => {
143
- chai_1.expect(template.location.geocode.latitude).to.equal(1);
144
- chai_1.expect(template.location.geocode.longitude).to.equal(0);
145
- });
146
- it("sets the icon", () => {
147
- chai_1.expect(template.icon).to.equal(appIcon);
148
- });
149
- it("sets the small icon", () => {
150
- chai_1.expect(template.smallIcon).to.contain("https://some.other");
151
- });
152
- it("sets the large icon", () => {
153
- chai_1.expect(template.largeIcon).to.contain("https://some.other");
154
- });
155
- it("sets the platformData", () => {
156
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.allowsPurchases).to.equal(false);
157
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.containsAds).to.equal(true);
158
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.isChildDirected).to.equal(false);
159
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.isExportCompliant).to.equal(true);
160
- chai_1.expect(template.platformData.alexa.privacyAndCompliance.usesPersonalInfo).to.equal(false);
161
- });
162
- });
163
- describe("#generateApp()", () => {
164
- let template;
165
- let app;
166
- beforeEach(() => {
167
- template = Object.assign({}, baseProps);
168
- app = new __1.RadioTemplateFactory().generateApp(template);
169
- });
170
- it("sets the type", () => {
171
- chai_1.expect(app.templateType).to.equal(__1.RADIO_TEMPLATE);
172
- });
173
- it("sets the location", () => {
174
- chai_1.expect(app.location.streetAddress).to.equal(location.streetAddress);
175
- chai_1.expect(app.location.geocode.latitude).to.equal(location.geocode.latitude);
176
- chai_1.expect(app.location.geocode.longitude).to.equal(location.geocode.longitude);
177
- });
178
- it("sets the organizationId", () => {
179
- chai_1.expect(app.organizationId).to.equal(organizationId);
180
- });
181
- it("sets the appId", () => {
182
- chai_1.expect(app.appId).to.equal(appId);
183
- });
184
- it("sets the keywords", () => {
185
- chai_1.expect(app.keywords).to.have.length(4);
186
- });
187
- it("sets the name", () => {
188
- chai_1.expect(app.name).to.equal(name);
189
- });
190
- it("sets the invocation name and lower cases it", () => {
191
- chai_1.expect(app.invocationName).to.equal(invocationName.toLowerCase());
192
- });
193
- it("sets the summary", () => {
194
- chai_1.expect(app.summary).to.equal(summary);
195
- });
196
- it("sets the description", () => {
197
- chai_1.expect(app.description).to.exist;
198
- chai_1.expect(app.description).to.contain(summary);
199
- chai_1.expect(app.description).to.contain(invocationName.toLowerCase());
200
- });
201
- it("sets the example phrases", () => {
202
- chai_1.expect(app.examplePhrases).to.have.length(3);
203
- chai_1.expect(app.examplePhrases[0]).to.contain(invocationName.toLowerCase());
204
- });
205
- it("sets the testing instructions", () => {
206
- chai_1.expect(app.testingInstructions).to.exist;
207
- });
208
- it("adds the collaboration agreement URL to the testing instructions", () => {
209
- chai_1.expect(app.testingInstructions).to.contain("https://go.xappmedia.com/" + app.organizationId + "/iprights");
210
- });
211
- it("sets the smallIcon", () => {
212
- chai_1.expect(app.smallIcon).to.exist;
213
- });
214
- it("sets the largeIcon", () => {
215
- chai_1.expect(app.largeIcon).to.exist;
216
- });
217
- describe("with optional App", () => {
218
- beforeEach(() => {
219
- template = Object.assign({}, baseProps);
220
- app = new __1.RadioTemplateFactory().generateApp(template, {
221
- organizationId,
222
- appId,
223
- name: "Test App",
224
- keywords: ["EXISTING"],
225
- location: {
226
- streetAddress: "WRONG",
227
- geocode: {
228
- latitude: 4,
229
- longitude: 5
230
- }
231
- }
232
- });
233
- });
234
- it("uses the template keywords as precedence", () => {
235
- chai_1.expect(app.keywords).to.have.length(4);
236
- });
237
- it("uses the template location as precedence", () => {
238
- chai_1.expect(app.location.streetAddress).to.equal("Tuscon, AZ");
239
- chai_1.expect(app.location.geocode.latitude).to.equal(2);
240
- chai_1.expect(app.location.geocode.longitude).to.equal(3);
241
- });
242
- });
243
- });
244
- describe("#generateIntentsAndHandlers()", () => {
245
- let template;
246
- let handlers;
247
- let handler;
248
- beforeEach(() => {
249
- template = Object.assign({}, baseProps);
250
- handlers = new __1.RadioTemplateFactory().generateHandlers(template);
251
- handler = handlers[0];
252
- });
253
- it("returns the correct number of handlers", () => {
254
- chai_1.expect(handlers).to.have.length(1);
255
- });
256
- it("sets the intentId as a LaunchRequest", () => {
257
- chai_1.expect(handler.intentId).to.equal("LaunchRequest");
258
- });
259
- it("sets the type as a Live Stream Intent", () => {
260
- chai_1.expect(stentor_handler_1.isHandler(handler)).to.be.true;
261
- if (stentor_handler_1.isHandler(handler)) {
262
- chai_1.expect(handler.type).to.equal(stentor_handler_media_1.PLAY_LIVE_STREAM_HANDLER_TYPE);
263
- }
264
- });
265
- it("sets the organizationId", () => {
266
- chai_1.expect(handler.organizationId).to.equal(organizationId);
267
- });
268
- it("sets the appId", () => {
269
- chai_1.expect(handler.appId).to.equal("appId");
270
- });
271
- it("sets the name", () => {
272
- chai_1.expect(handler.name).to.have.length.greaterThan(0);
273
- });
274
- it("sets the live stream url on the data", () => {
275
- chai_1.expect(stentor_handler_1.isHandler(handler)).to.be.true;
276
- if (stentor_handler_1.isHandler(handler)) {
277
- chai_1.expect(handler.data).to.have.property("url", "https://some.url");
278
- }
279
- });
280
- describe("when passed an undefined URL", () => {
281
- beforeEach(() => {
282
- template = Object.assign({}, baseProps);
283
- delete template.liveStreamUrl;
284
- handlers = new __1.RadioTemplateFactory().generateHandlers(template);
285
- handler = handlers[0];
286
- });
287
- it("passes out a handler", () => {
288
- chai_1.expect(handler).to.exist;
289
- });
290
- it("sets the url to an empty string", () => {
291
- chai_1.expect(stentor_handler_1.isHandler(handler)).to.be.true;
292
- if (stentor_handler_1.isHandler(handler)) {
293
- chai_1.expect(handler.data).to.have.property("url", "");
294
- }
295
- });
296
- });
297
- });
298
- });
299
- //# sourceMappingURL=RadioTemplateFactory.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioTemplateFactory.test.js","sourceRoot":"","sources":["../../../src/radio/__test__/RadioTemplateFactory.test.ts"],"names":[],"mappings":"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"}