diff --git a/ModerateIssue/get-luis-intent.js b/ModerateIssue/get-luis-intent.js index 5fb0f54..ae1aa5b 100644 --- a/ModerateIssue/get-luis-intent.js +++ b/ModerateIssue/get-luis-intent.js @@ -1,10 +1,10 @@ const luisAppId = process.env.LUIS_APP_ID; const endpointKey = process.env.LUIS_ENDPOINT_KEY; -const request = require('request'); -const querystring = require('querystring'); - -module.exports = function getLuisIntent(utterance) { +module.exports = function (utterance) { + const request = require('request'); + const querystring = require('querystring'); + const luisEndpoint = "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/"; const queryParams = { diff --git a/ModerateIssue/index.js b/ModerateIssue/index.js index 6de7ea6..5bdc5d8 100644 --- a/ModerateIssue/index.js +++ b/ModerateIssue/index.js @@ -1,10 +1,11 @@ const octokit = require("@octokit/rest")(); const authenticate = require('./authenticate'); +const getLuisIntent = require('./get-luis-intent'); module.exports = async function (context, data) { const { body } = data const { action, repository, issue, installation } = body; - const { number } = issue; + const { number, title } = issue; const repo = repository.name; const owner = repository.owner.login; const installationId = installation.id; @@ -13,11 +14,12 @@ module.exports = async function (context, data) { let response = ""; if (action === "opened") { await authenticate(octokit, installationId) + const label = await getLuisIntent(title); response = await octokit.issues.addLabels({ owner, repo, number, - labels: ['enhancement', 'question', 'bug'] + labels: [label] }) } context.res = { diff --git a/test/moderateIssueTest.js b/test/moderateIssueTest.js index 3afdc05..d0e9e47 100644 --- a/test/moderateIssueTest.js +++ b/test/moderateIssueTest.js @@ -5,29 +5,31 @@ var issueOpenedPayload = require("./fixtures/issue-opened.json"); describe("ModerateIssue", () => { var moderateIssue - + var defaultLabel; + before(() => { - + createCommentStub = sinon.spy() addLabelsStub = sinon.spy() + octoKitStubs = { issues: { addLabels: addLabelsStub, + createComment: createCommentStub + } - }; + } + + defaultLabel = 'question' moderateIssue = proxyquire("../ModerateIssue/index", { - "@octokit/rest": () => octoKitStubs, - "./authenticate": () => true, - "./get-luis-intent": () => "question" + '@octokit/rest': () => octoKitStubs, + './authenticate': () => true, + './get-luis-intent': () => new Promise(resolve => resolve(defaultLabel)) }); }); - - it('should assign the enhancement label', async () => { - await moderateIssue({}, { body: issueOpenedPayload }) - sinon.assert.calledWith(addLabelsStub, { - labels: ['enhancement', 'question', 'bug'], + labels: [defaultLabel], number: issueOpenedPayload.issue.number, owner: issueOpenedPayload.repository.owner.login, repo: issueOpenedPayload.repository.name