releasy-mono
Version:
CLI tool to release node applications with tag and auto semver bump
79 lines (60 loc) • 2.17 kB
text/coffeescript
path = require 'path'
should = require 'should'
{ rm, cat } = require 'shelljs'
semver = require 'semver'
NodeVersionProvider = require '../lib/providers/node.js'
createPackageJson = (filePath, pkg) ->
JSON.stringify(pkg).to(path.resolve("./#{filePath}"))
describe 'NodeVersionProvider', ->
after ->
rm('-rf', path.resolve("test/package.json"))
describe 'reading node version', ->
it 'should return SemVer object', (done) ->
# arrange
createPackageJson 'test/package.json', version: '1.2.3-beta.4'
provider = new NodeVersionProvider 'test/package.json'
# act
version = provider.readVersion()
# assert
version.format().should.equal('1.2.3-beta.4')
done()
it 'should throw error for version in incorrect format', (done) ->
# arrange
createPackageJson 'test/package.json', version: 'blabla'
provider = new NodeVersionProvider 'test/package.json'
# act & assert
( ->
version = provider.readVersion()
).should.throw()
done()
describe 'writing node version', ->
it 'should accept SemVer object', (done) ->
# arrange
createPackageJson 'test/package.json', version: '0.1.0'
provider = new NodeVersionProvider 'test/package.json'
newVersion = semver '0.2.0'
# act
provider.writeVersion newVersion
# assert
JSON.parse(cat 'test/package.json').version.should.equal '0.2.0'
done()
it 'should accept string version', (done) ->
#arrange
createPackageJson 'test/package.json', version: '0.1.0'
provider = new NodeVersionProvider 'test/package.json'
# act
provider.writeVersion '0.3.0'
# assert
JSON.parse(cat 'test/package.json').version.should.equal '0.3.0'
done()
describe 'file support', ->
it 'should support .json extensions', ->
# act
supports = NodeVersionProvider.supports 'mypackage.json'
# assert
supports.should.be.true
it 'should not support any other extension', ->
# act
supports = NodeVersionProvider.supports 'arbitrary.extension'
# assert
supports.should.be.false