UNPKG

luis-mocker

Version:

Http mocking for Luis.ai

73 lines 7.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Promise = require("bluebird"); const chai_1 = require("chai"); const luis_response_builder_1 = require("luis-response-builder"); const rp = require("request-promise"); const LuisMocker_1 = require("./../src/LuisMocker"); const LUIS_URL = 'https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/appId?subscription-key=subKey&timezoneOffset=0&verbose=true&q='; const CANCEL_INTENT = 'cancel'; const LOGIN_INTENT = 'login'; const NONE_INTENT = 'none'; const TACO_BELL = 'taco bell'; const BENU = 'benu'; const RESTAURANT_NAME = 'restaurantName'; const RELATIVE_YEAR = new Date('2015'); const cancelTacoBellReservationUtterance = `I want to cancel my reservation at ${TACO_BELL} on July 15th`; const cancelBenuReservationUtternace = `My reservation at ${BENU} needs to be canceled`; const loginIssuesUtterance = 'I\'m having trouble loggin in'; // don't want to make the getUtteranceUrl public, but still want to use it here // tslint:disable const cancelTacoBellUri = LuisMocker_1.LuisMocker['getUtteranceUrl'](LUIS_URL, cancelTacoBellReservationUtterance); const cancelBenuUri = LuisMocker_1.LuisMocker['getUtteranceUrl'](LUIS_URL, cancelBenuReservationUtternace); const loginIssuesUri = LuisMocker_1.LuisMocker['getUtteranceUrl'](LUIS_URL, loginIssuesUtterance); // tslint:enable const july15AmbiguousDateEntity = luis_response_builder_1.DateTimeV2.createDateTimeV2_Date_EntityWithAmbiguousDate('July 15th', 0, 4, new Date('7/19'), RELATIVE_YEAR); const cancelTacoBellResponse = new luis_response_builder_1.LuisResponseBuilder(cancelTacoBellReservationUtterance) .addCustomEntity({ startIndex: 0, endIndex: 4, type: RESTAURANT_NAME, entity: TACO_BELL, score: .98 }) .addPrebuiltEntity(july15AmbiguousDateEntity) .addIntent(CANCEL_INTENT, .92) .addIntent(LOGIN_INTENT, .3) .addIntent(NONE_INTENT, .02) .build(); const cancelBenuResponse = new luis_response_builder_1.LuisResponseBuilder(cancelBenuReservationUtternace) .addCustomEntity({ startIndex: 0, endIndex: 4, type: RESTAURANT_NAME, entity: BENU, score: .90 }) .addIntent(CANCEL_INTENT, .98) .addIntent(LOGIN_INTENT, .28) .addIntent(NONE_INTENT, .01) .build(); const loginIssuesResponse = new luis_response_builder_1.LuisResponseBuilder(loginIssuesUtterance) .addIntent(LOGIN_INTENT, .78) .addIntent(CANCEL_INTENT, .2) .addIntent(NONE_INTENT, .01) .build(); describe('LuisMocker', () => { before(() => { new LuisMocker_1.LuisMocker(LUIS_URL) .mock(cancelTacoBellReservationUtterance, cancelTacoBellResponse) .mock(cancelBenuReservationUtternace, cancelBenuResponse) .mock(loginIssuesUtterance, loginIssuesResponse); }); it('returns the appropriate mock for the utternace', () => { return Promise.all([ rp.get(cancelTacoBellUri, { json: true }), rp.get(cancelBenuUri, { json: true }), rp.get(loginIssuesUri, { json: true }) ]).spread((cancelTacoBellTestResponse, cancelBenuTestResponse, loginIssuesTestResponse) => { // console.log(JSON.stringify(cancelTacoBellTestResponse, null, 2)); chai_1.expect(cancelTacoBellTestResponse).to.deep.equal(cancelTacoBellResponse); chai_1.expect(cancelBenuTestResponse).to.deep.equal(cancelBenuResponse); chai_1.expect(loginIssuesTestResponse).to.deep.equal(loginIssuesResponse); }); }); it('returns the same response after multiple calls', () => { const runNTimes = (i) => { return i ? rp.get(loginIssuesUri, { json: true }) .then((loginIssuesTestResponse) => chai_1.expect(loginIssuesTestResponse).to.deep.equal(loginIssuesResponse)) : Promise.resolve(); }; return runNTimes(3); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTHVpc01vY2tlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9MdWlzTW9ja2VyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBb0M7QUFDcEMsK0JBQThCO0FBQzlCLGlFQUF1RjtBQUN2RixzQ0FBc0M7QUFDdEMsb0RBQWlEO0FBRWpELE1BQU0sUUFBUSxHQUFHLDBIQUEwSCxDQUFDO0FBQzVJLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBQzNCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkMsTUFBTSxrQ0FBa0MsR0FBRyxzQ0FBc0MsU0FBUyxlQUFlLENBQUM7QUFDMUcsTUFBTSw4QkFBOEIsR0FBRyxxQkFBcUIsSUFBSSx1QkFBdUIsQ0FBQztBQUN4RixNQUFNLG9CQUFvQixHQUFHLCtCQUErQixDQUFDO0FBRTdELCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsTUFBTSxpQkFBaUIsR0FBRyx1QkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxFQUFFLGtDQUFrQyxDQUFDLENBQUM7QUFDdEcsTUFBTSxhQUFhLEdBQUcsdUJBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO0FBQzlGLE1BQU0sY0FBYyxHQUFHLHVCQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUNyRixnQkFBZ0I7QUFFaEIsTUFBTSx5QkFBeUIsR0FDM0Isa0NBQVUsQ0FBQyw2Q0FBNkMs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