From 545fe59efe6844c6718f0328c9b30c5e8634c2b3 Mon Sep 17 00:00:00 2001 From: Joey Schoblaska Date: Tue, 21 Nov 2023 16:07:42 -0600 Subject: [PATCH] get rails version from env var; only run specs once Co-authored-by: Perry Hertler --- spec/packs-rails_spec.rb | 98 ++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 54 deletions(-) diff --git a/spec/packs-rails_spec.rb b/spec/packs-rails_spec.rb index d8b8d98..6f5bfaf 100644 --- a/spec/packs-rails_spec.rb +++ b/spec/packs-rails_spec.rb @@ -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