1
0
Fork 0
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:
Kasper Timm Hansen 2015-11-22 14:19:33 +01:00
commit 58910dc7b1
5 changed files with 135 additions and 81 deletions

View file

@ -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

View file

@ -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

View file

@ -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" +

View file

@ -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

View file

@ -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"
}