- restructure transform.test.ts

- format test files
This commit is contained in:
Mike Penz
2021-08-27 11:59:12 +02:00
parent f4f12c3359
commit 59a6af0516
4 changed files with 240 additions and 187 deletions
+2 -2
View File
@@ -54,9 +54,9 @@ test('should write result to file', () => {
// should succeed // should succeed
expect(result).toBeDefined() expect(result).toBeDefined()
const readOutput = fs.readFileSync("test.md") const readOutput = fs.readFileSync('test.md')
fs.unlinkSync("test.md") fs.unlinkSync('test.md')
expect(readOutput.toString()).not.toBe('') expect(readOutput.toString()).not.toBe('')
}) })
+8 -8
View File
@@ -18,7 +18,7 @@ it('Should have empty changelog (tags)', async () => {
toTag: 'v0.0.2', toTag: 'v0.0.2',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -35,7 +35,7 @@ it('Should match generated changelog (tags)', async () => {
toTag: 'v0.0.3', toTag: 'v0.0.3',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -60,7 +60,7 @@ it('Should match generated changelog (refs)', async () => {
toTag: 'fa3788c8c4b3373ef8424ce3eb008a5cd07cc5aa', toTag: 'fa3788c8c4b3373ef8424ce3eb008a5cd07cc5aa',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -93,7 +93,7 @@ it('Should match generated changelog and replace all occurrences (refs)', async
toTag: 'fa3788c8c4b3373ef8424ce3eb008a5cd07cc5aa', toTag: 'fa3788c8c4b3373ef8424ce3eb008a5cd07cc5aa',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -128,7 +128,7 @@ it('Should match ordered ASC', async () => {
toTag: 'v0.5.0', toTag: 'v0.5.0',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -150,7 +150,7 @@ it('Should match ordered DESC', async () => {
toTag: 'v0.5.0', toTag: 'v0.5.0',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -172,7 +172,7 @@ it('Should ignore PRs not merged into develop branch', async () => {
toTag: 'v1.4.0', toTag: 'v1.4.0',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
@@ -192,7 +192,7 @@ it('Should ignore PRs not merged into main branch', async () => {
toTag: 'v1.4.0', toTag: 'v1.4.0',
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
}) })
const changeLog = await releaseNotes.pull() const changeLog = await releaseNotes.pull()
+3 -3
View File
@@ -45,7 +45,9 @@ it('Should match generated changelog (unspecified tags)', async () => {
const changeLog = await releaseNotesBuilder.build() const changeLog = await releaseNotesBuilder.build()
console.log(changeLog) console.log(changeLog)
expect(changeLog).toStrictEqual(`## 🐛 Fixes\n\n- Stacktrace Data can be an array\n - PR: #39\n\n`) expect(changeLog).toStrictEqual(
`## 🐛 Fixes\n\n- Stacktrace Data can be an array\n - PR: #39\n\n`
)
}) })
it('Should use empty placeholder', async () => { it('Should use empty placeholder', async () => {
@@ -168,7 +170,6 @@ it('Uncategorized category', async () => {
) )
}) })
it('Verify commit based changelog', async () => { it('Verify commit based changelog', async () => {
const configuration = resolveConfiguration( const configuration = resolveConfiguration(
'', '',
@@ -194,7 +195,6 @@ it('Verify commit based changelog', async () => {
) )
}) })
it('Verify commit based changelog, with emoji categorisation', async () => { it('Verify commit based changelog, with emoji categorisation', async () => {
const configuration = resolveConfiguration( const configuration = resolveConfiguration(
'', '',
+195 -142
View File
@@ -1,240 +1,293 @@
import {buildChangelog} from '../src/transform' import {buildChangelog} from '../src/transform'
import {PullRequestInfo} from '../src/pullRequests' import {PullRequestInfo} from '../src/pullRequests'
import moment from 'moment' import moment from 'moment'
import { DefaultConfiguration } from '../src/configuration'; import {DefaultConfiguration} from '../src/configuration'
jest.setTimeout(180000) jest.setTimeout(180000)
let configuration = DefaultConfiguration const configuration = DefaultConfiguration
configuration.categories = [ configuration.categories = [
{ {
"title": "## 🚀 Features", title: '## 🚀 Features',
"labels": ["[Feature]"] labels: ['[Feature]']
}, },
{ {
"title": "## 🐛 Fixes", title: '## 🐛 Fixes',
"labels": ["[Bug]", "[Issue]"] labels: ['[Bug]', '[Issue]']
}, },
{ {
"title": "## 🧪 Tests", title: '## 🧪 Tests',
"labels": ["[Test]"] labels: ['[Test]']
} }
] ]
let mergedPullRequests: PullRequestInfo[] = [] // list of PRs without labels assigned (extract from title)
mergedPullRequests.push({ const mergedPullRequests: PullRequestInfo[] = []
mergedPullRequests.push(
{
number: 1, number: 1,
title: "[Feature][AB-1234] - this is a PR 1 title message", title: '[Feature][AB-1234] - this is a PR 1 title message',
htmlURL: "", htmlURL: '',
baseBranch: "", baseBranch: '',
mergedAt: moment(), mergedAt: moment(),
mergeCommitSha: "sha1", mergeCommitSha: 'sha1',
author: "Mike", author: 'Mike',
repoName: "test-repo", repoName: 'test-repo',
labels: new Set<string>(), labels: new Set<string>(),
milestone: "", milestone: '',
body: "no magic body for this matter", body: 'no magic body for this matter',
assignees: [], assignees: [],
requestedReviewers: [] requestedReviewers: []
}, { },
{
number: 2, number: 2,
title: "[Issue][AB-4321] - this is a PR 2 title message", title: '[Issue][AB-4321] - this is a PR 2 title message',
htmlURL: "", htmlURL: '',
baseBranch: "", baseBranch: '',
mergedAt: moment(), mergedAt: moment(),
mergeCommitSha: "sha1", mergeCommitSha: 'sha1',
author: "Mike", author: 'Mike',
repoName: "test-repo", repoName: 'test-repo',
labels: new Set<string>(), labels: new Set<string>(),
milestone: "", milestone: '',
body: "no magic body for this matter", body: 'no magic body for this matter',
assignees: [], assignees: [],
requestedReviewers: [] requestedReviewers: []
}, { },
{
number: 3, number: 3,
title: "[Issue][Feature][AB-1234321] - this is a PR 3 title message", title: '[Issue][Feature][AB-1234321] - this is a PR 3 title message',
htmlURL: "", htmlURL: '',
baseBranch: "", baseBranch: '',
mergedAt: moment(), mergedAt: moment(),
mergeCommitSha: "sha1", mergeCommitSha: 'sha1',
author: "Mike", author: 'Mike',
repoName: "test-repo", repoName: 'test-repo',
labels: new Set<string>(), labels: new Set<string>(),
milestone: "", milestone: '',
body: "no magic body for this matter", body: 'no magic body for this matter',
assignees: [], assignees: [],
requestedReviewers: [] requestedReviewers: []
}, { },
{
number: 4, number: 4,
title: "[AB-404] - not found label", title: '[AB-404] - not found label',
htmlURL: "", htmlURL: '',
baseBranch: "", baseBranch: '',
mergedAt: moment(), mergedAt: moment(),
mergeCommitSha: "sha1", mergeCommitSha: 'sha1',
author: "Mike", author: 'Mike',
repoName: "test-repo", repoName: 'test-repo',
labels: new Set<string>(), labels: new Set<string>(),
milestone: "", milestone: '',
body: "no magic body for this matter", body: 'no magic body for this matter',
assignees: [], assignees: [],
requestedReviewers: [] requestedReviewers: []
}) }
)
it('Extract label from title, combined regex', async () => { it('Extract label from title, combined regex', async () => {
configuration.label_extractor = [ configuration.label_extractor = [
{ {
"pattern": ".*(\\[Feature\\]|\\[Issue\\]).*", pattern: '.*(\\[Feature\\]|\\[Issue\\]).*',
"target": "$1", target: '$1',
"on_property": "title" on_property: 'title'
} }
] ]
const resultChangelog = buildChangelog( const resultChangelog = buildChangelog(mergedPullRequests, {
mergedPullRequests, owner: 'mikepenz',
{ repo: 'test-repo',
owner: "mikepenz", fromTag: '1.0.0',
repo: "test-repo", toTag: '2.0.0',
fromTag: "1.0.0",
toTag: "2.0.0",
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
} })
)
expect(resultChangelog).toStrictEqual(`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n\n`) expect(resultChangelog).toStrictEqual(
`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n\n`
)
}) })
it('Extract label from title, split regex', async () => { it('Extract label from title, split regex', async () => {
configuration.label_extractor = [ configuration.label_extractor = [
{ {
"pattern": ".*(\\[Feature\\]).*", pattern: '.*(\\[Feature\\]).*',
"target": "$1", target: '$1',
"on_property": "title" on_property: 'title'
}, },
{ {
"pattern": ".*(\\[Issue\\]).*", pattern: '.*(\\[Issue\\]).*',
"target": "$1", target: '$1',
"on_property": "title" on_property: 'title'
} }
] ]
const resultChangelog = buildChangelog( const resultChangelog = buildChangelog(mergedPullRequests, {
mergedPullRequests, owner: 'mikepenz',
{ repo: 'test-repo',
owner: "mikepenz", fromTag: '1.0.0',
repo: "test-repo", toTag: '2.0.0',
fromTag: "1.0.0",
toTag: "2.0.0",
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
} })
)
expect(resultChangelog).toStrictEqual(`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`) expect(resultChangelog).toStrictEqual(
`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`
)
}) })
it('Extract label from title, match', async () => { it('Extract label from title, match', async () => {
configuration.label_extractor = [ configuration.label_extractor = [
{ {
"pattern": "\\[Feature\\]", pattern: '\\[Feature\\]',
"on_property": "title", on_property: 'title',
"method": "match" method: 'match'
}, },
{ {
"pattern": "\\[Issue\\]", pattern: '\\[Issue\\]',
"on_property": "title", on_property: 'title',
"method": "match" method: 'match'
} }
] ]
const resultChangelog = buildChangelog( const resultChangelog = buildChangelog(mergedPullRequests, {
mergedPullRequests, owner: 'mikepenz',
{ repo: 'test-repo',
owner: "mikepenz", fromTag: '1.0.0',
repo: "test-repo", toTag: '2.0.0',
fromTag: "1.0.0",
toTag: "2.0.0",
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
} })
)
expect(resultChangelog).toStrictEqual(`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`) expect(resultChangelog).toStrictEqual(
`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`
)
}) })
it('Extract label from title, match multiple', async () => { it('Extract label from title, match multiple', async () => {
configuration.label_extractor = [ configuration.label_extractor = [
{ {
"pattern": "\\[Feature\\]|\\[Issue\\]", pattern: '\\[Feature\\]|\\[Issue\\]',
"on_property": "title", on_property: 'title',
"method": "match" method: 'match'
} }
] ]
const resultChangelog = buildChangelog( const resultChangelog = buildChangelog(mergedPullRequests, {
mergedPullRequests, owner: 'mikepenz',
{ repo: 'test-repo',
owner: "mikepenz", fromTag: '1.0.0',
repo: "test-repo", toTag: '2.0.0',
fromTag: "1.0.0",
toTag: "2.0.0",
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: configuration configuration
})
expect(resultChangelog).toStrictEqual(
`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`
)
})
// test set of PRs with lables predefined
const pullRequestsWithLabels: PullRequestInfo[] = []
pullRequestsWithLabels.push(
{
number: 1,
title: '[AB-1234] - this is a PR 1 title message',
htmlURL: '',
baseBranch: '',
mergedAt: moment(),
mergeCommitSha: 'sha1',
author: 'Mike',
repoName: 'test-repo',
labels: new Set<string>().add('Feature'),
milestone: '',
body: 'no magic body for this matter',
assignees: [],
requestedReviewers: []
},
{
number: 2,
title: '[AB-4321] - this is a PR 2 title message',
htmlURL: '',
baseBranch: '',
mergedAt: moment(),
mergeCommitSha: 'sha1',
author: 'Mike',
repoName: 'test-repo',
labels: new Set<string>().add('Issue'),
milestone: '',
body: 'no magic body for this matter',
assignees: [],
requestedReviewers: []
},
{
number: 3,
title: '[AB-1234321] - this is a PR 3 title message',
htmlURL: '',
baseBranch: '',
mergedAt: moment(),
mergeCommitSha: 'sha1',
author: 'Mike',
repoName: 'test-repo',
labels: new Set<string>().add('Issue').add('Feature'),
milestone: '',
body: 'no magic body for this matter',
assignees: [],
requestedReviewers: []
},
{
number: 4,
title: '[AB-404] - not found label',
htmlURL: '',
baseBranch: '',
mergedAt: moment(),
mergeCommitSha: 'sha1',
author: 'Mike',
repoName: 'test-repo',
labels: new Set<string>().add(''),
milestone: '',
body: 'no magic body for this matter',
assignees: [],
requestedReviewers: []
} }
) )
expect(resultChangelog).toStrictEqual(`## 🚀 Features\n\n- [Feature][AB-1234] - this is a PR 1 title message\n - PR: #1\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n## 🐛 Fixes\n\n- [Issue][AB-4321] - this is a PR 2 title message\n - PR: #2\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`) it('Match multiple labels exhaustive for category', async () => {
}) const customConfig = DefaultConfiguration
it('Extract label from title, match multiple exhaustive', async () => {
let customConfig = configuration
customConfig.categories = [ customConfig.categories = [
{ {
"title": "## 🚀 Features and 🐛 Issues", title: '## 🚀 Features and 🐛 Issues',
"labels": ["[Feature]", "[Issue]"], labels: ['[Feature]', '[Issue]'],
"exhaustive": true exhaustive: true
}, },
{ {
"title": "## 🚀 Features", title: '## 🚀 Features',
"labels": ["[Feature]", "[Feature2]"], labels: ['[Feature]', '[Feature2]'],
"exhaustive": true exhaustive: true
}, },
{ {
"title": "## 🐛 Fixes", title: '## 🐛 Fixes',
"labels": ["[Issue]", "[Issue2]"], labels: ['[Issue]', '[Issue2]'],
"exhaustive": true exhaustive: true
} }
] ]
customConfig.label_extractor = [ const resultChangelog = buildChangelog(mergedPullRequests, {
{ owner: 'mikepenz',
"pattern": "\\[Feature\\]", repo: 'test-repo',
"on_property": "title", fromTag: '1.0.0',
"method": "match" toTag: '2.0.0',
},
{
"pattern": "\\[Issue\\]",
"on_property": "title",
"method": "match"
}
]
const resultChangelog = buildChangelog(
mergedPullRequests,
{
owner: "mikepenz",
repo: "test-repo",
fromTag: "1.0.0",
toTag: "2.0.0",
failOnError: false, failOnError: false,
commitMode: false, commitMode: false,
configuration: customConfig configuration: customConfig
} })
expect(resultChangelog).toStrictEqual(
`## 🚀 Features and 🐛 Issues\n\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`
) )
expect(resultChangelog).toStrictEqual(`## 🚀 Features and 🐛 Issues\n\n- [Issue][Feature][AB-1234321] - this is a PR 3 title message\n - PR: #3\n\n`)
}) })