Commit d3b2dfce73160cfeb0f88fdc2c3c24cf7fe96cb9
1 parent
e65387e7
Exists in
master
and in
19 other branches
Fix calendar of events for dates with time zone
Showing
3 changed files
with
19 additions
and
9 deletions
Show diff stats
app/helpers/events_helper.rb
... | ... | @@ -24,6 +24,7 @@ module EventsHelper |
24 | 24 | end |
25 | 25 | |
26 | 26 | def populate_calendar(selected_date, events) |
27 | + selected_date = selected_date.to_date | |
27 | 28 | events = events.reject{ |event| !event.display_to? user } |
28 | 29 | calendar = Event.date_range(selected_date.year, selected_date.month).map do |date| |
29 | 30 | [ | ... | ... |
app/models/event.rb
... | ... | @@ -87,11 +87,11 @@ class Event < Article |
87 | 87 | first_day = DateTime.new(year, month, 1) |
88 | 88 | last_day = first_day + 1.month - 1.day |
89 | 89 | |
90 | - first_day..last_day | |
90 | + first_day.to_date..last_day.to_date | |
91 | 91 | end |
92 | 92 | |
93 | 93 | def date_range |
94 | - start_date..(end_date||start_date) | |
94 | + start_date.to_date..(end_date||start_date).to_date | |
95 | 95 | end |
96 | 96 | |
97 | 97 | def first_paragraph | ... | ... |
test/unit/events_helper_test.rb
... | ... | @@ -28,7 +28,7 @@ class EventsHelperTest < ActiveSupport::TestCase |
28 | 28 | event = fast_create(Event, :profile_id => user.id) |
29 | 29 | date = event.start_date |
30 | 30 | calendar = populate_calendar(date, Environment.default.events) |
31 | - assert_includes calendar, [date, true, true] | |
31 | + assert_includes calendar, [date.to_date, true, true] | |
32 | 32 | end |
33 | 33 | |
34 | 34 | should 'hide private events from guests' do |
... | ... | @@ -37,7 +37,7 @@ class EventsHelperTest < ActiveSupport::TestCase |
37 | 37 | event = fast_create(Event, :profile_id => user.id, :published => false) |
38 | 38 | date = event.start_date |
39 | 39 | calendar = populate_calendar(date, Environment.default.events) |
40 | - assert_includes calendar, [date, false, true] | |
40 | + assert_includes calendar, [date.to_date, false, true] | |
41 | 41 | end |
42 | 42 | |
43 | 43 | should 'hide events from invisible profiles from guests' do |
... | ... | @@ -46,7 +46,7 @@ class EventsHelperTest < ActiveSupport::TestCase |
46 | 46 | event = fast_create(Event, :profile_id => user.id) |
47 | 47 | date = event.start_date |
48 | 48 | calendar = populate_calendar(date, Environment.default.events) |
49 | - assert_includes calendar, [date, false, true] | |
49 | + assert_includes calendar, [date.to_date, false, true] | |
50 | 50 | end |
51 | 51 | |
52 | 52 | should 'hide events from private profiles from guests' do |
... | ... | @@ -55,7 +55,7 @@ class EventsHelperTest < ActiveSupport::TestCase |
55 | 55 | event = fast_create(Event, :profile_id => user.id) |
56 | 56 | date = event.start_date |
57 | 57 | calendar = populate_calendar(date, Environment.default.events) |
58 | - assert_includes calendar, [date, false, true] | |
58 | + assert_includes calendar, [date.to_date, false, true] | |
59 | 59 | end |
60 | 60 | |
61 | 61 | should 'show private events to owner' do |
... | ... | @@ -64,7 +64,7 @@ class EventsHelperTest < ActiveSupport::TestCase |
64 | 64 | event = fast_create(Event, :profile_id => user.id, :published => false) |
65 | 65 | date = event.start_date |
66 | 66 | calendar = populate_calendar(date, Environment.default.events) |
67 | - assert_includes calendar, [date, true, true] | |
67 | + assert_includes calendar, [date.to_date, true, true] | |
68 | 68 | end |
69 | 69 | |
70 | 70 | should 'show events from invisible profiles to owner' do |
... | ... | @@ -73,7 +73,7 @@ class EventsHelperTest < ActiveSupport::TestCase |
73 | 73 | event = fast_create(Event, :profile_id => user.id) |
74 | 74 | date = event.start_date |
75 | 75 | calendar = populate_calendar(date, Environment.default.events) |
76 | - assert_includes calendar, [date, true, true] | |
76 | + assert_includes calendar, [date.to_date, true, true] | |
77 | 77 | end |
78 | 78 | |
79 | 79 | should 'show events from private profiles to owner' do |
... | ... | @@ -82,7 +82,16 @@ class EventsHelperTest < ActiveSupport::TestCase |
82 | 82 | event = fast_create(Event, :profile_id => user.id) |
83 | 83 | date = event.start_date |
84 | 84 | calendar = populate_calendar(date, Environment.default.events) |
85 | - assert_includes calendar, [date, true, true] | |
85 | + assert_includes calendar, [date.to_date, true, true] | |
86 | + end | |
87 | + | |
88 | + should 'populate calendar for dates with timezone' do | |
89 | + user = create_user('userwithevents').person | |
90 | + stubs(:user).returns(user) | |
91 | + event = fast_create(Event, :profile_id => user.id, :start_date => ActiveSupport::TimeZone.new('Brasilia').now) | |
92 | + date = event.start_date | |
93 | + calendar = populate_calendar(date, Environment.default.events) | |
94 | + assert_includes calendar, [date.to_date, true, true] | |
86 | 95 | end |
87 | 96 | |
88 | 97 | protected | ... | ... |