From a2a51913305ac59340928b0293faaa436678af50 Mon Sep 17 00:00:00 2001 From: Ronak Jangir Date: Sat, 22 Aug 2015 09:33:53 +0530 Subject: Removed Mocha from Action View --- .../test/template/form_options_helper_test.rb | 44 +++++++++++++++------- 1 file changed, 31 insertions(+), 13 deletions(-) (limited to 'actionview/test/template/form_options_helper_test.rb') diff --git a/actionview/test/template/form_options_helper_test.rb b/actionview/test/template/form_options_helper_test.rb index d7daba8bf3..6eb02bcc03 100644 --- a/actionview/test/template/form_options_helper_test.rb +++ b/actionview/test/template/form_options_helper_test.rb @@ -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 + + 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 - ActiveSupport::TimeZone.stubs(:all).returns(@fake_timezones) + 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 "