Commit d3b2dfce73160cfeb0f88fdc2c3c24cf7fe96cb9
1 parent
e65387e7
Exists in
master
and in
11 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,6 +24,7 @@ module EventsHelper | ||
24 | end | 24 | end |
25 | 25 | ||
26 | def populate_calendar(selected_date, events) | 26 | def populate_calendar(selected_date, events) |
27 | + selected_date = selected_date.to_date | ||
27 | events = events.reject{ |event| !event.display_to? user } | 28 | events = events.reject{ |event| !event.display_to? user } |
28 | calendar = Event.date_range(selected_date.year, selected_date.month).map do |date| | 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,11 +87,11 @@ class Event < Article | ||
87 | first_day = DateTime.new(year, month, 1) | 87 | first_day = DateTime.new(year, month, 1) |
88 | last_day = first_day + 1.month - 1.day | 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 | end | 91 | end |
92 | 92 | ||
93 | def date_range | 93 | def date_range |
94 | - start_date..(end_date||start_date) | 94 | + start_date.to_date..(end_date||start_date).to_date |
95 | end | 95 | end |
96 | 96 | ||
97 | def first_paragraph | 97 | def first_paragraph |
test/unit/events_helper_test.rb
@@ -28,7 +28,7 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -28,7 +28,7 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
28 | event = fast_create(Event, :profile_id => user.id) | 28 | event = fast_create(Event, :profile_id => user.id) |
29 | date = event.start_date | 29 | date = event.start_date |
30 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 32 | end |
33 | 33 | ||
34 | should 'hide private events from guests' do | 34 | should 'hide private events from guests' do |
@@ -37,7 +37,7 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -37,7 +37,7 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
37 | event = fast_create(Event, :profile_id => user.id, :published => false) | 37 | event = fast_create(Event, :profile_id => user.id, :published => false) |
38 | date = event.start_date | 38 | date = event.start_date |
39 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 41 | end |
42 | 42 | ||
43 | should 'hide events from invisible profiles from guests' do | 43 | should 'hide events from invisible profiles from guests' do |
@@ -46,7 +46,7 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -46,7 +46,7 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
46 | event = fast_create(Event, :profile_id => user.id) | 46 | event = fast_create(Event, :profile_id => user.id) |
47 | date = event.start_date | 47 | date = event.start_date |
48 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 50 | end |
51 | 51 | ||
52 | should 'hide events from private profiles from guests' do | 52 | should 'hide events from private profiles from guests' do |
@@ -55,7 +55,7 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -55,7 +55,7 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
55 | event = fast_create(Event, :profile_id => user.id) | 55 | event = fast_create(Event, :profile_id => user.id) |
56 | date = event.start_date | 56 | date = event.start_date |
57 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 59 | end |
60 | 60 | ||
61 | should 'show private events to owner' do | 61 | should 'show private events to owner' do |
@@ -64,7 +64,7 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -64,7 +64,7 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
64 | event = fast_create(Event, :profile_id => user.id, :published => false) | 64 | event = fast_create(Event, :profile_id => user.id, :published => false) |
65 | date = event.start_date | 65 | date = event.start_date |
66 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 68 | end |
69 | 69 | ||
70 | should 'show events from invisible profiles to owner' do | 70 | should 'show events from invisible profiles to owner' do |
@@ -73,7 +73,7 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -73,7 +73,7 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
73 | event = fast_create(Event, :profile_id => user.id) | 73 | event = fast_create(Event, :profile_id => user.id) |
74 | date = event.start_date | 74 | date = event.start_date |
75 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 77 | end |
78 | 78 | ||
79 | should 'show events from private profiles to owner' do | 79 | should 'show events from private profiles to owner' do |
@@ -82,7 +82,16 @@ class EventsHelperTest < ActiveSupport::TestCase | @@ -82,7 +82,16 @@ class EventsHelperTest < ActiveSupport::TestCase | ||
82 | event = fast_create(Event, :profile_id => user.id) | 82 | event = fast_create(Event, :profile_id => user.id) |
83 | date = event.start_date | 83 | date = event.start_date |
84 | calendar = populate_calendar(date, Environment.default.events) | 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 | end | 95 | end |
87 | 96 | ||
88 | protected | 97 | protected |