From 49cb4f17b0742fb92d6c15b936ac87172f08f28c Mon Sep 17 00:00:00 2001 From: Michel Ocon Date: Sun, 10 Feb 2019 12:53:07 -0600 Subject: [PATCH] Fix fixtures path for model generator when using namespaced models --- lib/generators/rspec/model/model_generator.rb | 2 +- .../rspec/model/model_generator_spec.rb | 23 +++---------------- spec/support/generators.rb | 18 +++++++++++++++ 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/generators/rspec/model/model_generator.rb b/lib/generators/rspec/model/model_generator.rb index 6c7db59bd4..789fcda83c 100644 --- a/lib/generators/rspec/model/model_generator.rb +++ b/lib/generators/rspec/model/model_generator.rb @@ -23,7 +23,7 @@ def create_model_spec def create_fixture_file return unless missing_fixture_replacement? - template 'fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml") + template 'fixtures.yml', File.join('spec/fixtures', class_path, "#{(pluralize_table_names? ? plural_file_name : file_name)}.yml") end private diff --git a/spec/generators/rspec/model/model_generator_spec.rb b/spec/generators/rspec/model/model_generator_spec.rb index dee5c99e2f..aabf05b83e 100644 --- a/spec/generators/rspec/model/model_generator_spec.rb +++ b/spec/generators/rspec/model/model_generator_spec.rb @@ -12,27 +12,10 @@ gen.invoke_all end - describe 'the generated files' do - describe 'with fixtures' do - before do - run_generator %w(posts --fixture) - end - - describe 'the spec' do - subject { file('spec/models/posts_spec.rb') } - - it { is_expected.to exist } - it { is_expected.to contain(/require 'rails_helper'/) } - it { is_expected.to contain(/^RSpec.describe Posts, #{type_metatag(:model)}/) } - end - - describe 'the fixtures' do - subject { file('spec/fixtures/posts.yml') } - - it { is_expected.to contain(Regexp.new('# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html')) } - end - end + it_behaves_like 'a model generator with fixtures', 'admin/posts', 'Admin::Posts' + it_behaves_like 'a model generator with fixtures', 'posts', 'Posts' + describe 'the generated files' do describe 'without fixtures' do before do run_generator %w(posts) diff --git a/spec/support/generators.rb b/spec/support/generators.rb index d380353b1b..9f38e14132 100644 --- a/spec/support/generators.rb +++ b/spec/support/generators.rb @@ -19,6 +19,24 @@ def self.included(klass) klass.extend(Macros) end + shared_examples_for 'a model generator with fixtures' do |name, class_name| + before { run_generator [name, '--fixture'] } + + describe 'the spec' do + subject { file("spec/models/#{name}_spec.rb") } + + it { is_expected.to exist } + it { is_expected.to contain(/require 'rails_helper'/) } + it { is_expected.to contain(/^RSpec.describe #{class_name}, #{type_metatag(:model)}/) } + end + + describe 'the fixtures' do + subject { file("spec/fixtures/#{name}.yml") } + + it { is_expected.to contain(Regexp.new('# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html')) } + end + end + shared_examples_for "a request spec generator" do describe 'generated with flag `--no-request-specs`' do before do