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 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
... ...