[Git][noosfero/noosfero][master] Fix calendar of events for dates with time zone

Victor Costa gitlab at mg.gitlab.com
Tue Dec 1 14:55:18 BRST 2015


Victor Costa pushed to branch master at Noosfero / noosfero


Commits:
d3b2dfce by Victor Costa at 2015-12-01T13:53:48Z
Fix calendar of events for dates with time zone

- - - - -


3 changed files:

- app/helpers/events_helper.rb
- app/models/event.rb
- test/unit/events_helper_test.rb


Changes:

=====================================
app/helpers/events_helper.rb
=====================================
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -24,6 +24,7 @@ module EventsHelper
   end
 
   def populate_calendar(selected_date, events)
+    selected_date = selected_date.to_date
     events = events.reject{ |event| !event.display_to? user }
     calendar = Event.date_range(selected_date.year, selected_date.month).map do |date|
       [


=====================================
app/models/event.rb
=====================================
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -87,11 +87,11 @@ class Event < Article
     first_day = DateTime.new(year, month, 1)
     last_day = first_day + 1.month - 1.day
 
-    first_day..last_day
+    first_day.to_date..last_day.to_date
   end
 
   def date_range
-    start_date..(end_date||start_date)
+    start_date.to_date..(end_date||start_date).to_date
   end
 
   def first_paragraph


=====================================
test/unit/events_helper_test.rb
=====================================
--- a/test/unit/events_helper_test.rb
+++ b/test/unit/events_helper_test.rb
@@ -28,7 +28,7 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, true, true]
+    assert_includes calendar, [date.to_date, true, true]
   end
 
   should 'hide private events from guests' do
@@ -37,7 +37,7 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id, :published => false)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, false, true]
+    assert_includes calendar, [date.to_date, false, true]
   end
 
   should 'hide events from invisible profiles from guests' do
@@ -46,7 +46,7 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, false, true]
+    assert_includes calendar, [date.to_date, false, true]
   end
 
   should 'hide events from private profiles from guests' do
@@ -55,7 +55,7 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, false, true]
+    assert_includes calendar, [date.to_date, false, true]
   end
 
   should 'show private events to owner' do
@@ -64,7 +64,7 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id, :published => false)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, true, true]
+    assert_includes calendar, [date.to_date, true, true]
   end
 
   should 'show events from invisible profiles to owner' do
@@ -73,7 +73,7 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, true, true]
+    assert_includes calendar, [date.to_date, true, true]
   end
 
   should 'show events from private profiles to owner' do
@@ -82,7 +82,16 @@ class EventsHelperTest < ActiveSupport::TestCase
     event = fast_create(Event, :profile_id => user.id)
     date = event.start_date
     calendar = populate_calendar(date, Environment.default.events)
-    assert_includes calendar, [date, true, true]
+    assert_includes calendar, [date.to_date, true, true]
+  end
+
+  should 'populate calendar for dates with timezone' do
+    user = create_user('userwithevents').person
+    stubs(:user).returns(user)
+    event = fast_create(Event, :profile_id => user.id, :start_date => ActiveSupport::TimeZone.new('Brasilia').now)
+    date = event.start_date
+    calendar = populate_calendar(date, Environment.default.events)
+    assert_includes calendar, [date.to_date, true, true]
   end
 
   protected



View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/d3b2dfce73160cfeb0f88fdc2c3c24cf7fe96cb9
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20151201/da0cca8a/attachment.html>


More information about the Noosfero-dev mailing list