From 7e04a267cb03f4ded76935c9ca9b95b91c325b90 Mon Sep 17 00:00:00 2001 From: Aditya Prakash Date: Sun, 17 Apr 2016 11:32:06 +0530 Subject: [PATCH] Fix get_roles method of User model Previous implementation was associating resources with all the roles regardless of user role in the resource. ie: if user is cfp member of conf1, the method was returning: { organizer => conf1, cfp => conf1, Info Desk => conf1, Volunteers Coordinator => conf1 } --- app/helpers/application_helper.rb | 2 +- app/models/user.rb | 12 ++++++++---- spec/fixtures/test.txt | 1 - spec/helpers/application_helper_spec.rb | 10 ++++++++++ 4 files changed, 19 insertions(+), 6 deletions(-) delete mode 100644 spec/fixtures/test.txt create mode 100644 spec/helpers/application_helper_spec.rb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3fd34c53..149d5874 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -274,7 +274,7 @@ module ApplicationHelper # Outputs the roles of a user, including the conferences for which the user has the roles # Eg. organizer(oSC13, oSC14), cfp(oSC12, oSC13) def show_roles(roles) - roles.map { |x| x[0].titleize + ' ' + x[1] }.join ', ' + roles.map{ |x| x[0].titleize + ' (' + x[1].join(', ') + ')' }.join ', ' end def can_manage_volunteers(conference) diff --git a/app/models/user.rb b/app/models/user.rb index 3b282955..99eb8e98 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -117,12 +117,16 @@ class User < ActiveRecord::Base # Gets the roles of the user, groups them by role.name and returns the resource(s) of each role # ====Returns - # * +Hash+ * -> e.g. 'organizer' => "(conf1, conf2)" + # * +Hash+ * -> e.g. 'organizer' => [conf1, conf2] def get_roles result = {} - Role.all.find_each do |role| - resources = self.roles.map{ |myrole| Conference.find(myrole.resource_id).short_title }.join ', ' - result[role.name] = "(#{ resources })" unless resources.blank? + roles.each do |role| + resource = Conference.find(role.resource_id).short_title + if result[role.name].nil? + result[role.name] = [resource] + else + result[role.name] << resource + end end result end diff --git a/spec/fixtures/test.txt b/spec/fixtures/test.txt deleted file mode 100644 index 7dc5f421..00000000 --- a/spec/fixtures/test.txt +++ /dev/null @@ -1 +0,0 @@ -Lorem ipsum dolorem... \ No newline at end of file diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb new file mode 100644 index 00000000..fd302d85 --- /dev/null +++ b/spec/helpers/application_helper_spec.rb @@ -0,0 +1,10 @@ +require 'spec_helper' + +describe ApplicationHelper, type: :helper do + describe 'show_roles' do + it 'formats the hash passed' do + roles = { 'organizer' => ['oSC16', 'oSC15'], 'cfp' => ['oSC16'] } + expect(show_roles(roles)).to eq 'Organizer (oSC16, oSC15), Cfp (oSC16)' + end + end +end