* move getLatestRelease logic from [GitHubRelease] to common-fetch - so that the sorting and prerelease logic can be used for other services too, like commits-since * add sort and prerelease query params to [GitHubCommitsSince] - they only work when using the 'latest' version of course - uses same logic as release service * reuse queryParamSchema from common-fetch for [GitHubTag] - as they were the exact same schema * refactor [GitHubCommitsSince] tests to use withRegex - and the same variable everywhere * split out release/tag logic from common-fetch to common-release (affects [GitHubCommitsSince], [GitHubRelease], [GitHubTag]) - this logic is only used for code related to releases & tags, so made sense as a split point Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
'use strict'
|
|
|
|
const { test, given } = require('sazerac')
|
|
const { _getLatestRelease } = require('./github-common-release')
|
|
|
|
describe('GithubRelease', function() {
|
|
test(_getLatestRelease, () => {
|
|
const releaseFixture = [
|
|
{ tag_name: 'cheese', prerelease: false }, // any old string
|
|
{ tag_name: 'v1.2', prerelease: false }, // semver release
|
|
{ tag_name: 'v1.3-beta3', prerelease: true }, // semver pre-release
|
|
]
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'semver',
|
|
includePrereleases: true,
|
|
}).expect({ tag_name: 'v1.3-beta3', prerelease: true })
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'semver',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: 'v1.2', prerelease: false })
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'date',
|
|
includePrereleases: true,
|
|
}).expect({ tag_name: 'cheese', prerelease: false })
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'date',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: 'cheese', prerelease: false })
|
|
|
|
// if there are only pre-releases to choose from
|
|
// return a pre-release anyway in preference to nothing
|
|
given({
|
|
releases: [{ tag_name: '1.2.0-beta', prerelease: true }],
|
|
sort: 'semver',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: '1.2.0-beta', prerelease: true })
|
|
given({
|
|
releases: [{ tag_name: '1.2.0-beta', prerelease: true }],
|
|
sort: 'date',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: '1.2.0-beta', prerelease: true })
|
|
})
|
|
})
|