Improve test coverage
Signed-off-by: Erik Engervall <erik.engervall@gmail.com>
This commit is contained in:
@@ -20,7 +20,7 @@ import { render } from '@testing-library/react';
|
||||
import {
|
||||
mockApiClient,
|
||||
mockCalverProject,
|
||||
mockNextGitHubInfo,
|
||||
mockNextGitHubInfoSemver,
|
||||
mockReleaseBranch,
|
||||
mockReleaseCandidateCalver,
|
||||
mockReleaseVersionCalver,
|
||||
@@ -36,7 +36,7 @@ jest.mock('../../contexts/ProjectContext', () => ({
|
||||
useProjectContext: jest.fn(() => mockCalverProject),
|
||||
}));
|
||||
jest.mock('../../helpers/getRcGitHubInfo', () => ({
|
||||
getRcGitHubInfo: () => mockNextGitHubInfo,
|
||||
getRcGitHubInfo: () => mockNextGitHubInfoSemver,
|
||||
}));
|
||||
jest.mock('./hooks/useCreateRc', () => ({
|
||||
useCreateRc: () =>
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
mockApiClient,
|
||||
mockCalverProject,
|
||||
mockDefaultBranch,
|
||||
mockNextGitHubInfo,
|
||||
mockNextGitHubInfoCalver,
|
||||
mockReleaseVersionCalver,
|
||||
} from '../../../test-helpers/test-helpers';
|
||||
import { useCreateRc } from './useCreateRc';
|
||||
@@ -34,7 +34,7 @@ describe('useCreateRc', () => {
|
||||
useCreateRc({
|
||||
defaultBranch: mockDefaultBranch,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
nextGitHubInfo: mockNextGitHubInfo,
|
||||
nextGitHubInfo: mockNextGitHubInfoCalver,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
}),
|
||||
@@ -53,7 +53,7 @@ describe('useCreateRc', () => {
|
||||
useCreateRc({
|
||||
defaultBranch: mockDefaultBranch,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
nextGitHubInfo: mockNextGitHubInfo,
|
||||
nextGitHubInfo: mockNextGitHubInfoCalver,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
successCb: jest.fn(),
|
||||
@@ -81,12 +81,12 @@ describe('useCreateRc', () => {
|
||||
Object {
|
||||
"link": "mock_compareCommits_html_url",
|
||||
"message": "Fetched commit comparison",
|
||||
"secondaryMessage": "rc/1.2.3...rc/1.2.3",
|
||||
"secondaryMessage": "rc/2020.01.01_1...rc/2020.01.01_1",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_createRelease_html_url",
|
||||
"message": "Created Release Candidate \\"mock_createRelease_name\\"",
|
||||
"secondaryMessage": "with tag \\"rc-1.2.3\\"",
|
||||
"secondaryMessage": "with tag \\"rc-2020.01.01_1\\"",
|
||||
},
|
||||
Object {
|
||||
"icon": "success",
|
||||
|
||||
@@ -80,11 +80,11 @@ describe('patch', () => {
|
||||
"secondaryMessage": "with message \\"mock_commit_message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Forced branch \\"rc/1.2.3\\" to temporary commit \\"mock_commit_sha\\"",
|
||||
"message": "Forced branch \\"rc/2020.01.01_1\\" to temporary commit \\"mock_commit_sha\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_merge_html_url",
|
||||
"message": "Merged temporary commit into \\"rc/1.2.3\\"",
|
||||
"message": "Merged temporary commit into \\"rc/2020.01.01_1\\"",
|
||||
"secondaryMessage": "with message \\"mock_merge_commit_message\\"",
|
||||
},
|
||||
Object {
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
mockReleaseVersionCalver,
|
||||
mockReleaseCandidateCalver,
|
||||
} from '../../test-helpers/test-helpers';
|
||||
import { getCalverTagParts } from './getCalverTagParts';
|
||||
|
||||
describe('getCalverTagParts', () => {
|
||||
it('should return tagParts for RC tag', () => {
|
||||
const result = getCalverTagParts(mockReleaseCandidateCalver.tagName);
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"calver": "2020.01.01",
|
||||
"patch": 1,
|
||||
"prefix": "rc",
|
||||
}
|
||||
`);
|
||||
});
|
||||
|
||||
it('should return tagParts for Version tag', () => {
|
||||
const result = getCalverTagParts(mockReleaseVersionCalver.tagName);
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"calver": "2020.01.01",
|
||||
"patch": 1,
|
||||
"prefix": "version",
|
||||
}
|
||||
`);
|
||||
});
|
||||
|
||||
it('should return null for invalid prefix', () => {
|
||||
expect(() =>
|
||||
getCalverTagParts('invalid-2020.01.01_1'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid calver tag"`);
|
||||
});
|
||||
|
||||
it('should return null for invalid calver (missing padded zero)', () => {
|
||||
expect(() =>
|
||||
getCalverTagParts('rc-2020.1.01_1'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid calver tag"`);
|
||||
});
|
||||
|
||||
it('should return null for invalid calver (missing day)', () => {
|
||||
expect(() =>
|
||||
getCalverTagParts('rc-2020.01_1'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid calver tag"`);
|
||||
});
|
||||
|
||||
it('should return null for invalid patch (letter instead of number)', () => {
|
||||
expect(() =>
|
||||
getCalverTagParts('rc-2020.01.01_a'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid calver tag"`);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
mockReleaseCandidateSemver,
|
||||
mockReleaseVersionSemver,
|
||||
} from '../../test-helpers/test-helpers';
|
||||
import { getSemverTagParts } from './getSemverTagParts';
|
||||
|
||||
describe('getSemverTagParts', () => {
|
||||
it('should return tagParts for RC tag', () =>
|
||||
expect(getSemverTagParts(mockReleaseCandidateSemver.tagName))
|
||||
.toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"major": 1,
|
||||
"minor": 2,
|
||||
"patch": 3,
|
||||
"prefix": "rc",
|
||||
}
|
||||
`));
|
||||
|
||||
it('should return tagParts for Version tag', () =>
|
||||
expect(getSemverTagParts(mockReleaseVersionSemver.tagName))
|
||||
.toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"major": 1,
|
||||
"minor": 2,
|
||||
"patch": 3,
|
||||
"prefix": "version",
|
||||
}
|
||||
`));
|
||||
|
||||
it('should throw for invalid prefix', () => {
|
||||
expect(() =>
|
||||
getSemverTagParts('invalid-1.2.3'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid semver tag"`);
|
||||
});
|
||||
|
||||
it('should throw for invalid semver (missing patch)', () => {
|
||||
expect(() =>
|
||||
getSemverTagParts('rc-1.2'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid semver tag"`);
|
||||
});
|
||||
|
||||
it('should throw for invalid semver (founds calver)', () => {
|
||||
expect(() =>
|
||||
getSemverTagParts('rc-1337.01.01_1'),
|
||||
).toThrowErrorMatchingInlineSnapshot(`"Invalid semver tag, found calver"`);
|
||||
});
|
||||
});
|
||||
@@ -43,7 +43,7 @@ describe('useGetGitHubBatchInfo', () => {
|
||||
"id": 1,
|
||||
"prerelease": false,
|
||||
"tagName": "rc-2020.01.01_1",
|
||||
"targetCommitish": "rc/1.2.3",
|
||||
"targetCommitish": "rc/2020.01.01_1",
|
||||
},
|
||||
"releaseBranch": Object {
|
||||
"commit": Object {
|
||||
|
||||
@@ -58,7 +58,12 @@ describe('testHelpers', () => {
|
||||
"versioningStrategy": "calver",
|
||||
},
|
||||
"mockDefaultBranch": "mock_defaultBranch",
|
||||
"mockNextGitHubInfo": Object {
|
||||
"mockNextGitHubInfoCalver": Object {
|
||||
"rcBranch": "rc/2020.01.01_1",
|
||||
"rcReleaseTag": "rc-2020.01.01_1",
|
||||
"releaseName": "Version 2020.01.01_1",
|
||||
},
|
||||
"mockNextGitHubInfoSemver": Object {
|
||||
"rcBranch": "rc/1.2.3",
|
||||
"rcReleaseTag": "rc-1.2.3",
|
||||
"releaseName": "Version 1.2.3",
|
||||
@@ -82,6 +87,13 @@ describe('testHelpers', () => {
|
||||
"id": 1,
|
||||
"prerelease": true,
|
||||
"tagName": "rc-2020.01.01_1",
|
||||
"targetCommitish": "rc/2020.01.01_1",
|
||||
},
|
||||
"mockReleaseCandidateSemver": Object {
|
||||
"htmlUrl": "mock_release_html_url",
|
||||
"id": 1,
|
||||
"prerelease": true,
|
||||
"tagName": "rc-1.2.3",
|
||||
"targetCommitish": "rc/1.2.3",
|
||||
},
|
||||
"mockReleaseVersionCalver": Object {
|
||||
@@ -89,7 +101,7 @@ describe('testHelpers', () => {
|
||||
"id": 1,
|
||||
"prerelease": false,
|
||||
"tagName": "version-2020.01.01_1",
|
||||
"targetCommitish": "rc/1.2.3",
|
||||
"targetCommitish": "rc/2020.01.01_1",
|
||||
},
|
||||
"mockReleaseVersionSemver": Object {
|
||||
"htmlUrl": "mock_release_html_url",
|
||||
|
||||
@@ -27,6 +27,18 @@ import { getRcGitHubInfo } from '../helpers/getRcGitHubInfo';
|
||||
const mockOwner = 'mock_owner';
|
||||
const mockRepo = 'mock_repo';
|
||||
|
||||
const A_CALVER_VERSION = '2020.01.01_1';
|
||||
const MOCK_RELEASE_NAME_CALVER = `Version ${A_CALVER_VERSION}`;
|
||||
const MOCK_RELEASE_BRANCH_NAME_CALVER = `rc/${A_CALVER_VERSION}`;
|
||||
const MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER = `rc-${A_CALVER_VERSION}`;
|
||||
const MOCK_RELEASE_VERSION_TAG_NAME_CALVER = `version-${A_CALVER_VERSION}`;
|
||||
|
||||
const A_SEMVER_VERSION = '1.2.3';
|
||||
const MOCK_RELEASE_NAME_SEMVER = `Version ${A_SEMVER_VERSION}`;
|
||||
const MOCK_RELEASE_BRANCH_NAME_SEMVER = `rc/${A_SEMVER_VERSION}`;
|
||||
const MOCK_RELEASE_CANDIDATE_TAG_NAME_SEMVER = `rc-${A_SEMVER_VERSION}`;
|
||||
const MOCK_RELEASE_VERSION_TAG_NAME_SEMVER = `version-${A_SEMVER_VERSION}`;
|
||||
|
||||
export const mockSemverProject: Project = {
|
||||
owner: mockOwner,
|
||||
repo: mockRepo,
|
||||
@@ -47,10 +59,16 @@ export const mockSearchSemver = `?versioningStrategy=${mockSemverProject.version
|
||||
|
||||
export const mockDefaultBranch = 'mock_defaultBranch';
|
||||
|
||||
export const mockNextGitHubInfo: ReturnType<typeof getRcGitHubInfo> = {
|
||||
rcBranch: 'rc/1.2.3',
|
||||
rcReleaseTag: 'rc-1.2.3',
|
||||
releaseName: 'Version 1.2.3',
|
||||
export const mockNextGitHubInfoSemver: ReturnType<typeof getRcGitHubInfo> = {
|
||||
rcBranch: MOCK_RELEASE_BRANCH_NAME_SEMVER,
|
||||
rcReleaseTag: MOCK_RELEASE_CANDIDATE_TAG_NAME_SEMVER,
|
||||
releaseName: MOCK_RELEASE_NAME_SEMVER,
|
||||
};
|
||||
|
||||
export const mockNextGitHubInfoCalver: ReturnType<typeof getRcGitHubInfo> = {
|
||||
rcBranch: MOCK_RELEASE_BRANCH_NAME_CALVER,
|
||||
rcReleaseTag: MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER,
|
||||
releaseName: MOCK_RELEASE_NAME_CALVER,
|
||||
};
|
||||
|
||||
export const mockTagParts = {
|
||||
@@ -74,24 +92,32 @@ const createMockRelease = ({
|
||||
id: 1,
|
||||
htmlUrl: 'mock_release_html_url',
|
||||
prerelease,
|
||||
tagName: 'rc-2020.01.01_1',
|
||||
targetCommitish: 'rc/1.2.3',
|
||||
tagName: MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER,
|
||||
targetCommitish: MOCK_RELEASE_BRANCH_NAME_CALVER,
|
||||
...rest,
|
||||
});
|
||||
|
||||
export const mockReleaseCandidateCalver = createMockRelease({
|
||||
prerelease: true,
|
||||
tagName: 'rc-2020.01.01_1',
|
||||
targetCommitish: 'rc/1.2.3',
|
||||
tagName: MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER,
|
||||
targetCommitish: MOCK_RELEASE_BRANCH_NAME_CALVER,
|
||||
});
|
||||
|
||||
export const mockReleaseVersionCalver = createMockRelease({
|
||||
prerelease: false,
|
||||
tagName: 'version-2020.01.01_1',
|
||||
targetCommitish: 'rc/1.2.3',
|
||||
tagName: MOCK_RELEASE_VERSION_TAG_NAME_CALVER,
|
||||
targetCommitish: MOCK_RELEASE_BRANCH_NAME_CALVER,
|
||||
});
|
||||
|
||||
export const mockReleaseCandidateSemver = createMockRelease({
|
||||
prerelease: true,
|
||||
tagName: MOCK_RELEASE_CANDIDATE_TAG_NAME_SEMVER,
|
||||
targetCommitish: MOCK_RELEASE_BRANCH_NAME_SEMVER,
|
||||
});
|
||||
export const mockReleaseVersionSemver = createMockRelease({
|
||||
prerelease: false,
|
||||
tagName: 'version-1.2.3',
|
||||
targetCommitish: 'rc/1.2.3',
|
||||
tagName: MOCK_RELEASE_VERSION_TAG_NAME_SEMVER,
|
||||
targetCommitish: MOCK_RELEASE_BRANCH_NAME_SEMVER,
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -100,12 +126,18 @@ export const mockReleaseVersionSemver = createMockRelease({
|
||||
const createMockBranch = ({
|
||||
...rest
|
||||
}: Partial<GetBranchResult> = {}): GetBranchResult => ({
|
||||
name: 'rc/1.2.3',
|
||||
name: MOCK_RELEASE_BRANCH_NAME_SEMVER,
|
||||
commit: {
|
||||
sha: 'mock_branch_commit_sha',
|
||||
commit: { tree: { sha: 'mock_branch_commit_commit_tree_sha' } },
|
||||
commit: {
|
||||
tree: {
|
||||
sha: 'mock_branch_commit_commit_tree_sha',
|
||||
},
|
||||
},
|
||||
},
|
||||
links: {
|
||||
html: 'mock_branch_links_html',
|
||||
},
|
||||
links: { html: 'mock_branch_links_html' },
|
||||
...rest,
|
||||
});
|
||||
export const mockReleaseBranch = createMockBranch();
|
||||
|
||||
Reference in New Issue
Block a user