Sha256: a958b845409ca24e5348a4bbc6aec30db055227cea41b24936d3af9e5ccaaf67

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

require_relative 'spec_helper'

describe Release do
  let(:git) do
    g = double('git')
    allow(g).to receive(:no_prompt=)
    g
  end

  levels = %w(major minor patch)
  levels.each do |l|
    send(:let, l.to_sym) do
      m = double(l)
      allow(m).to receive("#{l}?".to_sym).and_return true
      (levels - [l]).each do |ll|
        allow(m).to receive("#{ll}?".to_sym).and_return false
      end
      m
    end
  end


  describe '.new_version' do

    it 'raise when no commit has been made since last release' do
      allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
      expect(git).to receive(:compute_changelog).and_return([])

      release = Release.new(git)
      expect{release.new_version}.to raise_error(Release::ExistingRelease, /no commit since/i)
    end

    it 'suggests major release when one commit is major' do
      allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
      expect(git).to receive(:compute_changelog).and_return([minor, minor, major, patch])

      release = Release.new(git)
      new_version, reasons = release.new_version

      expect(new_version).to eq('2.0.0'.to_version)
    end

    it 'suggests minor release when one commit is minor' do
      allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
      expect(git).to receive(:compute_changelog).and_return([minor, minor, patch, patch])

      release = Release.new(git)
      new_version, reasons = release.new_version

      expect(new_version).to eq('1.1.0'.to_version)
    end

    it 'suggests patch release when all commits are patches' do
      allow(git).to receive(:compute_last_release).and_return('1.0.1'.to_version)
      expect(git).to receive(:compute_changelog).and_return([patch, patch, patch])

      release = Release.new(git)
      new_version, reasons = release.new_version

      expect(new_version).to eq('1.0.2'.to_version)
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cookbook-release-0.3.1 spec/release_spec.rb