1
0
mirror of https://github.com/joaquinjsb/gitea-release-please-action synced 2026-05-12 05:41:39 +02:00

test: add tests and configure CI/CD (#104)

This commit is contained in:
Benjamin E. Coe
2020-11-25 14:10:46 -05:00
committed by GitHub
parent 562cbbb631
commit fe20625bea
6 changed files with 1108 additions and 6 deletions

119
test/release-please.js Normal file
View File

@@ -0,0 +1,119 @@
const { describe, it } = require('mocha')
const action = require('../')
const assert = require('assert')
const core = require('@actions/core')
const sinon = require('sinon')
describe('release-please-action', () => {
it('both opens PR and tags GitHub releases by default', async () => {
const output = {}
core.setOutput = (name, value) => {
output[name] = value
}
const input = {
'release-type': 'node'
}
core.getInput = (name) => {
return input[name]
}
const createRelease = sinon.stub().returns({
upload_url: 'http://example.com',
tag_name: 'v1.0.0'
})
action.getGitHubRelease = () => {
class Release {}
Release.prototype.createRelease = createRelease
return Release
}
const releasePR = sinon.stub()
action.getReleasePRFactory = () => {
return {
buildStatic: () => {
return {
run: releasePR
}
}
}
}
await action.main()
sinon.assert.calledOnce(createRelease)
sinon.assert.calledOnce(releasePR)
assert.deepStrictEqual(output, {
release_created: true,
upload_url: 'http://example.com',
tag_name: 'v1.0.0'
})
})
it('only opens PRs if, command set to release-pr', async () => {
const output = {}
core.setOutput = (name, value) => {
output[name] = value
}
const input = {
'release-type': 'node',
command: 'release-pr'
}
core.getInput = (name) => {
return input[name]
}
const githubRelease = sinon.stub().returns({
upload_url: 'http://example.com',
tag_name: 'v1.0.0'
})
action.getGitHubRelease = () => {
class Release {}
Release.prototype.createRelease = githubRelease
return Release
}
const releasePR = sinon.stub()
action.getReleasePRFactory = () => {
return {
buildStatic: () => {
return {
run: releasePR
}
}
}
}
await action.main()
sinon.assert.notCalled(githubRelease)
sinon.assert.calledOnce(releasePR)
})
it('only opens tags releases, if command set to github-release', async () => {
const output = {}
core.setOutput = (name, value) => {
output[name] = value
}
const input = {
'release-type': 'node',
command: 'github-release'
}
core.getInput = (name) => {
return input[name]
}
const githubRelease = sinon.stub().returns({
upload_url: 'http://example.com',
tag_name: 'v1.0.0'
})
action.getGitHubRelease = () => {
class Release {}
Release.prototype.createRelease = githubRelease
return Release
}
const releasePR = sinon.stub()
action.getReleasePRFactory = () => {
return {
buildStatic: () => {
return {
run: releasePR
}
}
}
}
await action.main()
sinon.assert.calledOnce(githubRelease)
sinon.assert.notCalled(releasePR)
})
})