mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #21279 from ronakjangir47/test_cleanup
Cleaned up generators tests using internal assertion helper
This commit is contained in:
commit
c83b117d4b
5 changed files with 30 additions and 45 deletions
|
@ -1,11 +1,13 @@
|
|||
require 'minitest/mock'
|
||||
|
||||
module ActiveSupport
|
||||
module Testing
|
||||
module MethodCallAssertions # :nodoc:
|
||||
private
|
||||
def assert_called(object, method_name, message = nil, times: 1)
|
||||
def assert_called(object, method_name, message = nil, times: 1, returns: nil)
|
||||
times_called = 0
|
||||
|
||||
object.stub(method_name, proc { times_called += 1 }) { yield }
|
||||
object.stub(method_name, proc { times_called += 1; returns }) { yield }
|
||||
|
||||
error = "Expected #{method_name} to be called #{times} times, " \
|
||||
"but was called #{times_called} times"
|
||||
|
|
|
@ -33,6 +33,12 @@ class MethodCallAssertionsTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_assert_called_returns
|
||||
assert_called(@object, :increment, returns: 10) do
|
||||
assert_equal 10, @object.increment
|
||||
end
|
||||
end
|
||||
|
||||
def test_assert_called_failure
|
||||
error = assert_raises(Minitest::Assertion) do
|
||||
assert_called(@object, :increment) do
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
require 'generators/generators_test_helper'
|
||||
require 'rails/generators/rails/app/app_generator'
|
||||
require 'env_helpers'
|
||||
require 'minitest/mock'
|
||||
|
||||
class ActionsTest < Rails::Generators::TestCase
|
||||
include GeneratorsTestHelper
|
||||
|
@ -12,13 +11,11 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
|
||||
def setup
|
||||
Rails.application = TestApp::Application
|
||||
@mock_generator = Minitest::Mock.new
|
||||
super
|
||||
end
|
||||
|
||||
def teardown
|
||||
Rails.application = TestApp::Application.instance
|
||||
@mock_generator.verify
|
||||
end
|
||||
|
||||
def test_invoke_other_generator_with_shortcut
|
||||
|
@ -150,16 +147,13 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
end
|
||||
|
||||
def test_git_with_symbol_should_run_command_using_git_scm
|
||||
@mock_generator.expect(:call, nil, ['git init'])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ['git init']) do
|
||||
action :git, :init
|
||||
end
|
||||
end
|
||||
|
||||
def test_git_with_hash_should_run_each_command_using_git_scm
|
||||
@mock_generator.expect(:call, nil, ["git rm README"])
|
||||
@mock_generator.expect(:call, nil, ["git add ."])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, [ ["git rm README"], ["git add ."] ]) do
|
||||
action :git, rm: 'README', add: '.'
|
||||
end
|
||||
end
|
||||
|
@ -185,15 +179,13 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
end
|
||||
|
||||
def test_generate_should_run_script_generate_with_argument_and_options
|
||||
@mock_generator.expect(:call, nil, ['bin/rails generate model MyModel', verbose: false])
|
||||
generator.stub(:run_ruby_script, @mock_generator) do
|
||||
assert_called_with(generator, :run_ruby_script, ['bin/rails generate model MyModel', verbose: false]) do
|
||||
action :generate, 'model', 'MyModel'
|
||||
end
|
||||
end
|
||||
|
||||
def test_rake_should_run_rake_command_with_default_env
|
||||
@mock_generator.expect(:call, nil, ["rake log:clear RAILS_ENV=development", verbose: false])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ["rake log:clear RAILS_ENV=development", verbose: false]) do
|
||||
with_rails_env nil do
|
||||
action :rake, 'log:clear'
|
||||
end
|
||||
|
@ -201,15 +193,13 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
end
|
||||
|
||||
def test_rake_with_env_option_should_run_rake_command_in_env
|
||||
@mock_generator.expect(:call, nil, ['rake log:clear RAILS_ENV=production', verbose: false])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ['rake log:clear RAILS_ENV=production', verbose: false]) do
|
||||
action :rake, 'log:clear', env: 'production'
|
||||
end
|
||||
end
|
||||
|
||||
def test_rake_with_rails_env_variable_should_run_rake_command_in_env
|
||||
@mock_generator.expect(:call, nil, ['rake log:clear RAILS_ENV=production', verbose: false])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ['rake log:clear RAILS_ENV=production', verbose: false]) do
|
||||
with_rails_env "production" do
|
||||
action :rake, 'log:clear'
|
||||
end
|
||||
|
@ -217,8 +207,7 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
end
|
||||
|
||||
def test_env_option_should_win_over_rails_env_variable_when_running_rake
|
||||
@mock_generator.expect(:call, nil, ['rake log:clear RAILS_ENV=production', verbose: false])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ['rake log:clear RAILS_ENV=production', verbose: false]) do
|
||||
with_rails_env "staging" do
|
||||
action :rake, 'log:clear', env: 'production'
|
||||
end
|
||||
|
@ -226,8 +215,7 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
end
|
||||
|
||||
def test_rake_with_sudo_option_should_run_rake_command_with_sudo
|
||||
@mock_generator.expect(:call, nil, ["sudo rake log:clear RAILS_ENV=development", verbose: false])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ["sudo rake log:clear RAILS_ENV=development", verbose: false]) do
|
||||
with_rails_env nil do
|
||||
action :rake, 'log:clear', sudo: true
|
||||
end
|
||||
|
@ -235,8 +223,7 @@ class ActionsTest < Rails::Generators::TestCase
|
|||
end
|
||||
|
||||
def test_capify_should_run_the_capify_command
|
||||
@mock_generator.expect(:call, nil, ['capify .', verbose: false])
|
||||
generator.stub(:run, @mock_generator) do
|
||||
assert_called_with(generator, :run, ['capify .', verbose: false]) do
|
||||
action :capify!
|
||||
end
|
||||
end
|
||||
|
@ -274,8 +261,7 @@ F
|
|||
|
||||
def test_readme
|
||||
run_generator
|
||||
2.times { @mock_generator.expect(:call, destination_root,[]) }
|
||||
Rails::Generators::AppGenerator.stub(:source_root, @mock_generator) do
|
||||
assert_called(Rails::Generators::AppGenerator, :source_root, times: 2, returns: destination_root) do
|
||||
assert_match "application up and running", action(:readme, "README.md")
|
||||
end
|
||||
end
|
||||
|
@ -283,8 +269,7 @@ F
|
|||
def test_readme_with_quiet
|
||||
generator(default_arguments, quiet: true)
|
||||
run_generator
|
||||
2.times { @mock_generator.expect(:call, destination_root,[]) }
|
||||
Rails::Generators::AppGenerator.stub(:source_root, @mock_generator) do
|
||||
assert_called(Rails::Generators::AppGenerator, :source_root, times: 2, returns: destination_root) do
|
||||
assert_no_match "application up and running", action(:readme, "README.md")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
require 'abstract_unit'
|
||||
require 'active_support/core_ext/module/remove_method'
|
||||
require 'active_support/testing/stream'
|
||||
require 'active_support/testing/method_call_assertions'
|
||||
require 'rails/generators'
|
||||
require 'rails/generators/test_case'
|
||||
|
||||
|
@ -25,6 +26,7 @@ require 'action_view'
|
|||
|
||||
module GeneratorsTestHelper
|
||||
include ActiveSupport::Testing::Stream
|
||||
include ActiveSupport::Testing::MethodCallAssertions
|
||||
|
||||
def self.included(base)
|
||||
base.class_eval do
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
require 'generators/generators_test_helper'
|
||||
require 'rails/generators/rails/model/model_generator'
|
||||
require 'rails/generators/test_unit/model/model_generator'
|
||||
require 'minitest/mock'
|
||||
|
||||
class GeneratorsTest < Rails::Generators::TestCase
|
||||
include GeneratorsTestHelper
|
||||
|
@ -9,18 +8,15 @@ class GeneratorsTest < Rails::Generators::TestCase
|
|||
def setup
|
||||
@path = File.expand_path("lib", Rails.root)
|
||||
$LOAD_PATH.unshift(@path)
|
||||
@mock_generator = MiniTest::Mock.new
|
||||
end
|
||||
|
||||
def teardown
|
||||
$LOAD_PATH.delete(@path)
|
||||
@mock_generator.verify
|
||||
end
|
||||
|
||||
def test_simple_invoke
|
||||
assert File.exist?(File.join(@path, 'generators', 'model_generator.rb'))
|
||||
@mock_generator.expect(:call, nil, [["Account"],{}])
|
||||
TestUnit::Generators::ModelGenerator.stub(:start, @mock_generator) do
|
||||
assert_called_with(TestUnit::Generators::ModelGenerator, :start, [["Account"], {}]) do
|
||||
Rails::Generators.invoke("test_unit:model", ["Account"])
|
||||
end
|
||||
end
|
||||
|
@ -51,23 +47,20 @@ class GeneratorsTest < Rails::Generators::TestCase
|
|||
|
||||
def test_should_give_higher_preference_to_rails_generators
|
||||
assert File.exist?(File.join(@path, 'generators', 'model_generator.rb'))
|
||||
@mock_generator.expect(:call, nil, [["Account"],{}])
|
||||
Rails::Generators::ModelGenerator.stub(:start, @mock_generator) do
|
||||
assert_called_with(Rails::Generators::ModelGenerator, :start, [["Account"], {}]) do
|
||||
warnings = capture(:stderr){ Rails::Generators.invoke :model, ["Account"] }
|
||||
assert warnings.empty?
|
||||
end
|
||||
end
|
||||
|
||||
def test_invoke_with_default_values
|
||||
@mock_generator.expect(:call, nil, [["Account"],{}])
|
||||
Rails::Generators::ModelGenerator.stub(:start, @mock_generator) do
|
||||
assert_called_with(Rails::Generators::ModelGenerator, :start, [["Account"], {}]) do
|
||||
Rails::Generators.invoke :model, ["Account"]
|
||||
end
|
||||
end
|
||||
|
||||
def test_invoke_with_config_values
|
||||
@mock_generator.expect(:call, nil, [["Account"],{behavior: :skip}])
|
||||
Rails::Generators::ModelGenerator.stub(:start, @mock_generator) do
|
||||
assert_called_with(Rails::Generators::ModelGenerator, :start, [["Account"], behavior: :skip]) do
|
||||
Rails::Generators.invoke :model, ["Account"], behavior: :skip
|
||||
end
|
||||
end
|
||||
|
@ -115,8 +108,7 @@ class GeneratorsTest < Rails::Generators::TestCase
|
|||
def test_invoke_with_nested_namespaces
|
||||
model_generator = Minitest::Mock.new
|
||||
model_generator.expect(:start, nil, [["Account"], {}])
|
||||
@mock_generator.expect(:call, model_generator, ['namespace', 'my:awesome'])
|
||||
Rails::Generators.stub(:find_by_namespace, @mock_generator) do
|
||||
assert_called_with(Rails::Generators, :find_by_namespace, ['namespace', 'my:awesome'], returns: model_generator) do
|
||||
Rails::Generators.invoke 'my:awesome:namespace', ["Account"]
|
||||
end
|
||||
model_generator.verify
|
||||
|
@ -185,8 +177,7 @@ class GeneratorsTest < Rails::Generators::TestCase
|
|||
|
||||
def test_fallbacks_for_generators_on_invoke
|
||||
Rails::Generators.fallbacks[:shoulda] = :test_unit
|
||||
@mock_generator.expect(:call, nil, [["Account"],{}])
|
||||
TestUnit::Generators::ModelGenerator.stub(:start, @mock_generator) do
|
||||
assert_called_with(TestUnit::Generators::ModelGenerator, :start, [["Account"], {}]) do
|
||||
Rails::Generators.invoke "shoulda:model", ["Account"]
|
||||
end
|
||||
ensure
|
||||
|
@ -196,8 +187,7 @@ class GeneratorsTest < Rails::Generators::TestCase
|
|||
def test_nested_fallbacks_for_generators
|
||||
Rails::Generators.fallbacks[:shoulda] = :test_unit
|
||||
Rails::Generators.fallbacks[:super_shoulda] = :shoulda
|
||||
@mock_generator.expect(:call, nil, [["Account"],{}])
|
||||
TestUnit::Generators::ModelGenerator.stub(:start, @mock_generator) do
|
||||
assert_called_with(TestUnit::Generators::ModelGenerator, :start, [["Account"], {}]) do
|
||||
Rails::Generators.invoke "super_shoulda:model", ["Account"]
|
||||
end
|
||||
ensure
|
||||
|
|
Loading…
Reference in a new issue