Skip to content

Commit

Permalink
get rails version from env var; only run specs once
Browse files Browse the repository at this point in the history
Co-authored-by: Perry Hertler <[email protected]>
  • Loading branch information
schoblaska and perryqh committed Nov 22, 2023
1 parent 9b7b114 commit 545fe59
Showing 1 changed file with 44 additions and 54 deletions.
98 changes: 44 additions & 54 deletions spec/packs-rails_spec.rb
Original file line number Diff line number Diff line change
@@ -1,79 +1,69 @@
require "pathname"

rails_dir = require_test_rails_application(ENV.fetch("RAILS_VERSION", "7.0"))

RSpec.describe Packs::Rails do
shared_examples_for "uh.." do
it "autoloads classes in autoload paths" do
expect(defined?(Shirts::ShortSleeve)).to eq("constant")
it "autoloads classes in autoload paths" do
expect(defined?(Shirts::ShortSleeve)).to eq("constant")
end

it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "shirts", path))
end
end

it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "shirts", path))
end
it "does not add gem paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to_not include(rails_dir.join('components', "jackets", path))
end
end

it "creates engines namespace for engine packs" do
expect(defined?(Shoes::Engine)).to eq("constant")
end

context 'nested packs' do
it "autoloads classes in autoload paths" do
expect(defined?(Shorts::Linen)).to eq("constant")
end

it "does not add gem paths to the application" do
it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to_not include(rails_dir.join('components', "jackets", path))
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "pants", "shorts", path))
end
end

it "creates engines namespace for engine packs" do
expect(defined?(Shoes::Engine)).to eq("constant")
expect(defined?(Shorts::Engine)).to eq("constant")
end
end

context 'nested packs' do
it "autoloads classes in autoload paths" do
expect(defined?(Shorts::Linen)).to eq("constant")
end

it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "pants", "shorts", path))
end
end

it "creates engines namespace for engine packs" do
expect(defined?(Shorts::Engine)).to eq("constant")
end
context 'custom engine name' do
it "autoloads classes in autoload paths" do
expect(defined?(Pants::Jeans::Bootcut)).to eq("constant")
end

context 'custom engine name' do
it "autoloads classes in autoload paths" do
expect(defined?(Pants::Jeans::Bootcut)).to eq("constant")
end

it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "pants", "jeans", path))
end
end

it "creates engines namespace for engine packs" do
expect(defined?(Pants::Jeans::Engine)).to eq("constant")
it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "pants", "jeans", path))
end
end

context 'alternate roots' do
it "autoloads classes in autoload paths" do
expect(defined?(Belts::Brown)).to eq("constant")
end

it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('utilities', "belts", path))
end
end
it "creates engines namespace for engine packs" do
expect(defined?(Pants::Jeans::Engine)).to eq("constant")
end
end

context "rails 6.1" do
let!(:rails_dir) { require_test_rails_application("6.1") }
it_behaves_like "uh.."
end
context 'alternate roots' do
it "autoloads classes in autoload paths" do
expect(defined?(Belts::Brown)).to eq("constant")
end

context "rails 7.0" do
let!(:rails_dir) { require_test_rails_application("7.0") }
it_behaves_like "uh.."
it "adds pack paths to the application" do
Packs::Rails.config.paths.each do |path|
expect(Rails.application.paths[path].paths).to include(rails_dir.join('utilities', "belts", path))
end
end
end
end

0 comments on commit 545fe59

Please sign in to comment.