dates_helper_test.rb
5.04 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
145
146
147
148
149
150
151
152
153
154
require_relative "../test_helper"
class DatesHelperTest < ActiveSupport::TestCase
  include DatesHelper
  should 'translate month names' do
    assert_equal "January", month_name(1)
  end
  should 'translate abbreviated month names' do
    assert_equal "Sep", month_name(9, true)
  end
  should 'display date with translation' do
    expects(:month_name).with(1).returns('Janeiro')
    expects(:_).with('%{month_name} %{day}, %{year}').returns('%{day} de %{month_name} de %{year}')
    assert_equal '11 de Janeiro de 2008', show_date(Date.new(2008, 1, 11))
  end
  should 'generate period with two dates' do
    date1 = mock
    date1.stubs(:year).returns('A')
    expects(:show_time).with(date1, anything).returns('XXX')
    date2 = mock
    date2.stubs(:year).returns('B')
    expects(:show_time).with(date2, anything).returns('YYY')
    expects(:_).with('from %{date1} to %{date2}').returns('from %{date1} to %{date2}')
    assert_equal 'from XXX to YYY', show_period(date1, date2)
  end
  should 'generate period with in two diferent years' do
    date1 = DateTime.new(1920, 1, 2)
    date2 = DateTime.new(1992, 4, 6)
    assert_equal 'from January 2, 1920 0:00 to April 6, 1992 0:00', show_period(date1, date2)
  end
  should 'generate period with in two diferent months of the same year' do
    date1 = DateTime.new(2013, 2, 1)
    date2 = DateTime.new(2013, 3, 1)
    assert_equal 'from February 1 to March 1, 2013', show_period(date1, date2)
  end
  should 'generate period with in two days of the same month' do
    date1 = Date.new(2013, 3, 27)
    date2 = Date.new(2013, 3, 28)
    assert_equal 'from March 27 to 28, 2013', show_period(date1, date2)
  end
  should 'generate period with two equal dates' do
    date1 = mock
    expects(:show_time).with(date1, anything).returns('XXX')
    assert_equal 'XXX', show_period(date1, date1)
  end
  should 'generate period with one date only' do
    date1 = mock
    expects(:show_time).with(date1, anything).returns('XXX')
    assert_equal 'XXX', show_period(date1)
  end
  should 'not crash with events that have start_date and end_date' do
    assert_nothing_raised do
      Noosfero.locales.keys.each do |key|
        Noosfero.with_locale(key) do
          show_period(Date.today, Date.tomorrow)
        end
      end
    end
    FastGettext.default_text_domain = 'noosferotest'
  end
  should 'show day of week' do
    assert_equal "Thursday", show_day_of_week(Date.new(2014,10,23))
  end
  should 'show abbreviated day of week' do
    date = Date.new(2009, 10, 25)
    assert_equal "Sun", show_day_of_week(date, true)
  end
  should 'show month' do
    assert_equal 'January 2008', show_month(2008, 1)
  end
  should 'fallback to current year/month in show_month' do
    DateTime.expects(:now).returns(DateTime.new(2008,11,1)).at_least_once
    assert_equal 'November 2008', show_month(nil, nil)
    assert_equal 'November 2008', show_month('', '')
  end
  should 'show next month' do
    assert_equal 'November 2009', show_month(2009, 10, :next => true)
  end
  should 'show previous month' do
    assert_equal 'September 2009', show_month(2009, 10, :previous => true)
  end
  should 'provide an intertionalized date selector pass month names' do
    expects(:language).returns('en')
    expects(:date_select).with(:object, :method, { :include_blank => true, :order => [:month, :day, :year], :use_month_names => months }).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 => months }).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 => months }).returns("KKKKKKKK")
    assert_equal 'KKKKKKKK', pick_date(:object, :method)
  end
  should 'format time' do
    assert_equal 'November 22, 2008 15:34', show_time(Time.mktime(2008, 11, 22, 15, 34, 0, 0))
  end
  should 'format time with 2 digits minutes' do
    assert_equal 'November 22, 2008 15:04', show_time(Time.mktime(2008, 11, 22, 15, 04, 0, 0))
  end
  should 'translate time' do
    time = Time.parse('25 May 2009, 12:47')
    assert_equal 'May 25, 2009 12:47', show_time(time)
  end
  should 'handle nil time' do
    assert_equal '', show_time(nil)
  end
  should 'build date' do
    assert_equal Date.new(2009, 10, 24), build_date(2009, 10, 24)
  end
  should 'build date to day 1 by default' do
    assert_equal Date.new(2009, 10, 1), build_date(2009, 10)
  end
  should 'build today date when year and month are blank' do
    assert_equal Date.new(Date.today.year, Date.today.month, 1), build_date('', '')
  end
  should 'show how long it has passed since a specific date' do
    date = Time.zone.now
    assert_equal show_date(date, false, false, true), time_ago_in_words(date)
  end
end