Namespace

Module

Methods

Instance Public methods

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')
📝 Source code
# File railties/lib/rails/generators/testing/behaviour.rb, line 86
        def create_generated_attribute(attribute_type, name = "test", index = nil)
          Rails::Generators::GeneratedAttribute.parse([name, attribute_type, index].compact.join(":"))
        end
🔎 See on GitHub

generator(args = default_arguments, options = {}, config = {})

Instantiate the generator.

📝 Source code
# File railties/lib/rails/generators/testing/behaviour.rb, line 78
        def generator(args = default_arguments, options = {}, config = {})
          @generator ||= generator_class.new(args, options, config.reverse_merge(destination_root: destination_root))
        end
🔎 See on GitHub

run_generator(args = 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", __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.

📝 Source code
# File railties/lib/rails/generators/testing/behaviour.rb, line 67
        def run_generator(args = default_arguments, config = {})
          capture(:stdout) do
            args += ["--skip-bundle"] unless args.include? "--dev"
            args |= ["--skip-bootsnap"] unless args.include? "--no-skip-bootsnap"
            args |= ["--skip-webpack-install"] unless args.include? "--no-skip-webpack-install"

            generator_class.start(args, config.reverse_merge(destination_root: destination_root))
          end
        end
🔎 See on GitHub

Instance Private methods

prepare_destination()

Clears all files and directories in destination.

📝 Source code
# File railties/lib/rails/generators/testing/behaviour.rb, line 100
          def prepare_destination # :doc:
            rm_rf(destination_root)
            mkdir_p(destination_root)
          end
🔎 See on GitHub