Retrospring/spec/integration/version_bump_spec.rb

85 lines
3.0 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
require "support/load_rake_tasks"
describe "version bumping tasks" do
include ActiveSupport::Testing::TimeHelpers
describe "version:bump" do
around do |example|
# make a backup of our version file
version_path = Rails.root.join("lib/retrospring/version.rb")
version_contents = File.read(version_path)
example.run
ensure
# restore our version file
File.write(version_path, version_contents)
end
it "updates the version if the version date differs" do
travel_to(Time.utc(2069, 6, 21, 13, 37, 0))
allow($stdout).to receive(:puts)
Rake::Task["version:bump"].execute
expect($stdout).to have_received(:puts).with "New version: 2069.0621.0"
travel_back
end
context "when version is already from today" do
before do
allow(Retrospring::Version).to receive(:year).and_return 2069
allow(Retrospring::Version).to receive(:month).and_return 6
allow(Retrospring::Version).to receive(:day).and_return 21
allow(Retrospring::Version).to receive(:patch).and_return 0
# just stubbing the constant is not enough, we need to stub away the
# reading of the version file too; otherwise only the patch value is
# updated
version_path = Rails.root.join("lib/retrospring/version.rb")
version_contents = File.read(version_path)
.sub!(/def year = .+/, "def year = 2069")
.sub!(/def month = .+/, "def month = 6")
.sub!(/def day = .+/, "def day = 21")
.sub!(/def patch = .+/, "def patch = 0")
allow(File).to receive(:read).with(version_path).and_return(version_contents)
end
it "updates the version if the version date differs" do
travel_to(Time.utc(2069, 6, 21, 13, 37, 0))
allow($stdout).to receive(:puts)
Rake::Task["version:bump"].execute
expect($stdout).to have_received(:puts).with "Current version: 2069.0621.0"
expect($stdout).to have_received(:puts).with "New version: 2069.0621.1"
travel_back
end
end
end
describe "version:commit" do
before do
allow(Retrospring::Version).to receive(:year).and_return 2069
allow(Retrospring::Version).to receive(:month).and_return 6
allow(Retrospring::Version).to receive(:day).and_return 21
allow(Retrospring::Version).to receive(:patch).and_return 3
end
it "runs the correct git commands" do
allow($stdout).to receive(:puts)
version_path = Rails.root.join("lib/retrospring/version.rb")
expect_any_instance_of(Rake::FileUtilsExt)
.to receive(:sh)
.with(%(git commit -m 'Bump version to 2069.0621.3' -- #{version_path.to_s.inspect}))
expect_any_instance_of(Rake::FileUtilsExt)
.to receive(:sh)
.with(%(git tag -a -m 'Bump version to 2069.0621.3' 2069.0621.3))
Rake::Task["version:commit"].execute
end
end
end