diff options
-rw-r--r-- | app/helpers/issues_helper.rb | 6 | ||||
-rw-r--r-- | spec/helpers/issues_helper_spec.rb | 18 |
2 files changed, 19 insertions, 5 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 15f08fd5918..e8081d452c4 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -114,10 +114,14 @@ module IssuesHelper end def award_user_list(awards, current_user) - names = awards.first(10).map do |award| + names = awards.map do |award| award.user == current_user ? 'me' : award.user.name end + # Take first 9 OR current user + first 9 + current_user_name = names.delete('me') + names = names.first(9).insert(0, current_user_name).compact + names << "and #{awards.size - names.size} more." if awards.size > names.size names.join(', ') diff --git a/spec/helpers/issues_helper_spec.rb b/spec/helpers/issues_helper_spec.rb index 86955329124..c4281f8f591 100644 --- a/spec/helpers/issues_helper_spec.rb +++ b/spec/helpers/issues_helper_spec.rb @@ -65,16 +65,26 @@ describe IssuesHelper do describe '#award_user_list' do let!(:awards) { build_list(:award_emoji, 15) } - it "returns a comma seperated list of 1-10 users" do - expect(award_user_list(awards.first(10), nil)).to eq(awards.first(10).map { |a| a.user.name }.join(', ')) + it "returns a comma seperated list of 1-9 users" do + expect(award_user_list(awards.first(9), nil)).to eq(awards.first(9).map { |a| a.user.name }.join(', ')) end it "displays the current user's name as 'me'" do expect(award_user_list(awards.first(1), awards[0].user)).to eq('me') end - it "truncates lists of larger than 10 users" do - expect(award_user_list(awards, nil)).to eq(awards.first(10).map { |a| a.user.name }.join(', ') + ", and 5 more.") + it "truncates lists of larger than 9 users" do + expect(award_user_list(awards, nil)).to eq(awards.first(9).map { |a| a.user.name }.join(', ') + ", and 6 more.") + end + + it "displays the current user in front of 0-9 other users" do + expect(award_user_list(awards, awards[0].user)). + to eq("me, " + awards[1..9].map { |a| a.user.name }.join(', ') + ", and 5 more.") + end + + it "displays the current user in front regardless of position in the list" do + expect(award_user_list(awards, awards[12].user)). + to eq("me, " + awards[0..8].map { |a| a.user.name }.join(', ') + ", and 5 more.") end end |