123456789_123456789_123456789_123456789_123456789_

Module: Rails::Generators::Testing::Behaviour

Relationships & Source Files
Namespace Children
Modules:
Extension / Inclusion / Inheritance Descendants
Included In:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Defined in: railties/lib/rails/generators/testing/behaviour.rb

Class Method Summary

Instance Method Summary

DSL Calls

included

[ GitHub ]


14
15
16
17
18
19
20
21
# File 'railties/lib/rails/generators/testing/behaviour.rb', line 14

included do
  class_attribute :destination_root, :current_path, :generator_class, :default_arguments

  # Generators frequently change the current path using FileUtils.cd.
  # So we need to store the path at file load and revert back to it after each test.
  self.current_path = File.expand_path(Dir.pwd)
  self.default_arguments = []
end

Instance Method Details

#create_generated_attribute(attribute_type, name = 'test', index = nil)

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

create_generated_attribute(:string, 'name')
[ GitHub ]

  
# File 'railties/lib/rails/generators/testing/behaviour.rb', line 79

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

#generator(args = self.default_arguments, options = {}, config = {})

Instantiate the generator.

[ GitHub ]

  
# File 'railties/lib/rails/generators/testing/behaviour.rb', line 71

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

#run_generator(args = self.default_arguments, config = {})

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", File.dirname(__FILE__))
  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.

[ GitHub ]

  
# File 'railties/lib/rails/generators/testing/behaviour.rb', line 63

def run_generator(args=self.default_arguments, config={})
  capture(:stdout) do
    args += ['--skip-bundle'] unless args.include? '--dev'
    self.generator_class.start(args, config.reverse_merge(destination_root: destination_root))
  end
end