luis-mocker
Version:
Http mocking for Luis.ai
73 lines • 7.97 kB
JavaScript
"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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