Commit d3b2dfce73160cfeb0f88fdc2c3c24cf7fe96cb9

Authored by Victor Costa
1 parent e65387e7

Fix calendar of events for dates with time zone

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