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:
119
test/release-please.js
Normal file
119
test/release-please.js
Normal 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)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user