dates_helper_test.rb
5.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
require File.dirname(__FILE__) + '/../test_helper'
class DatesHelperTest < Test::Unit::TestCase
  include DatesHelper
  should 'translate month names' do
    expects(:_).with('January').returns('Janeiro')
    assert_equal "Janeiro", month_name(1)
  end
  should 'display date with translation' do
    expects(:_).with('%{month} %{day}, %{year}').returns('%{day} de %{month} de %{year}')
    expects(:_).with('January').returns('Janeiro')
    assert_equal '11 de Janeiro de 2008', show_date(Date.new(2008, 1, 11))
  end
  should 'generate period with two dates' do
    date1 = mock
    expects(:show_date).with(date1).returns('XXX')
    date2 = mock
    expects(:show_date).with(date2).returns('YYY')
    expects(:_).with('from %s to %s').returns('from %s to %s')
    assert_equal 'from XXX to YYY', show_period(date1, date2)
  end
  should 'generate period with two equal dates' do
    date1 = mock
    expects(:show_date).with(date1).returns('XXX')
    assert_equal 'XXX', show_period(date1, date1)
  end
  should 'generate period with one date only' do
    date1 = mock
    expects(:show_date).with(date1).returns('XXX')
    assert_equal 'XXX', show_period(date1)
  end
  should 'show day of week' do
    expects(:_).with("Sunday").returns("Domingo")
    date = mock
    date.expects(:wday).returns(0)
    assert_equal "Domingo", show_day_of_week(date)
  end
  should 'show month' do
    expects(:_).with('January').returns('January')
    expects(:_).with('%{month} %{year}').returns('%{month} %{year}')
    assert_equal 'January 2008', show_month(2008, 1)
  end
  should 'fallback to current year/month in show_month' do
    Date.expects(:today).returns(Date.new(2008,11,1)).at_least_once
    expects(:_).with('November').returns('November').at_least_once
    expects(:_).with('%{month} %{year}').returns('%{month} %{year}').at_least_once
    assert_equal 'November 2008', show_month(nil, nil)
    assert_equal 'November 2008', show_month('', '')
  end
  should 'provide link to previous month' do
    expects(:link_to).with('← January 2008', { :year => 2008, :month => 1})
    link_to_previous_month('2008', '2')
  end
  should 'support last year in link to previous month' do
    expects(:link_to).with('← December 2007', { :year => 2007, :month => 12})
    link_to_previous_month('2008', '1')
  end
  should 'provide link to next month' do
    expects(:link_to).with('March 2008 →', { :year => 2008, :month => 3})
    link_to_next_month('2008', '2')
  end
  should 'support next year in link to next month' do
    expects(:link_to).with('January 2009 →', { :year => 2009, :month => 1})
    link_to_next_month('2008', '12')
  end
  should 'get current date when year and month are not informed for next month' do
    Date.expects(:today).returns(Date.new(2008,1,1))
    expects(:link_to).with('February 2008 →', { :year => 2008, :month => 2})
    link_to_next_month(nil, nil)
  end
  should 'get current date when year and month are not informed for previous month' do
    Date.expects(:today).returns(Date.new(2008,1,1))
    expects(:link_to).with('← December 2007', { :year => 2007, :month => 12})
    link_to_previous_month(nil, nil)
  end
  should 'provide an intertionalized date selector pass month names' do
    expects(:gettext).with('January').returns('January')
    expects(:gettext).with('February').returns('February')
    expects(:gettext).with('March').returns('March')
    expects(:gettext).with('April').returns('April')
    expects(:gettext).with('May').returns('May')
    expects(:gettext).with('June').returns('June')
    expects(:gettext).with('July').returns('July')
    expects(:gettext).with('August').returns('August')
    expects(:gettext).with('September').returns('September')
    expects(:gettext).with('October').returns('October')
    expects(:gettext).with('November').returns('November')
    expects(:gettext).with('December').returns('December')
    expects(:language).returns('en')
    expects(:date_select).with(:object, :method, { :include_blank => true, :order => [:month, :day, :year], :use_month_names => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']}).returns("KKKKKKKK")
    assert_equal 'KKKKKKKK', pick_date(:object, :method)
  end
  should 'order date in english like month day year' do
    expects(:language).returns("en")
    expects(:date_select).with(:object, :method, { :include_blank => true, :order => [:month, :day, :year], :use_month_names => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']}).returns("KKKKKKKK")
    assert_equal 'KKKKKKKK', pick_date(:object, :method)
  end
  should 'order date in other languages like day month year' do
    expects(:language).returns('pt_BR')
    expects(:date_select).with(:object, :method, { :include_blank => true, :order => [:day, :month, :year], :use_month_names => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']}).returns("KKKKKKKK")
    assert_equal 'KKKKKKKK', pick_date(:object, :method)
  end
  should 'format time' do
    assert_equal '22 November 2008, 15:34', show_time(Time.mktime(2008, 11, 22, 15, 34, 0, 0))
  end
  should 'translate time' do
    time = Time.parse('25 May 2009, 12:47')
    expects(:_).with('%{day} %{month} %{year}, %{hour}:%{minutes}').returns('translated time')
    stubs(:_).with('May').returns("Maio")
    assert_equal 'translated time', show_time(time)
  end
  should 'handle nil time' do
    assert_equal '', show_time(nil)
  end
end