Merge pull request #4 from marocchino/2-test

module test
This commit is contained in:
marocchino 2019-11-23 10:15:29 +09:00 committed by GitHub
commit f850d3d060
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 100 additions and 25 deletions

55
__tests__/comment.test.ts Normal file
View file

@ -0,0 +1,55 @@
import {
findPreviousComment,
createComment,
updateComment
} from "../src/comment";
const repo = {};
const body = "some message";
it("findPreviousComment", async () => {
const comment = {
user: {
login: "github-actions[bot]"
}
};
const otherComment = {
user: {
login: "some-user"
}
};
const octokit = {
issues: {
listComments: jest.fn(() =>
Promise.resolve({
data: [otherComment, comment]
})
)
}
};
expect(await findPreviousComment(octokit, repo, 123)).toBe(comment);
expect(octokit.issues.listComments).toBeCalledWith({ issue_number: 123 });
});
it("updateComment", async () => {
const octokit = {
issues: {
updateComment: jest.fn(() => Promise.resolve())
}
};
expect(await updateComment(octokit, repo, 456, body)).toBeUndefined();
expect(octokit.issues.updateComment).toBeCalledWith({
comment_id: 456,
body
});
});
it("createComment", async () => {
const octokit = {
issues: {
createComment: jest.fn(() => Promise.resolve())
}
};
expect(await createComment(octokit, repo, 456, body)).toBeUndefined();
expect(octokit.issues.createComment).toBeCalledWith({
issue_number: 456,
body
});
});

View file

@ -1,2 +0,0 @@
test("create a comment when no comment", async () => {});
test("update a comment when comment is exists", async () => {});

21
src/comment.ts Normal file
View file

@ -0,0 +1,21 @@
export async function findPreviousComment(octokit, repo, issue_number) {
const { data: comments } = await octokit.issues.listComments({
...repo,
issue_number
});
return comments.find(comment => comment.user.login === "github-actions[bot]");
}
export async function updateComment(octokit, repo, comment_id, body) {
await octokit.issues.updateComment({
...repo,
comment_id,
body
});
}
export async function createComment(octokit, repo, issue_number, body) {
await octokit.issues.createComment({
...repo,
issue_number,
body
});
}

View file

@ -1,40 +1,26 @@
import * as core from "@actions/core";
import { context, GitHub } from "@actions/github";
import { findPreviousComment, createComment, updateComment } from "./comment";
async function run() {
try {
const repo = context.repo;
const issue_number = context?.payload?.pull_request?.number;
if (!issue_number) {
const number = context?.payload?.pull_request?.number;
const body = core.getInput("message");
const githubToken = core.getInput("GITHUB_TOKEN");
if (!number) {
core.setFailed("This action only works for pull_request");
return;
}
const body = core.getInput("message");
const githubToken = core.getInput("GITHUB_TOKEN");
if (!body || !githubToken) {
core.setFailed("invalid input: please check your workflow");
return;
}
const octokit = new GitHub(githubToken);
const { data: comments } = await octokit.issues.listComments({
...repo,
issue_number
});
const myComment = comments.find(
comment => comment.user.login === "github-actions[bot]"
);
if (myComment) {
await octokit.issues.updateComment({
...repo,
comment_id: myComment.id,
body
});
const previous = await findPreviousComment(octokit, repo, number);
if (previous) {
await updateComment(octokit, repo, previous.id, body);
} else {
await octokit.issues.createComment({
...repo,
issue_number,
body
});
await createComment(octokit, repo, number, body);
}
} catch ({ message }) {
core.setFailed(message);

15
wallaby.js Normal file
View file

@ -0,0 +1,15 @@
module.exports = function(wallaby) {
return {
files: ["src/**/*.js?(x)", "!src/**/*.spec.ts?(x)"],
tests: ["__tests__/**/*.test.ts?(x)"],
env: {
type: "node",
runner: "node"
},
testFramework: "jest",
debug: true
};
};