UNPKG

releasy

Version:

CLI tool to release node applications with tag and auto semver bump

144 lines (113 loc) 3.86 kB
const path = require('path') const fs = require('fs') const semver = require('semver') const { createPackageJson } = require('./utils.js') const NodeVersionProvider = require('../lib/providers/node.js') const CUSTOM_MANIFEST_PATH = 'test/fixtures/manifest.json' describe('NodeVersionProvider', () => { afterEach(() => { if (fs.existsSync('test/fixtures/package.json')) fs.unlinkSync(path.resolve('test/fixtures/package.json')) if (fs.existsSync(CUSTOM_MANIFEST_PATH)) fs.unlinkSync(path.resolve(CUSTOM_MANIFEST_PATH)) }) describe('reading node version', () => { it('should return SemVer object', () => { // arrange createPackageJson('test/fixtures/package.json', { version: '1.2.3-beta.4', }) const provider = new NodeVersionProvider('test/fixtures/package.json') // act const version = provider.readVersion() // assert expect(version.format()).toBe('1.2.3-beta.4') }) it('should throw error for version in incorrect format', () => { // arrange createPackageJson('test/fixtures/package.json', { version: 'blabla' }) const provider = new NodeVersionProvider('test/fixtures/package.json') // act & assert expect(() => provider.readVersion()).toThrow() }) }) describe('writing node version', () => { it('should accept SemVer object', () => { // arrange createPackageJson('test/fixtures/package.json', { version: '0.1.0' }) const provider = new NodeVersionProvider('test/fixtures/package.json') const newVersion = semver('0.2.0') // act provider.writeVersion(newVersion) // assert expect( JSON.parse(fs.readFileSync('test/fixtures/package.json')).version ).toBe('0.2.0') }) it('should accept string version', () => { // arrange createPackageJson('test/fixtures/package.json', { version: '0.1.0' }) const provider = new NodeVersionProvider('test/fixtures/package.json') // act provider.writeVersion('0.3.0') // assert expect( JSON.parse(fs.readFileSync('test/fixtures/package.json')).version ).toBe('0.3.0') }) }) describe('file support', () => { it('should support .json extensions', () => { // act const supports = NodeVersionProvider.supports('mypackage.json') // assert expect(supports).toBe(true) }) it('should not support any other extension', () => { // act const supports = NodeVersionProvider.supports('arbitrary.extension') // assert expect(supports).toBe(false) }) }) describe('reading node name', () => { it('should return name without vendor', () => { const name = 'TestName' // arrange createPackageJson(CUSTOM_MANIFEST_PATH, { name, version: '1.2.3-beta.4', }) const provider = new NodeVersionProvider(CUSTOM_MANIFEST_PATH) // act const resultName = provider.readName() // assert expect(resultName).toBe(name) }) it('should return name with vendor', () => { const name = 'TestName' const vendor = 'test' const filePath = 'test/fixtures/manifest.json' // arrange createPackageJson(filePath, { vendor, name, version: '1.2.3-beta.4', }) const provider = new NodeVersionProvider(filePath) // act const resultName = provider.readName() // assert expect(resultName).toBe(`${vendor}.${name}`) }) it('should throw error name', () => { // arrange createPackageJson('test/fixtures/package.json', { version: '1.2.3-beta.4', }) const provider = new NodeVersionProvider('test/fixtures/package.json') // act & assert expect(() => provider.readName()).toThrow() }) }) })