Commit c51245ad4518bd912bd0122def502f9f4c190704

Authored by Joenio Costa
Committed by Daniela Feitosa
1 parent 23d69941

Improving performance of helper method to populate calendar

- Also, removing field from article_version that already was removed from articles table

(ActionItem2005)
app/helpers/events_helper.rb
@@ -21,14 +21,13 @@ module EventsHelper @@ -21,14 +21,13 @@ module EventsHelper
21 end 21 end
22 22
23 def populate_calendar(selected_date, events) 23 def populate_calendar(selected_date, events)
  24 + events.reject! {|event| !event.display_to?(user)}
24 calendar = Event.date_range(selected_date.year, selected_date.month).map do |date| 25 calendar = Event.date_range(selected_date.year, selected_date.month).map do |date|
25 [ 26 [
26 # the day itself 27 # the day itself
27 date, 28 date,
28 # is there any events in this date? 29 # is there any events in this date?
29 - events.select {|event| event.display_to?(user)}.any? do |event|  
30 - event.date_range.include?(date)  
31 - end, 30 + events.any? {|event| event.date_range.include?(date)},
32 # is this date in the current month? 31 # is this date in the current month?
33 true 32 true
34 ] 33 ]
db/migrate/20110524151137_remove_public_article_from_article_versions.rb 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +class RemovePublicArticleFromArticleVersions < ActiveRecord::Migration
  2 + def self.up
  3 + remove_column :article_versions, :public_article
  4 + end
  5 +
  6 + def self.down
  7 + add_column :article_versions, :public_article, :boolean, :default => true
  8 + execute('update article_versions set public_article = (1>0)')
  9 + end
  10 +end
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 # 9 #
10 # It's strongly recommended to check this file into your version control system. 10 # It's strongly recommended to check this file into your version control system.
11 11
12 -ActiveRecord::Schema.define(:version => 20110520150544) do 12 +ActiveRecord::Schema.define(:version => 20110524151137) do
13 13
14 create_table "action_tracker", :force => true do |t| 14 create_table "action_tracker", :force => true do |t|
15 t.integer "user_id" 15 t.integer "user_id"
@@ -60,7 +60,6 @@ ActiveRecord::Schema.define(:version =&gt; 20110520150544) do @@ -60,7 +60,6 @@ ActiveRecord::Schema.define(:version =&gt; 20110520150544) do
60 t.date "start_date" 60 t.date "start_date"
61 t.date "end_date" 61 t.date "end_date"
62 t.integer "children_count", :default => 0 62 t.integer "children_count", :default => 0
63 - t.boolean "public_article", :default => true  
64 t.boolean "accept_comments", :default => true 63 t.boolean "accept_comments", :default => true
65 t.integer "reference_article_id" 64 t.integer "reference_article_id"
66 t.text "setting" 65 t.text "setting"
test/unit/events_helper_test.rb
@@ -15,6 +15,69 @@ class EventsHelperTest &lt; Test::Unit::TestCase @@ -15,6 +15,69 @@ class EventsHelperTest &lt; Test::Unit::TestCase
15 assert_match /Event 2/, result 15 assert_match /Event 2/, result
16 end 16 end
17 17
  18 + should 'populate calendar with links on days that have events' do
  19 + user = create_user('userwithevents').person
  20 + stubs(:user).returns(user)
  21 + event = fast_create(Event, :profile_id => user.id)
  22 + date = event.start_date
  23 + calendar = populate_calendar(date, Environment.default.events)
  24 + assert_includes calendar, [date, true, true]
  25 + end
  26 +
  27 + should 'hide private events from guests' do
  28 + user = create_user('userwithevents').person
  29 + stubs(:user).returns(nil)
  30 + event = fast_create(Event, :profile_id => user.id, :published => false)
  31 + date = event.start_date
  32 + calendar = populate_calendar(date, Environment.default.events)
  33 + assert_includes calendar, [date, false, true]
  34 + end
  35 +
  36 + should 'hide events from invisible profiles from guests' do
  37 + user = create_user('usernonvisible', {}, {:visible => false}).person
  38 + stubs(:user).returns(nil)
  39 + event = fast_create(Event, :profile_id => user.id)
  40 + date = event.start_date
  41 + calendar = populate_calendar(date, Environment.default.events)
  42 + assert_includes calendar, [date, false, true]
  43 + end
  44 +
  45 + should 'hide events from private profiles from guests' do
  46 + user = create_user('usernonvisible', {}, {:visible => false}).person
  47 + stubs(:user).returns(nil)
  48 + event = fast_create(Event, :profile_id => user.id)
  49 + date = event.start_date
  50 + calendar = populate_calendar(date, Environment.default.events)
  51 + assert_includes calendar, [date, false, true]
  52 + end
  53 +
  54 + should 'show private events to owner' do
  55 + user = create_user('userwithevents').person
  56 + stubs(:user).returns(user)
  57 + event = fast_create(Event, :profile_id => user.id, :published => false)
  58 + date = event.start_date
  59 + calendar = populate_calendar(date, Environment.default.events)
  60 + assert_includes calendar, [date, true, true]
  61 + end
  62 +
  63 + should 'show events from invisible profiles to owner' do
  64 + user = create_user('usernonvisible', {}, {:visible => false}).person
  65 + stubs(:user).returns(user)
  66 + event = fast_create(Event, :profile_id => user.id)
  67 + date = event.start_date
  68 + calendar = populate_calendar(date, Environment.default.events)
  69 + assert_includes calendar, [date, true, true]
  70 + end
  71 +
  72 + should 'show events from private profiles to owner' do
  73 + user = create_user('usernonvisible', {}, {:visible => false}).person
  74 + stubs(:user).returns(user)
  75 + event = fast_create(Event, :profile_id => user.id)
  76 + date = event.start_date
  77 + calendar = populate_calendar(date, Environment.default.events)
  78 + assert_includes calendar, [date, true, true]
  79 + end
  80 +
18 protected 81 protected
19 82
20 def content_tag(tag, text, options = {}) 83 def content_tag(tag, text, options = {})