Commit a7066af576c7320d219abe8ddeb3c954271a7c61
1 parent
1b279971
Exists in
staging
and in
42 other branches
Code refactoring
Showing
4 changed files
with
175 additions
and
289 deletions
Show diff stats
plugins/relevant_content/lib/ext/article.rb
| @@ -2,7 +2,11 @@ require_dependency 'article' | @@ -2,7 +2,11 @@ require_dependency 'article' | ||
| 2 | 2 | ||
| 3 | class Article | 3 | class Article |
| 4 | 4 | ||
| 5 | - named_scope :relevant_content, :conditions => ["(articles.type != 'UploadedFile' and articles.type != 'Blog' and articles.type != 'RssFeed') OR articles.type is NULL"] | 5 | + named_scope :relevant_content, :conditions => ["articles.published = true and (articles.type != 'UploadedFile' and articles.type != 'Blog' and articles.type != 'RssFeed') OR articles.type is NULL"] |
| 6 | + | ||
| 7 | + def self.articles_columns | ||
| 8 | + Article.column_names.map {|c| "articles.#{c}"} .join(",") | ||
| 9 | + end | ||
| 6 | 10 | ||
| 7 | def self.most_accessed(owner, limit = nil) | 11 | def self.most_accessed(owner, limit = nil) |
| 8 | conditions = owner.kind_of?(Environment) ? ["hits > 0"] : ["profile_id = ? and hits > 0", owner.id] | 12 | conditions = owner.kind_of?(Environment) ? ["hits > 0"] : ["profile_id = ? and hits > 0", owner.id] |
| @@ -15,169 +19,77 @@ class Article | @@ -15,169 +19,77 @@ class Article | ||
| 15 | end | 19 | end |
| 16 | 20 | ||
| 17 | def self.most_commented_relevant_content(owner, limit) | 21 | def self.most_commented_relevant_content(owner, limit) |
| 18 | - | ||
| 19 | - if owner.kind_of?(Environment) | 22 | + conditions = owner.kind_of?(Environment) ? ["comments_count > 0"] : ["profile_id = ? and comments_count > 0", owner.id] |
| 20 | result = Article.relevant_content.find( | 23 | result = Article.relevant_content.find( |
| 21 | :all, | 24 | :all, |
| 22 | :order => 'comments_count desc', | 25 | :order => 'comments_count desc', |
| 23 | :limit => limit, | 26 | :limit => limit, |
| 24 | - :conditions => ["comments_count > 0"] | ||
| 25 | - ) | 27 | + :conditions => conditions) |
| 26 | result.paginate({:page => 1, :per_page => limit}) | 28 | result.paginate({:page => 1, :per_page => limit}) |
| 27 | - else | ||
| 28 | - #Owner is a profile | ||
| 29 | - result = Article.relevant_content.find( | ||
| 30 | - :all, | ||
| 31 | - :order => 'comments_count desc', | ||
| 32 | - :limit => limit, | ||
| 33 | - :conditions => ["profile_id = ? and comments_count > 0", owner.id] | ||
| 34 | - ) | ||
| 35 | - result.paginate({:page => 1, :per_page => limit}) | ||
| 36 | - end | ||
| 37 | - end | ||
| 38 | - | ||
| 39 | - def self.articles_columns | ||
| 40 | - Article.column_names.map {|c| "articles.#{c}"} .join(",") | ||
| 41 | end | 29 | end |
| 42 | 30 | ||
| 43 | def self.more_positive_votes(owner, limit = nil) | 31 | def self.more_positive_votes(owner, limit = nil) |
| 44 | - if owner.kind_of?(Environment) | ||
| 45 | - result = Article.find( | ||
| 46 | - :all, | ||
| 47 | - :select => articles_columns, | ||
| 48 | - :order => 'sum(vote) desc', | ||
| 49 | - :group => 'voteable_id, ' + articles_columns, | ||
| 50 | - :limit => limit, | ||
| 51 | - :having => ['sum(vote) > 0'], | ||
| 52 | - :conditions => {'votes.voteable_type' => 'Article'}, | ||
| 53 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id' | ||
| 54 | - ) | ||
| 55 | - result.paginate({:page => 1, :per_page => limit}) | ||
| 56 | - else | ||
| 57 | - #Owner is a profile | ||
| 58 | - result = Article.find( | 32 | + conditions = owner.kind_of?(Environment) ? {'votes.voteable_type' => 'Article'} : ["profile_id = ? and votes.voteable_type = ? ", owner.id, 'Article'] |
| 33 | + result = Article.relevant_content.find( | ||
| 59 | :all, | 34 | :all, |
| 60 | - :select => articles_columns, | ||
| 61 | :order => 'sum(vote) desc', | 35 | :order => 'sum(vote) desc', |
| 62 | :group => 'voteable_id, ' + articles_columns, | 36 | :group => 'voteable_id, ' + articles_columns, |
| 63 | :limit => limit, | 37 | :limit => limit, |
| 64 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 65 | :having => ['sum(vote) > 0'], | 38 | :having => ['sum(vote) > 0'], |
| 66 | - :conditions => ["profile_id = ? and votes.voteable_type = ? ", owner.id, 'Article'] | ||
| 67 | - ) | 39 | + :conditions => conditions, |
| 40 | + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id') | ||
| 68 | result.paginate({:page => 1, :per_page => limit}) | 41 | result.paginate({:page => 1, :per_page => limit}) |
| 69 | - end | ||
| 70 | end | 42 | end |
| 71 | 43 | ||
| 72 | def self.more_negative_votes(owner, limit = nil) | 44 | def self.more_negative_votes(owner, limit = nil) |
| 73 | - if owner.kind_of?(Environment) | ||
| 74 | - result = Article.find( | 45 | + conditions = owner.kind_of?(Environment) ? {'votes.voteable_type' => 'Article'} : ["profile_id = ? and votes.voteable_type = 'Article' ", owner.id] |
| 46 | + result = Article.relevant_content.find( | ||
| 75 | :all, | 47 | :all, |
| 76 | - :select => articles_columns, | ||
| 77 | :order => 'sum(vote) asc', | 48 | :order => 'sum(vote) asc', |
| 78 | :group => 'voteable_id, ' + articles_columns, | 49 | :group => 'voteable_id, ' + articles_columns, |
| 79 | :limit => limit, | 50 | :limit => limit, |
| 80 | :having => ['sum(vote) < 0'], | 51 | :having => ['sum(vote) < 0'], |
| 81 | - :conditions => {'votes.voteable_type' => 'Article'}, | 52 | + :conditions => conditions, |
| 82 | :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id' | 53 | :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id' |
| 83 | ) | 54 | ) |
| 84 | - result.paginate({:page => 1, :per_page => limit}) | ||
| 85 | - else | ||
| 86 | - #Owner is a profile | ||
| 87 | - result = Article.find( | ||
| 88 | - :all, | ||
| 89 | - :select => articles_columns, | ||
| 90 | - :order => 'sum(vote) asc', | ||
| 91 | - :group => 'voteable_id, ' + articles_columns, | ||
| 92 | - :limit => limit, | ||
| 93 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 94 | - :having => ['sum(vote) < 0'], | ||
| 95 | - :conditions => ["profile_id = ? and votes.voteable_type = 'Article' ", owner.id] | ||
| 96 | - ) | ||
| 97 | result.paginate({:page => 1, :per_page => limit}) | 55 | result.paginate({:page => 1, :per_page => limit}) |
| 98 | - end | ||
| 99 | end | 56 | end |
| 100 | 57 | ||
| 101 | def self.most_liked(owner, limit = nil) | 58 | def self.most_liked(owner, limit = nil) |
| 102 | - if owner.kind_of?(Environment) | ||
| 103 | - result = Article.find( | ||
| 104 | - :all, | ||
| 105 | - :select => articles_columns, | ||
| 106 | - :order => 'count(voteable_id) desc', | ||
| 107 | - :group => 'voteable_id, ' + articles_columns, | ||
| 108 | - :limit => limit, | ||
| 109 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 110 | - :conditions => ["votes.voteable_type = 'Article' and vote > 0"] | ||
| 111 | - ) | ||
| 112 | - result.paginate({:page => 1, :per_page => limit}) | ||
| 113 | - else | ||
| 114 | - #Owner is a profile | ||
| 115 | - result = Article.find( | 59 | + conditions = owner.kind_of?(Environment) ? ["votes.voteable_type = 'Article' and vote > 0"] : ["votes.voteable_type = 'Article' and vote > 0 and profile_id = ? ", owner.id] |
| 60 | + result = Article.relevant_content.find( | ||
| 116 | :all, | 61 | :all, |
| 117 | :select => articles_columns, | 62 | :select => articles_columns, |
| 118 | :order => 'count(voteable_id) desc', | 63 | :order => 'count(voteable_id) desc', |
| 119 | :group => 'voteable_id, ' + articles_columns, | 64 | :group => 'voteable_id, ' + articles_columns, |
| 120 | :limit => limit, | 65 | :limit => limit, |
| 121 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 122 | - :conditions => ["votes.voteable_type = 'Article' and vote > 0 and profile_id = ? ", owner.id] | ||
| 123 | - ) | 66 | + :conditions => conditions, |
| 67 | + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id') | ||
| 124 | result.paginate({:page => 1, :per_page => limit}) | 68 | result.paginate({:page => 1, :per_page => limit}) |
| 125 | - end | ||
| 126 | end | 69 | end |
| 127 | 70 | ||
| 128 | def self.most_disliked(owner, limit = nil) | 71 | def self.most_disliked(owner, limit = nil) |
| 129 | - if owner.kind_of?(Environment) | ||
| 130 | - result = Article.find( | 72 | + conditions = owner.kind_of?(Environment) ? ["votes.voteable_type = 'Article' and vote < 0"] : ["votes.voteable_type = 'Article' and vote < 0 and profile_id = ? ", owner.id] |
| 73 | + result = Article.relevant_content.find( | ||
| 131 | :all, | 74 | :all, |
| 132 | :order => 'count(voteable_id) desc', | 75 | :order => 'count(voteable_id) desc', |
| 133 | :group => 'voteable_id, ' + articles_columns, | 76 | :group => 'voteable_id, ' + articles_columns, |
| 134 | :limit => limit, | 77 | :limit => limit, |
| 135 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 136 | - :conditions => ["votes.voteable_type = 'Article' and vote < 0"] | ||
| 137 | - ) | 78 | + :conditions => conditions, |
| 79 | + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id') | ||
| 138 | result.paginate({:page => 1, :per_page => limit}) | 80 | result.paginate({:page => 1, :per_page => limit}) |
| 139 | - else | ||
| 140 | - #Owner is a profile | ||
| 141 | - result = Article.find( | ||
| 142 | - :all, | ||
| 143 | - :order => 'count(voteable_id) desc', | ||
| 144 | - :group => 'voteable_id, ' + articles_columns, | ||
| 145 | - :limit => limit, | ||
| 146 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 147 | - :conditions => ["votes.voteable_type = 'Article' and vote < 0 and profile_id = ? ", owner.id] | ||
| 148 | - ) | ||
| 149 | - result.paginate({:page => 1, :per_page => limit}) | ||
| 150 | - end | ||
| 151 | end | 81 | end |
| 152 | 82 | ||
| 153 | def self.most_voted(owner, limit = nil) | 83 | def self.most_voted(owner, limit = nil) |
| 154 | - if owner.kind_of?(Environment) | ||
| 155 | - result = Article.find( | ||
| 156 | - :all, | ||
| 157 | - :select => articles_columns, | ||
| 158 | - :order => 'count(voteable_id) desc', | ||
| 159 | - :group => 'voteable_id, ' + articles_columns, | ||
| 160 | - :limit => limit, | ||
| 161 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 162 | - :conditions => ["votes.voteable_type = 'Article'"] | ||
| 163 | - ) | ||
| 164 | - result.paginate({:page => 1, :per_page => limit}) | ||
| 165 | - else | ||
| 166 | - #Owner is a profile | ||
| 167 | - result = Article.find( | 84 | + conditions = owner.kind_of?(Environment) ? ["votes.voteable_type = 'Article'"] : ["votes.voteable_type = 'Article' and profile_id = ? ", owner.id] |
| 85 | + result = Article.relevant_content.find( | ||
| 168 | :all, | 86 | :all, |
| 169 | :select => articles_columns, | 87 | :select => articles_columns, |
| 170 | :order => 'count(voteable_id) desc', | 88 | :order => 'count(voteable_id) desc', |
| 171 | :group => 'voteable_id, ' + articles_columns, | 89 | :group => 'voteable_id, ' + articles_columns, |
| 172 | :limit => limit, | 90 | :limit => limit, |
| 173 | - :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id', | ||
| 174 | - :conditions => ["votes.voteable_type = 'Article' and profile_id = ? ", owner.id] | ||
| 175 | - ) | 91 | + :conditions => conditions, |
| 92 | + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id') | ||
| 176 | result.paginate({:page => 1, :per_page => limit}) | 93 | result.paginate({:page => 1, :per_page => limit}) |
| 177 | - end | ||
| 178 | end | 94 | end |
| 179 | - | ||
| 180 | - | ||
| 181 | - | ||
| 182 | - | ||
| 183 | end | 95 | end |
| @@ -0,0 +1,148 @@ | @@ -0,0 +1,148 @@ | ||
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
| 2 | + | ||
| 3 | +require 'comment_controller' | ||
| 4 | +# Re-raise errors caught by the controller. | ||
| 5 | +class CommentController; def rescue_action(e) raise e end; end | ||
| 6 | + | ||
| 7 | +class RelevantContentBlockTest < ActiveSupport::TestCase | ||
| 8 | + | ||
| 9 | + include AuthenticatedTestHelper | ||
| 10 | + fixtures :users, :environments | ||
| 11 | + | ||
| 12 | + def setup | ||
| 13 | + @controller = CommentController.new | ||
| 14 | + @request = ActionController::TestRequest.new | ||
| 15 | + @response = ActionController::TestResponse.new | ||
| 16 | + @profile = create_user('testinguser').person | ||
| 17 | + @environment = @profile.environment | ||
| 18 | + end | ||
| 19 | + attr_reader :profile, :environment | ||
| 20 | + | ||
| 21 | + def enable_vote_plugin | ||
| 22 | + enabled = false | ||
| 23 | + environment=Environment.default | ||
| 24 | + if Noosfero::Plugin.all.include?('VotePlugin') | ||
| 25 | + if not environment.enabled_plugins.include?(:vote) | ||
| 26 | + environment.enable_plugin(Vote) | ||
| 27 | + environment.save! | ||
| 28 | + end | ||
| 29 | + enabled = true | ||
| 30 | + end | ||
| 31 | + enabled | ||
| 32 | + end | ||
| 33 | + | ||
| 34 | + should 'list most commented articles' do | ||
| 35 | + Article.delete_all | ||
| 36 | + a1 = create(TextileArticle, :name => "art 1", :profile_id => profile.id) | ||
| 37 | + a2 = create(TextileArticle, :name => "art 2", :profile_id => profile.id) | ||
| 38 | + a3 = create(TextileArticle, :name => "art 3", :profile_id => profile.id) | ||
| 39 | + | ||
| 40 | + 2.times { Comment.create(:title => 'test', :body => 'asdsad', :author => profile, :source => a2).save! } | ||
| 41 | + 4.times { Comment.create(:title => 'test', :body => 'asdsad', :author => profile, :source => a3).save! } | ||
| 42 | + | ||
| 43 | + # should respect the order (more commented comes first) | ||
| 44 | + assert_equal a3.name, profile.articles.most_commented_relevant_content(Environment.default, 3).first.name | ||
| 45 | + # It is a2 instead of a1 since it does not list articles without comments | ||
| 46 | + assert_equal a2.name, profile.articles.most_commented_relevant_content(Environment.default, 3).last.name | ||
| 47 | + end | ||
| 48 | + | ||
| 49 | + | ||
| 50 | + should 'find the most voted' do | ||
| 51 | + if not enable_vote_plugin | ||
| 52 | + return | ||
| 53 | + end | ||
| 54 | + article = fast_create(Article, {:name=>'2 votes'}) | ||
| 55 | + 2.times{ | ||
| 56 | + person = fast_create(Person) | ||
| 57 | + person.vote_for(article) | ||
| 58 | + } | ||
| 59 | + article = fast_create(Article, {:name=>'10 votes'}) | ||
| 60 | + 10.times{ | ||
| 61 | + person = fast_create(Person) | ||
| 62 | + person.vote_for(article) | ||
| 63 | + } | ||
| 64 | + article = fast_create(Article, {:name=>'5 votes'}) | ||
| 65 | + 5.times{ | ||
| 66 | + person = fast_create(Person) | ||
| 67 | + person.vote_for(article) | ||
| 68 | + } | ||
| 69 | + articles = Article.most_voted(Environment.default, 5) | ||
| 70 | + assert_equal '10 votes', articles.first.name | ||
| 71 | + assert_equal '2 votes', articles.last.name | ||
| 72 | + end | ||
| 73 | + | ||
| 74 | + should 'list the most postive' do | ||
| 75 | + if not enable_vote_plugin | ||
| 76 | + return | ||
| 77 | + end | ||
| 78 | + article = fast_create(Article, {:name=>'23 votes for 20 votes against'}) | ||
| 79 | + 20.times{ | ||
| 80 | + person = fast_create(Person) | ||
| 81 | + person.vote_against(article) | ||
| 82 | + } | ||
| 83 | + 23.times{ | ||
| 84 | + person = fast_create(Person) | ||
| 85 | + person.vote_for(article) | ||
| 86 | + } | ||
| 87 | + article = fast_create(Article, {:name=>'10 votes for 5 votes against'}) | ||
| 88 | + 10.times{ | ||
| 89 | + person = fast_create(Person) | ||
| 90 | + person.vote_for(article) | ||
| 91 | + } | ||
| 92 | + 5.times{ | ||
| 93 | + person = fast_create(Person) | ||
| 94 | + person.vote_against(article) | ||
| 95 | + } | ||
| 96 | + article = fast_create(Article, {:name=>'2 votes against'}) | ||
| 97 | + 2.times{ | ||
| 98 | + person = fast_create(Person) | ||
| 99 | + person.vote_against(article) | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + article = fast_create(Article, {:name=>'7 votes for'}) | ||
| 103 | + 7.times{ | ||
| 104 | + person = fast_create(Person) | ||
| 105 | + person.vote_for(article) | ||
| 106 | + } | ||
| 107 | + articles = Article.more_positive_votes(Environment.default, 5) | ||
| 108 | + assert_equal '7 votes for', articles.first.name | ||
| 109 | + assert_equal '23 votes for 20 votes against', articles.last.name | ||
| 110 | + end | ||
| 111 | + | ||
| 112 | + should 'list the most negative' do | ||
| 113 | + if not enable_vote_plugin | ||
| 114 | + return | ||
| 115 | + end | ||
| 116 | + article = fast_create(Article, {:name=>'23 votes for 29 votes against'}) | ||
| 117 | + 29.times{ | ||
| 118 | + person = fast_create(Person) | ||
| 119 | + person.vote_against(article) | ||
| 120 | + } | ||
| 121 | + 23.times{ | ||
| 122 | + person = fast_create(Person) | ||
| 123 | + person.vote_for(article) | ||
| 124 | + } | ||
| 125 | + article = fast_create(Article, {:name=>'10 votes for 15 votes against'}) | ||
| 126 | + 10.times{ | ||
| 127 | + person = fast_create(Person) | ||
| 128 | + person.vote_for(article) | ||
| 129 | + } | ||
| 130 | + 15.times{ | ||
| 131 | + person = fast_create(Person) | ||
| 132 | + person.vote_against(article) | ||
| 133 | + } | ||
| 134 | + article = fast_create(Article, {:name=>'2 votes against'}) | ||
| 135 | + 2.times{ | ||
| 136 | + person = fast_create(Person) | ||
| 137 | + person.vote_against(article) | ||
| 138 | + } | ||
| 139 | + article = fast_create(Article, {:name=>'7 votes for'}) | ||
| 140 | + 7.times{ | ||
| 141 | + person = fast_create(Person) | ||
| 142 | + person.vote_for(article) | ||
| 143 | + } | ||
| 144 | + articles = Article.more_negative_votes(Environment.default, 5) | ||
| 145 | + assert_equal '23 votes for 29 votes against', articles.first.name | ||
| 146 | + assert_equal '2 votes against', articles.last.name | ||
| 147 | + end | ||
| 148 | +end | ||
| 0 | \ No newline at end of file | 149 | \ No newline at end of file |
plugins/relevant_content/test/unit/relevant_content_block_test.rb
| @@ -19,8 +19,6 @@ class RelevantContentBlockTest < ActiveSupport::TestCase | @@ -19,8 +19,6 @@ class RelevantContentBlockTest < ActiveSupport::TestCase | ||
| 19 | end | 19 | end |
| 20 | attr_reader :profile, :environment | 20 | attr_reader :profile, :environment |
| 21 | 21 | ||
| 22 | - | ||
| 23 | - | ||
| 24 | should 'have a default title' do | 22 | should 'have a default title' do |
| 25 | relevant_content_block = RelevantContentPlugin::RelevantContentBlock.new | 23 | relevant_content_block = RelevantContentPlugin::RelevantContentBlock.new |
| 26 | block = Block.new | 24 | block = Block.new |
| @@ -46,172 +44,4 @@ class RelevantContentBlockTest < ActiveSupport::TestCase | @@ -46,172 +44,4 @@ class RelevantContentBlockTest < ActiveSupport::TestCase | ||
| 46 | assert_equal RelevantContentPlugin::RelevantContentBlock.expire_on, {:environment=>[:article], :profile=>[:article]} | 44 | assert_equal RelevantContentPlugin::RelevantContentBlock.expire_on, {:environment=>[:article], :profile=>[:article]} |
| 47 | end | 45 | end |
| 48 | 46 | ||
| 49 | - should 'not raise an exception when finding the most accessed content' do | ||
| 50 | - assert_nothing_raised{ | ||
| 51 | - Article.most_accessed(Environment.default, 5) | ||
| 52 | - } | ||
| 53 | - end | ||
| 54 | - | ||
| 55 | - should 'not raise an exception when finding the most commented content' do | ||
| 56 | - assert_nothing_raised{ | ||
| 57 | - Article.most_commented_relevant_content(Environment.default, 5) | ||
| 58 | - } | ||
| 59 | - end | ||
| 60 | - | ||
| 61 | - should 'not raise an exception when finding the most liked content' do | ||
| 62 | - begin | ||
| 63 | - Environment.default.enable_plugin(:vote) | ||
| 64 | - rescue | ||
| 65 | - puts "Unable to activate vote plugin" | ||
| 66 | - end | ||
| 67 | - if Environment.default.plugin_enabled?(:vote) | ||
| 68 | - assert_nothing_raised{ | ||
| 69 | - Article.most_liked(Environment.default, 5) | ||
| 70 | - } | ||
| 71 | - end | ||
| 72 | - end | ||
| 73 | - | ||
| 74 | - should 'not raise an exception when finding the most disliked content' do | ||
| 75 | - begin | ||
| 76 | - Environment.default.enable_plugin(:vote) | ||
| 77 | - rescue | ||
| 78 | - puts "Unable to activate vote plugin" | ||
| 79 | - end | ||
| 80 | - if Environment.default.plugin_enabled?(:vote) | ||
| 81 | - assert_nothing_raised{ | ||
| 82 | - Article.most_disliked(Environment.default, 5) | ||
| 83 | - } | ||
| 84 | - end | ||
| 85 | - end | ||
| 86 | - | ||
| 87 | - | ||
| 88 | - should 'not raise an exception when finding the more positive votes' do | ||
| 89 | - begin | ||
| 90 | - Environment.default.enable_plugin(:vote) | ||
| 91 | - rescue | ||
| 92 | - puts "Unable to activate vote plugin" | ||
| 93 | - end | ||
| 94 | - if Environment.default.plugin_enabled?(:vote) | ||
| 95 | - assert_nothing_raised{ | ||
| 96 | - Article.more_positive_votes(Environment.default, 5) | ||
| 97 | - } | ||
| 98 | - end | ||
| 99 | - end | ||
| 100 | - | ||
| 101 | - should 'not raise an exception when finding the most voted' do | ||
| 102 | - begin | ||
| 103 | - Environment.default.enable_plugin(:vote) | ||
| 104 | - rescue | ||
| 105 | - puts "Unable to activate vote plugin" | ||
| 106 | - end | ||
| 107 | - if Environment.default.plugin_enabled?(:vote) | ||
| 108 | - assert_nothing_raised{ | ||
| 109 | - Article.most_voted(Environment.default, 5) | ||
| 110 | - } | ||
| 111 | - end | ||
| 112 | - end | ||
| 113 | - | ||
| 114 | - should 'find the most voted' do | ||
| 115 | - | ||
| 116 | - article = fast_create(Article, {:name=>'2 votes'}) | ||
| 117 | - for i in 0..2 | ||
| 118 | - person = fast_create(Person) | ||
| 119 | - person.vote_for(article) | ||
| 120 | - end | ||
| 121 | - | ||
| 122 | - article = fast_create(Article, {:name=>'10 votes'}) | ||
| 123 | - for i in 0..10 | ||
| 124 | - person = fast_create(Person) | ||
| 125 | - person.vote_for(article) | ||
| 126 | - end | ||
| 127 | - | ||
| 128 | - article = fast_create(Article, {:name=>'5 votes'}) | ||
| 129 | - for i in 0..5 | ||
| 130 | - person = fast_create(Person) | ||
| 131 | - person.vote_for(article) | ||
| 132 | - end | ||
| 133 | - | ||
| 134 | - articles = Article.most_voted(Environment.default, 5) | ||
| 135 | - assert_equal '10 votes', articles.first.name | ||
| 136 | - assert_equal '2 votes', articles.last.name | ||
| 137 | - end | ||
| 138 | - | ||
| 139 | - should 'list the most postive' do | ||
| 140 | - | ||
| 141 | - article = fast_create(Article, {:name=>'23 votes for 20 votes against'}) | ||
| 142 | - for i in 0..20 | ||
| 143 | - person = fast_create(Person) | ||
| 144 | - person.vote_against(article) | ||
| 145 | - end | ||
| 146 | - for i in 0..23 | ||
| 147 | - person = fast_create(Person) | ||
| 148 | - person.vote_for(article) | ||
| 149 | - end | ||
| 150 | - | ||
| 151 | - article = fast_create(Article, {:name=>'10 votes for 5 votes against'}) | ||
| 152 | - for i in 0..10 | ||
| 153 | - person = fast_create(Person) | ||
| 154 | - person.vote_for(article) | ||
| 155 | - end | ||
| 156 | - for i in 0..5 | ||
| 157 | - person = fast_create(Person) | ||
| 158 | - person.vote_against(article) | ||
| 159 | - end | ||
| 160 | - | ||
| 161 | - article = fast_create(Article, {:name=>'2 votes against'}) | ||
| 162 | - for i in 0..2 | ||
| 163 | - person = fast_create(Person) | ||
| 164 | - person.vote_against(article) | ||
| 165 | - end | ||
| 166 | - | ||
| 167 | - article = fast_create(Article, {:name=>'7 votes for'}) | ||
| 168 | - for i in 0..7 | ||
| 169 | - person = fast_create(Person) | ||
| 170 | - person.vote_for(article) | ||
| 171 | - end | ||
| 172 | - | ||
| 173 | - articles = Article.more_positive_votes(Environment.default, 5) | ||
| 174 | - assert_equal '7 votes for', articles.first.name | ||
| 175 | - assert_equal '23 votes for 20 votes against', articles.last.name | ||
| 176 | - end | ||
| 177 | - | ||
| 178 | - should 'list the most negative' do | ||
| 179 | - | ||
| 180 | - article = fast_create(Article, {:name=>'23 votes for 29 votes against'}) | ||
| 181 | - for i in 0..29 | ||
| 182 | - person = fast_create(Person) | ||
| 183 | - person.vote_against(article) | ||
| 184 | - end | ||
| 185 | - for i in 0..23 | ||
| 186 | - person = fast_create(Person) | ||
| 187 | - person.vote_for(article) | ||
| 188 | - end | ||
| 189 | - | ||
| 190 | - article = fast_create(Article, {:name=>'10 votes for 15 votes against'}) | ||
| 191 | - for i in 0..10 | ||
| 192 | - person = fast_create(Person) | ||
| 193 | - person.vote_for(article) | ||
| 194 | - end | ||
| 195 | - for i in 0..15 | ||
| 196 | - person = fast_create(Person) | ||
| 197 | - person.vote_against(article) | ||
| 198 | - end | ||
| 199 | - | ||
| 200 | - article = fast_create(Article, {:name=>'2 votes against'}) | ||
| 201 | - for i in 0..2 | ||
| 202 | - person = fast_create(Person) | ||
| 203 | - person.vote_against(article) | ||
| 204 | - end | ||
| 205 | - | ||
| 206 | - article = fast_create(Article, {:name=>'7 votes for'}) | ||
| 207 | - for i in 0..7 | ||
| 208 | - person = fast_create(Person) | ||
| 209 | - person.vote_for(article) | ||
| 210 | - end | ||
| 211 | - | ||
| 212 | - articles = Article.more_negative_votes(Environment.default, 5) | ||
| 213 | - assert_equal '23 votes for 29 votes against', articles.first.name | ||
| 214 | - assert_equal '2 votes against', articles.last.name | ||
| 215 | - end | ||
| 216 | - | ||
| 217 | end | 47 | end |
plugins/relevant_content/views/box_organizer/relevant_content_plugin/_relevant_content_block.rhtml
| @@ -5,8 +5,4 @@ | @@ -5,8 +5,4 @@ | ||
| 5 | <%= labelled_check_box _('Display most liked content'), "block[show_most_liked]", 1 ,@block.show_most_liked != 0 %><BR> | 5 | <%= labelled_check_box _('Display most liked content'), "block[show_most_liked]", 1 ,@block.show_most_liked != 0 %><BR> |
| 6 | <%= labelled_check_box _('Display most voted content'), "block[show_most_voted]", 1 ,@block.show_most_voted != 0 %><BR> | 6 | <%= labelled_check_box _('Display most voted content'), "block[show_most_voted]", 1 ,@block.show_most_voted != 0 %><BR> |
| 7 | <%= labelled_check_box _('Display most disliked content'), "block[show_most_disliked]", 1 , @block.show_most_disliked != 0 %><BR> | 7 | <%= labelled_check_box _('Display most disliked content'), "block[show_most_disliked]", 1 , @block.show_most_disliked != 0 %><BR> |
| 8 | -</div> | ||
| 9 | - | ||
| 10 | - | ||
| 11 | - | ||
| 12 | - | 8 | +</div> |
| 13 | \ No newline at end of file | 9 | \ No newline at end of file |