From 9f2ce2c2c31d51844f5c593847a17fe15750fc86 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Fri, 20 Mar 2015 14:29:08 -0300 Subject: [PATCH] Proposal view refactor --- lib/proposals_discussion_plugin/proposal_helper.rb | 20 ++++++++++++++++++++ test/unit/proposal_helper_test.rb | 44 ++++++++++++++++++++++++++++++++++++++++++++ views/content_viewer/_proposal_card.html.erb | 25 ++++++++----------------- 3 files changed, 72 insertions(+), 17 deletions(-) create mode 100644 lib/proposals_discussion_plugin/proposal_helper.rb create mode 100644 test/unit/proposal_helper_test.rb diff --git a/lib/proposals_discussion_plugin/proposal_helper.rb b/lib/proposals_discussion_plugin/proposal_helper.rb new file mode 100644 index 0000000..7546ea7 --- /dev/null +++ b/lib/proposals_discussion_plugin/proposal_helper.rb @@ -0,0 +1,20 @@ +module ProposalsDiscussionPlugin::ProposalHelper + + def proposal_score(proposal) + return '' unless proposal.published? + normalized_score = proposal.normalized_score + pos = 26 * (normalized_score*4 - 1).round + content_tag 'span', ' ', :title => "#{normalized_score}", :style => "background-position-y: -#{pos}px" + end + + def proposal_locations(proposal) + proposal.locations.map do |location| + content_tag 'span', location.name, :class => "location" + end.join(', ') + end + + def proposal_tags(proposal) + proposal.tags.map { |t| link_to(t, :controller => 'profile', :profile => proposal.profile.identifier, :action => 'tags', :id => t.name ) }.join("\n") + end + +end diff --git a/test/unit/proposal_helper_test.rb b/test/unit/proposal_helper_test.rb new file mode 100644 index 0000000..ea74c6d --- /dev/null +++ b/test/unit/proposal_helper_test.rb @@ -0,0 +1,44 @@ +require_relative '../test_helper' + +class ProposalHelperTest < ActionView::TestCase + + def setup + @proposal = ProposalsDiscussionPlugin::Proposal.new(:name => 'test', :abstract => 'abstract') + end + + include ProposalsDiscussionPlugin::ProposalHelper + + attr_reader :proposal + + should 'display proposal score' do + proposal.expects(:normalized_score).returns(1) + assert proposal_score(proposal).present? + end + + should 'not display score for unpublished proposals' do + proposal.expects(:published?).returns(false) + assert proposal_score(proposal).blank? + end + + should 'display proposal locations' do + proposal.expects(:locations).returns([Region.new]) + assert proposal_locations(proposal).present? + end + + should 'return blank if a proposal has no locations' do + proposal.expects(:locations).returns([]) + assert proposal_locations(proposal).blank? + end + + should 'display proposal tags' do + proposal.expects(:tags).returns([ActsAsTaggableOn::Tag.new]) + proposal.expects(:profile).returns(fast_create(Profile)) + assert proposal_tags(proposal).present? + end + + should 'return blank if a proposal has no tags' do + proposal.expects(:tags).returns([]) + assert proposal_tags(proposal).blank? + end + +end diff --git a/views/content_viewer/_proposal_card.html.erb b/views/content_viewer/_proposal_card.html.erb index a6b1719..e0ed27d 100644 --- a/views/content_viewer/_proposal_card.html.erb +++ b/views/content_viewer/_proposal_card.html.erb @@ -1,3 +1,4 @@ +<% extend ProposalsDiscussionPlugin::ProposalHelper %>
<%= link_to_profile profile_image(proposal_card.author, :minor, :class => 'disable-zoom') + '
' + proposal_card.author.short_name, proposal_card.author.identifier, :class => 'profile-link' %> @@ -21,24 +22,14 @@ <%= proposal_card.abstract %>
- <% if proposal_card.published? %> - <% normalized_score = proposal_card.normalized_score %> - <% pos = 26 * (normalized_score*4 - 1).round %> -   - <% end %> + <%= proposal_score(proposal_card) %> +
+
+ <%= proposal_locations(proposal_card) %> +
+
+ <%= proposal_tags(proposal_card) %>
- <% if proposal_card.locations.present? %> -
- <% proposal_card.locations.each do |location| %> - <%= location.name %> - <% end %> -
- <% end %> - <% if !proposal_card.tags.empty? %> -
- <%= proposal_card.tags.map { |t| link_to(t, :controller => 'profile', :profile => @profile.identifier, :action => 'tags', :id => t.name ) }.join("\n") %> -
- <% end %>
<%= n_("%s comment", "%s comments", proposal_card.comments_count) % proposal_card.comments_count %>
-- libgit2 0.21.2