Module: Rails::Generators::Testing::Behavior

Extended by:
ActiveSupport::Concern
Includes:
ActiveSupport::Testing::Stream
Included in:
Rails::Generators::TestCase
Defined in:
lib/rails/generators/testing/behavior.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#create_generated_attribute(attribute_type, name = "test", index = nil) ⇒ Object

Create a Rails::Generators::GeneratedAttribute by supplying the attribute type and, optionally, the attribute name:

create_generated_attribute(:string, "name")


89
90
91
# File 'lib/rails/generators/testing/behavior.rb', line 89

def create_generated_attribute(attribute_type, name = "test", index = nil)
  Rails::Generators::GeneratedAttribute.parse([name, attribute_type, index].compact.join(":"))
end

#generator(args = default_arguments, options = {}, config = {}) ⇒ Object

Instantiate the generator.



81
82
83
# File 'lib/rails/generators/testing/behavior.rb', line 81

def generator(args = default_arguments, options = {}, config = {})
  @generator ||= generator_class.new(args, options, config.reverse_merge(destination_root: destination_root))
end

#run_generator(args = default_arguments, config = {}) ⇒ Object

Runs the generator configured for this class. The first argument is an array like command line arguments:

class AppGeneratorTest < Rails::Generators::TestCase
  tests AppGenerator
  destination File.expand_path("../tmp", __dir__)
  setup :prepare_destination

  test "database.yml is not created when skipping Active Record" do
    run_generator %w(myapp --skip-active-record)
    assert_no_file "config/database.yml"
  end
end

You can provide a configuration hash as second argument. This method returns the output printed by the generator.



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rails/generators/testing/behavior.rb', line 67

def run_generator(args = default_arguments, config = {})
  args += ["--skip-bundle"] unless args.include?("--no-skip-bundle") || args.include?("--dev")
  args += ["--skip-bootsnap"] unless args.include?("--no-skip-bootsnap") || args.include?("--skip-bootsnap")

  if ENV["RAILS_LOG_TO_STDOUT"] == "true"
    generator_class.start(args, config.reverse_merge(destination_root: destination_root))
  else
    capture(:stdout) do
      generator_class.start(args, config.reverse_merge(destination_root: destination_root))
    end
  end
end