class Concern::RspecGenerator

Public Instance Methods

copy_shared_spec() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 24
def copy_shared_spec
  copy_file("include_module_example.rb", "spec/support/include_module_example.rb") if invoke?
end
generate_spec() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 18
def generate_spec
  return unless options[:controller] || options[:model]

  template("base_#{_type}_spec.erb", spec_filepath) if invoke? && !File.exists?(spec_filepath)
end
include_spec() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 28
def include_spec
  # [xxx] - destroy の時に不要なコードが挿入されてしまう
  inject_into_file spec_filepath, content, after: /^RSpec.describe (.+) do\n/
end

Private Instance Methods

_type() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 38
def _type
  (!!options[:controller]) ? :controller : :model
end
content() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 55
    def content
      <<-'CODE'
  describe "Included module" do
    subject { [class_name] }

    include_examples "included modules"
  end
      CODE
        .gsub(/class_name/, class_name)
    end
invoke?() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 34
def invoke?
  self.behavior == :invoke
end
spec_filepath() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 46
def spec_filepath
  {
    controller: "_controller_spec.rb",
    model: "_spec.rb",
  }.map do |type, postfix|
    File.join(*%W[spec #{type}s #{options[type]}#{postfix}]) if !!options&.[](type)
  end.compact.pop
end
target_name() click to toggle source
# File lib/generators/concern/rspec/rspec_generator.rb, line 42
def target_name
  options[_type].classify
end