Skip to content

Commit

Permalink
Fix Version Check Bug and add Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pulkitkkr committed Jan 30, 2023
1 parent edd749f commit 33117d3
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 11 deletions.
4 changes: 0 additions & 4 deletions lib/react_on_rails/utils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,5 @@ def self.prepend_to_file_if_text_not_present(file:, text_to_prepend:, regex:)

puts "Prepended\n#{text_to_prepend}to #{file}."
end

def self.semver_to_string(ary)
"#{ary[0]}.#{ary[1]}.#{ary[2]}"
end
end
end
17 changes: 11 additions & 6 deletions lib/react_on_rails/webpacker_utils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ def self.shakapacker_version_as_array
@shakapacker_version_as_array = [match[1].to_i, match[2].to_i, match[3].to_i]
end

def self.shackapacker_version_requirement_met?(ary)
ary[0] >= shakapacker_version_as_array[0] && ary[1] >= shakapacker_version_as_array[1] &&
ary[2] >= shakapacker_version_as_array[2]
def self.shackapacker_version_requirement_met?(required_version)
req_ver = semver_to_string(required_version)

Gem::Version.new(shakapacker_version) >= Gem::Version.new(req_ver)
end

# This returns either a URL for the webpack-dev-server, non-server bundle or
Expand Down Expand Up @@ -119,9 +120,9 @@ def self.raise_nested_entries_disabled

def self.raise_shakapacker_version_incompatible_for_autobundling
msg = <<~MSG
**ERROR** ReactOnRails: Please upgrade Shakapacker to version #{ReactOnRails::Utils.semver_to_string(ReactOnRails::PacksGenerator::MINIMUM_SHAKAPACKER_VERSION)} or \
**ERROR** ReactOnRails: Please upgrade Shakapacker to version #{ReactOnRails::WebpackerUtils.semver_to_string(ReactOnRails::PacksGenerator::MINIMUM_SHAKAPACKER_VERSION)} or \
above to use the automated bundle generation feature. The currently installed version is \
#{ReactOnRails::Utils.semver_to_string(ReactOnRails::WebpackerUtils.shakapacker_version_as_array)}.
#{ReactOnRails::WebpackerUtils.semver_to_string(ReactOnRails::WebpackerUtils.shakapacker_version_as_array)}.
MSG

raise ReactOnRails::Error, msg
Expand All @@ -130,11 +131,15 @@ def self.raise_shakapacker_version_incompatible_for_autobundling
def self.raise_shakapacker_not_installed
msg = <<~MSG
**ERROR** ReactOnRails: Missing Shakapacker gem. Please upgrade to use Shakapacker \
#{ReactOnRails::Utils.semver_to_string(minimum_required_shakapacker_version)} or above to use the \
#{ReactOnRails::WebpackerUtils.semver_to_string(minimum_required_shakapacker_version)} or above to use the \
automated bundle generation feature.
MSG

raise ReactOnRails::Error, msg
end

def self.semver_to_string(ary)
"#{ary[0]}.#{ary[1]}.#{ary[2]}"
end
end
end
34 changes: 33 additions & 1 deletion spec/react_on_rails/webpacker_utils_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,39 @@ module ReactOnRails
described_class.using_webpacker?
end

it { is_expected.to eq(true) }
it { is_expected.to be(true) }
end

describe ".shackapacker_version_requirement_met?" do
let(:minimum_version) { [6, 5, 3] }

it "returns false when version is lower than minimum_version" do
allow(described_class).to receive(:shakapacker_version).and_return("6.5.0")

expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(false)

allow(described_class).to receive(:shakapacker_version).and_return("6.4.7")
expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(false)

allow(described_class).to receive(:shakapacker_version).and_return("5.7.7")
expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(false)
end

it "returns true when version is equal to minimum_version" do
allow(described_class).to receive(:shakapacker_version).and_return("6.5.3")
expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(true)
end

it "returns true when version is greater than minimum_version" do
allow(described_class).to receive(:shakapacker_version).and_return("6.6.0")
expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(true)

allow(described_class).to receive(:shakapacker_version).and_return("6.5.4")
expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(true)

allow(described_class).to receive(:shakapacker_version).and_return("7.7.7")
expect(described_class.shackapacker_version_requirement_met?(:minimum_version)).to be(true)
end
end
end
end

0 comments on commit 33117d3

Please sign in to comment.