Commit c51245ad4518bd912bd0122def502f9f4c190704
Committed by
Daniela Feitosa
1 parent
23d69941
Exists in
staging
and in
42 other branches
Improving performance of helper method to populate calendar
- Also, removing field from article_version that already was removed from articles table (ActionItem2005)
Showing
4 changed files
with
76 additions
and
5 deletions
Show diff stats
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 |
db/schema.rb
| @@ -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 => 20110520150544) do | @@ -60,7 +60,6 @@ ActiveRecord::Schema.define(:version => 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 < Test::Unit::TestCase | @@ -15,6 +15,69 @@ class EventsHelperTest < 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 = {}) |