mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #21615 from ronakjangir47/actionViewpart2
Removed Mocha from Action View
This commit is contained in:
commit
58910dc7b1
5 changed files with 135 additions and 81 deletions
|
@ -280,7 +280,6 @@ def jruby_skip(message = '')
|
|||
skip message if defined?(JRUBY_VERSION)
|
||||
end
|
||||
|
||||
require 'mocha/setup' # FIXME: stop using mocha
|
||||
class ActiveSupport::TestCase
|
||||
include ActiveSupport::Testing::MethodCallAssertions
|
||||
end
|
||||
|
|
|
@ -46,8 +46,9 @@ class DateHelperDistanceOfTimeInWordsI18nTests < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
def test_time_ago_in_words_passes_locale
|
||||
I18n.expects(:t).with(:less_than_x_minutes, :scope => :'datetime.distance_in_words', :count => 1, :locale => 'ru')
|
||||
time_ago_in_words(15.seconds.ago, :locale => 'ru')
|
||||
assert_called_with(I18n, :t, [:less_than_x_minutes, :scope => :'datetime.distance_in_words', :count => 1, :locale => 'ru']) do
|
||||
time_ago_in_words(15.seconds.ago, :locale => 'ru')
|
||||
end
|
||||
end
|
||||
|
||||
def test_distance_of_time_pluralizations
|
||||
|
@ -80,8 +81,9 @@ class DateHelperDistanceOfTimeInWordsI18nTests < ActiveSupport::TestCase
|
|||
options = { locale: 'en', scope: :'datetime.distance_in_words' }.merge!(expected_options)
|
||||
options[:count] = count if count
|
||||
|
||||
I18n.expects(:t).with(key, options)
|
||||
distance_of_time_in_words(@from, to, passed_options.merge(locale: 'en'))
|
||||
assert_called_with(I18n, :t, [key, options]) do
|
||||
distance_of_time_in_words(@from, to, passed_options.merge(locale: 'en'))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -89,60 +91,74 @@ class DateHelperSelectTagsI18nTests < ActiveSupport::TestCase
|
|||
include ActionView::Helpers::DateHelper
|
||||
attr_reader :request
|
||||
|
||||
def setup
|
||||
@prompt_defaults = {:year => 'Year', :month => 'Month', :day => 'Day', :hour => 'Hour', :minute => 'Minute', :second => 'Seconds'}
|
||||
|
||||
I18n.stubs(:translate).with(:'date.month_names', :locale => 'en').returns Date::MONTHNAMES
|
||||
end
|
||||
|
||||
# select_month
|
||||
|
||||
def test_select_month_given_use_month_names_option_does_not_translate_monthnames
|
||||
I18n.expects(:translate).never
|
||||
select_month(8, :locale => 'en', :use_month_names => Date::MONTHNAMES)
|
||||
assert_not_called(I18n, :translate) do
|
||||
select_month(8, :locale => 'en', :use_month_names => Date::MONTHNAMES)
|
||||
end
|
||||
end
|
||||
|
||||
def test_select_month_translates_monthnames
|
||||
I18n.expects(:translate).with(:'date.month_names', :locale => 'en').returns Date::MONTHNAMES
|
||||
select_month(8, :locale => 'en')
|
||||
assert_called_with(I18n, :translate, [:'date.month_names', :locale => 'en'], returns: Date::MONTHNAMES) do
|
||||
select_month(8, :locale => 'en')
|
||||
end
|
||||
end
|
||||
|
||||
def test_select_month_given_use_short_month_option_translates_abbr_monthnames
|
||||
I18n.expects(:translate).with(:'date.abbr_month_names', :locale => 'en').returns Date::ABBR_MONTHNAMES
|
||||
select_month(8, :locale => 'en', :use_short_month => true)
|
||||
assert_called_with(I18n, :translate, [:'date.abbr_month_names', :locale => 'en'], returns: Date::ABBR_MONTHNAMES) do
|
||||
select_month(8, :locale => 'en', :use_short_month => true)
|
||||
end
|
||||
end
|
||||
|
||||
def test_date_or_time_select_translates_prompts
|
||||
@prompt_defaults.each do |key, prompt|
|
||||
I18n.expects(:translate).with(('datetime.prompts.' + key.to_s).to_sym, :locale => 'en').returns prompt
|
||||
prompt_defaults = {:year => 'Year', :month => 'Month', :day => 'Day', :hour => 'Hour', :minute => 'Minute', :second => 'Seconds'}
|
||||
defaults = {[:'date.order', :locale => 'en', :default => []] => %w(year month day)}
|
||||
|
||||
prompt_defaults.each do |key, prompt|
|
||||
defaults[[('datetime.prompts.' + key.to_s).to_sym, :locale => 'en']] = prompt
|
||||
end
|
||||
|
||||
I18n.expects(:translate).with(:'date.order', :locale => 'en', :default => []).returns %w(year month day)
|
||||
datetime_select('post', 'updated_at', :locale => 'en', :include_seconds => true, :prompt => true)
|
||||
prompts_check = -> (prompt, x) do
|
||||
@prompt_called ||= 0
|
||||
|
||||
return_value = defaults[[prompt, x]]
|
||||
@prompt_called += 1 if return_value.present?
|
||||
|
||||
return_value
|
||||
end
|
||||
|
||||
I18n.stub(:translate, prompts_check) do
|
||||
datetime_select('post', 'updated_at', :locale => 'en', :include_seconds => true, :prompt => true, :use_month_names => Date::MONTHNAMES)
|
||||
end
|
||||
assert_equal defaults.count, @prompt_called
|
||||
end
|
||||
|
||||
# date_or_time_select
|
||||
|
||||
def test_date_or_time_select_given_an_order_options_does_not_translate_order
|
||||
I18n.expects(:translate).never
|
||||
datetime_select('post', 'updated_at', :order => [:year, :month, :day], :locale => 'en')
|
||||
assert_not_called(I18n, :translate) do
|
||||
datetime_select('post', 'updated_at', :order => [:year, :month, :day], :locale => 'en', :use_month_names => Date::MONTHNAMES)
|
||||
end
|
||||
end
|
||||
|
||||
def test_date_or_time_select_given_no_order_options_translates_order
|
||||
I18n.expects(:translate).with(:'date.order', :locale => 'en', :default => []).returns %w(year month day)
|
||||
datetime_select('post', 'updated_at', :locale => 'en')
|
||||
end
|
||||
|
||||
def test_date_or_time_select_given_invalid_order
|
||||
I18n.expects(:translate).with(:'date.order', :locale => 'en', :default => []).returns %w(invalid month day)
|
||||
|
||||
assert_raise StandardError do
|
||||
assert_called_with(I18n, :translate, [ [:'date.order', :locale => 'en', :default => []], [:"date.month_names", {:locale=>"en"}] ], returns: %w(year month day)) do
|
||||
datetime_select('post', 'updated_at', :locale => 'en')
|
||||
end
|
||||
end
|
||||
|
||||
def test_date_or_time_select_given_invalid_order
|
||||
assert_called_with(I18n, :translate, [:'date.order', :locale => 'en', :default => []], returns: %w(invalid month day)) do
|
||||
assert_raise StandardError do
|
||||
datetime_select('post', 'updated_at', :locale => 'en')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_date_or_time_select_given_symbol_keys
|
||||
I18n.expects(:translate).with(:'date.order', :locale => 'en', :default => []).returns [:year, :month, :day]
|
||||
datetime_select('post', 'updated_at', :locale => 'en')
|
||||
assert_called_with(I18n, :translate, [ [:'date.order', :locale => 'en', :default => []], [:"date.month_names", {:locale=>"en"}] ], returns: [:year, :month, :day]) do
|
||||
datetime_select('post', 'updated_at', :locale => 'en')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,13 +17,36 @@ class FormOptionsHelperTest < ActionView::TestCase
|
|||
Album = Struct.new('Album', :id, :title, :genre)
|
||||
end
|
||||
|
||||
def setup
|
||||
@fake_timezones = %w(A B C D E).map do |id|
|
||||
tz = stub(:name => id, :to_s => id)
|
||||
ActiveSupport::TimeZone.stubs(:[]).with(id).returns(tz)
|
||||
tz
|
||||
module FakeZones
|
||||
FakeZone = Struct.new(:name) do
|
||||
def to_s; name; end
|
||||
end
|
||||
ActiveSupport::TimeZone.stubs(:all).returns(@fake_timezones)
|
||||
|
||||
ZONES_BY_ID = %w(A B C D E).map { |id| [ id, FakeZone.new(id) ] }.to_h
|
||||
|
||||
module ClassMethods
|
||||
def [](id); use_fake_zones ? ZONES_BY_ID[id] : super(id); end
|
||||
def all; use_fake_zones ? ZONES_BY_ID.values : super; end
|
||||
def dummy; :test; end
|
||||
end
|
||||
|
||||
def self.prepended(base)
|
||||
class << base
|
||||
mattr_accessor(:use_fake_zones) { false }
|
||||
prepend ClassMethods
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ActiveSupport::TimeZone.prepend FakeZones
|
||||
|
||||
setup do
|
||||
@fake_timezones = FakeZones::ZONES_BY_ID.values
|
||||
ActiveSupport::TimeZone.use_fake_zones = true
|
||||
end
|
||||
|
||||
teardown do
|
||||
ActiveSupport::TimeZone.use_fake_zones = false
|
||||
end
|
||||
|
||||
def test_collection_options
|
||||
|
@ -1164,7 +1187,7 @@ class FormOptionsHelperTest < ActionView::TestCase
|
|||
@firm = Firm.new("D")
|
||||
|
||||
@fake_timezones.each_with_index do |tz, i|
|
||||
tz.stubs(:=~).returns(i.zero? || i == 3)
|
||||
def tz.=~(re); %(A D).include?(name) end
|
||||
end
|
||||
|
||||
html = time_zone_select("firm", "time_zone", /A|D/)
|
||||
|
@ -1182,12 +1205,7 @@ class FormOptionsHelperTest < ActionView::TestCase
|
|||
def test_time_zone_select_with_priority_zones_as_regexp_using_grep_finds_no_zones
|
||||
@firm = Firm.new("D")
|
||||
|
||||
priority_zones = /A|D/
|
||||
@fake_timezones.each do |tz|
|
||||
priority_zones.stubs(:===).with(tz).raises(Exception)
|
||||
end
|
||||
|
||||
html = time_zone_select("firm", "time_zone", priority_zones)
|
||||
html = time_zone_select("firm", "time_zone", /A|D/)
|
||||
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
||||
"<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
|
||||
"<option value=\"A\">A</option>\n" +
|
||||
|
|
|
@ -12,13 +12,18 @@ class AVLogSubscriberTest < ActiveSupport::TestCase
|
|||
lookup_context = ActionView::LookupContext.new(view_paths, {}, ["test"])
|
||||
renderer = ActionView::Renderer.new(lookup_context)
|
||||
@view = ActionView::Base.new(renderer, {})
|
||||
Rails.stubs(:root).returns(File.expand_path(FIXTURE_LOAD_PATH))
|
||||
ActionView::LogSubscriber.attach_to :action_view
|
||||
unless Rails.respond_to?(:root)
|
||||
@defined_root = true
|
||||
def Rails.root; :defined_root; end # Minitest `stub` expects the method to be defined.
|
||||
end
|
||||
end
|
||||
|
||||
def teardown
|
||||
super
|
||||
ActiveSupport::LogSubscriber.log_subscribers.clear
|
||||
# We need to undef `root`, RenderTestCases don't want this to be defined
|
||||
Rails.instance_eval { undef :root } if @defined_root
|
||||
end
|
||||
|
||||
def set_logger(logger)
|
||||
|
@ -26,66 +31,82 @@ class AVLogSubscriberTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
def test_render_file_template
|
||||
@view.render(:file => "test/hello_world")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render(:file => "test/hello_world")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered test\/hello_world\.erb/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered test\/hello_world\.erb/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_text_template
|
||||
@view.render(:text => "TEXT")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render(:text => "TEXT")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered text template/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered text template/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_inline_template
|
||||
@view.render(:inline => "<%= 'TEXT' %>")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render(:inline => "<%= 'TEXT' %>")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered inline template/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered inline template/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_partial_template
|
||||
@view.render(:partial => "test/customer")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render(:partial => "test/customer")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered test\/_customer.erb/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered test\/_customer.erb/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_partial_with_implicit_path
|
||||
@view.render(Customer.new("david"), :greeting => "hi")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render(Customer.new("david"), :greeting => "hi")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered customers\/_customer\.html\.erb/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered customers\/_customer\.html\.erb/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_collection_template
|
||||
@view.render(:partial => "test/customer", :collection => [ Customer.new("david"), Customer.new("mary") ])
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render(:partial => "test/customer", :collection => [ Customer.new("david"), Customer.new("mary") ])
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered test\/_customer.erb/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered test\/_customer.erb/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_collection_with_implicit_path
|
||||
@view.render([ Customer.new("david"), Customer.new("mary") ], :greeting => "hi")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render([ Customer.new("david"), Customer.new("mary") ], :greeting => "hi")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered customers\/_customer\.html\.erb/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered customers\/_customer\.html\.erb/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_collection_template_without_path
|
||||
@view.render([ GoodCustomer.new("david"), Customer.new("mary") ], :greeting => "hi")
|
||||
wait
|
||||
Rails.stub(:root, File.expand_path(FIXTURE_LOAD_PATH)) do
|
||||
@view.render([ GoodCustomer.new("david"), Customer.new("mary") ], :greeting => "hi")
|
||||
wait
|
||||
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered collection/, @logger.logged(:info).last)
|
||||
assert_equal 1, @logger.logged(:info).size
|
||||
assert_match(/Rendered collection/, @logger.logged(:info).last)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -41,12 +41,12 @@ class PeopleHelperTest < ActionView::TestCase
|
|||
extend ActiveModel::Naming
|
||||
def to_model; self; end
|
||||
def persisted?; true; end
|
||||
def self.name; 'Mocha::Mock'; end
|
||||
def self.name; 'Minitest::Mock'; end
|
||||
}.new "David"
|
||||
|
||||
the_model = nil
|
||||
extend Module.new {
|
||||
define_method(:mocha_mock_path) { |model, *args|
|
||||
define_method(:minitest_mock_path) { |model, *args|
|
||||
the_model = model
|
||||
"/people/1"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue