Skip to content

Commit

Permalink
tests: increase test code coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
stdavis committed Oct 20, 2020
1 parent 510086f commit 8e88fa0
Show file tree
Hide file tree
Showing 8 changed files with 162 additions and 3 deletions.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"cSpell.words": [
"asdavis",
"coverallsapp",
"oclif",
"octokit",
Expand Down
20 changes: 20 additions & 0 deletions __mocks__/@octokit/rest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class Octokit {
constructor(auth) {
this.token = auth;
this.issues = {
listForRepo: ({ owner }) => {
const issues = {
'stdavis': ['stdavis issues'],
'asdavis': ['asdavis issues']
};

return {
data: issues[owner]
};
}
};
}
}


module.exports = { Octokit };
24 changes: 24 additions & 0 deletions __mocks__/package-json.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module.exports = (packageName) => {
const packages = {
dep1: {
repository: {
url: 'https://github.com/stdavis/a-good-module'
}
},
dep2: {
repository: {
url: 'https://github.com/asdavis/another-good-module'
}
},
devDep1: {},
devDep2: {
repository: {}
},
noRepoUrl: {
repository: {}
},
noRepo: {}
};

return packages[packageName];
};
12 changes: 12 additions & 0 deletions __mocks__/read-pkg.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = () => {
return {
dependencies: {
dep1: '^1.0.1',
dep2: '1.0.2'
},
devDependencies: {
devDep1: '^5.0.0',
devDep2: '3.0.0'
}
};
};
32 changes: 29 additions & 3 deletions src/index.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
describe('sanity', () => {
it('works', () => {
expect(true).toBeTruthy();
const { test } = require('@oclif/test');
const getToken = require('./authentication');
const { getCurrentProjectDependencies } = require('./packages');
const { getIssues, processIssues } = require('./issues');
const cmd = require('..');


jest.mock('./authentication');
getToken.mockResolvedValue('token');
jest.mock('./packages');
getCurrentProjectDependencies.mockResolvedValue({
dep1: '^1.1.1',
dep2: '^2.2.2'
});
jest.mock('./issues');
getIssues.mockResolvedValue({});

describe('index', () => {
beforeEach(() => {
});

test
.stdout()
.do(() => cmd.run([]))
.it('calls all functions', () => {
expect(getToken).toHaveBeenCalled();
expect(getCurrentProjectDependencies).toHaveBeenCalled();
expect(getIssues).toHaveBeenCalled();
expect(processIssues).toHaveBeenCalled();
});
});
6 changes: 6 additions & 0 deletions src/issues.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const parseGitHubUrl = require('parse-github-url');
const { getRepoUrl } = require('./packages');

const getIssues = async (dependencies, token) => {
/*
dependencies: { dep: <version string>, dep2: <version string> }
*/
const octokit = new Octokit({
auth: token
});
Expand Down Expand Up @@ -34,6 +37,9 @@ const getIssues = async (dependencies, token) => {
};

const processIssues = (issues) => {
/*
issues: { dep: Issue[], dep2: Issue[] }
*/
const isHelpWantedLabel = label => {
return /help.wanted/.test(label.name.toLowerCase());
};
Expand Down
43 changes: 43 additions & 0 deletions src/issues.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
const { getIssues, processIssues } = require("./issues");

describe('issues', () => {
describe('getIssues', () => {
it('collects issues', async () => {
const dependencies = {
'dep1': '1.1.1',
'dep2': '1.2.2'
};

const result = await getIssues(dependencies, 'blah');

expect(result).toEqual({
'dep2': ['asdavis issues'],
'dep1': ['stdavis issues']
});
});
});

describe('processIssues', () => {
it('prints issues to the output', () => {
processIssues({
dep1: [{
labels: [{ name: 'help wanted' }, { name: 'hello' }],
title: 'issue title',
html_url: 'https://someurl.com'
}, {
labels: [{ name: 'hello' }],
title: 'issue title',
html_url: 'https://someurl.com'
}],
dep2: [{
labels: [{ name: 'hello' }, { name: 'help-wanted' }],
title: 'issue title two',
html_url: 'https://someurl.com'
}]
});

// runs without exception
expect(true).toBeTruthy();
});
});
});
27 changes: 27 additions & 0 deletions src/packages.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const { getRepoUrl, getCurrentProjectDependencies } = require('./packages');


describe('packages', () => {
describe('getRepoUrl', () => {
it('returns the url', async () => {
expect(await getRepoUrl('dep2', '1.1.1')).toBe('https://github.com/asdavis/another-good-module');
});
it('returns null if no repo or url', async () => {
expect(await getRepoUrl('noRepo', '1.1.1')).toBeNull();
expect(await getRepoUrl('noRepoUrl', '1.1.1')).toBeNull();
});
});

describe('getCurrentProjectDependencies', () => {
it('combines deps and dev deps', async () => {
const expected = {
dep1: '^1.0.1',
dep2: '1.0.2',
devDep1: '^5.0.0',
devDep2: '3.0.0'
};

expect(await getCurrentProjectDependencies()).toEqual(expected);
});
});
});

0 comments on commit 8e88fa0

Please sign in to comment.