Commit d99a6c2b297ca3ceda7837988ac2487a1553314d
1 parent
d4ebc3c3
Exists in
master
and in
5 other branches
Software Block provides option of public, generic and all softwares.
-Tests also added Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com> Signed-off-by: Parley Martins <parley@outlook.com>
Showing
6 changed files
with
99 additions
and
20 deletions
Show diff stats
| @@ -0,0 +1,48 @@ | @@ -0,0 +1,48 @@ | ||
| 1 | +Feature: edit adherent fields | ||
| 2 | + As a user | ||
| 3 | + I want to edit adherent fields | ||
| 4 | + to mantain my public software up to date. | ||
| 5 | + | ||
| 6 | + Background: | ||
| 7 | + Given "MpogSoftwarePlugin" plugin is enabled | ||
| 8 | + And I am logged in as mpog_admin | ||
| 9 | + And I go to /admin/plugins | ||
| 10 | + And I check "MpogSoftwarePlugin" | ||
| 11 | + And I press "Save changes" | ||
| 12 | + And the following softwares | ||
| 13 | + | name | public_software | | ||
| 14 | + | Public Software | true | | ||
| 15 | + | Generic Software | false | | ||
| 16 | + | ||
| 17 | + Scenario: Add software block | ||
| 18 | + Given I am logged in as mpog_admin | ||
| 19 | + And I follow "Control panel" | ||
| 20 | + And I follow "Edit sideboxes" | ||
| 21 | + When I follow "Add a block" | ||
| 22 | + And I choose "Softwares" | ||
| 23 | + And I press "Add" | ||
| 24 | + Then I should see "softwares" | ||
| 25 | + | ||
| 26 | + Scenario: Change software block to generic software block | ||
| 27 | + Given I am logged in as mpog_admin | ||
| 28 | + And I follow "Control panel" | ||
| 29 | + And I follow "Edit sideboxes" | ||
| 30 | + When I follow "Add a block" | ||
| 31 | + And I choose "Softwares" | ||
| 32 | + And I press "Add" | ||
| 33 | + And I follow "Edit" within ".softwares-block" | ||
| 34 | + And I select "Generic" from "block_software_type" | ||
| 35 | + And I press "Save" | ||
| 36 | + Then I should see "generic software" | ||
| 37 | + | ||
| 38 | + Scenario: Change software block to generic software block | ||
| 39 | + Given I am logged in as mpog_admin | ||
| 40 | + And I follow "Control panel" | ||
| 41 | + And I follow "Edit sideboxes" | ||
| 42 | + When I follow "Add a block" | ||
| 43 | + And I choose "Softwares" | ||
| 44 | + And I press "Add" | ||
| 45 | + And I follow "Edit" within ".softwares-block" | ||
| 46 | + And I select "Public" from "block_software_type" | ||
| 47 | + And I press "Save" | ||
| 48 | + Then I should see "public software" | ||
| 0 | \ No newline at end of file | 49 | \ No newline at end of file |
features/step_definitions/mpog_steps.rb
| @@ -105,21 +105,33 @@ end | @@ -105,21 +105,33 @@ end | ||
| 105 | 105 | ||
| 106 | Given /^the following softwares$/ do |table| | 106 | Given /^the following softwares$/ do |table| |
| 107 | table.hashes.each do |item| | 107 | table.hashes.each do |item| |
| 108 | - community = Community.create :name=>item[:name] | ||
| 109 | - programming_language = ProgrammingLanguage.where(:name=>item[:software_language]).first | ||
| 110 | - database_description = DatabaseDescription.where(:name=>item[:software_database]).first | ||
| 111 | - | ||
| 112 | - software_language = SoftwareLanguage.where(:programming_language_id=>programming_language).first | ||
| 113 | - software_database = SoftwareDatabase.where(:database_description_id=>database_description).first | ||
| 114 | - | ||
| 115 | - operating_system_name = OperatingSystemName.where(:name => item[:operating_system]).first | ||
| 116 | - operating_system = OperatingSystem.where(:operating_system_name_id => operating_system_name).first | ||
| 117 | - | ||
| 118 | - software_info = SoftwareInfo::new(:acronym=>item[:acronym], :operating_platform=>item[:operating_platform], :objectives => item[:objectives], :features => item[:features]) | ||
| 119 | - software_info.community = community | ||
| 120 | - software_info.software_languages << software_language | ||
| 121 | - software_info.software_databases << software_database | ||
| 122 | - software_info.operating_systems << operating_system | 108 | + software_info = SoftwareInfo.new |
| 109 | + software_info.community = Community.create(:name=>item[:name]) | ||
| 110 | + | ||
| 111 | + software_info.acronym = item[:acronym] if item[:acronym] | ||
| 112 | + software_info.acronym = item[:operating_platform] if item[:operating_platform] | ||
| 113 | + software_info.acronym = item[:objectives] if item[:objectives] | ||
| 114 | + software_info.acronym = item[:features] if item[:features] | ||
| 115 | + software_info.public_software = item[:public_software] == "true" if item[:public_software] | ||
| 116 | + | ||
| 117 | + if item[:software_language] | ||
| 118 | + programming_language = ProgrammingLanguage.where(:name=>item[:software_language]).first | ||
| 119 | + software_language = SoftwareLanguage.where(:programming_language_id=>programming_language).first | ||
| 120 | + software_info.software_languages << software_language | ||
| 121 | + end | ||
| 122 | + | ||
| 123 | + if item[:software_database] | ||
| 124 | + database_description = DatabaseDescription.where(:name=>item[:software_database]).first | ||
| 125 | + software_database = SoftwareDatabase.where(:database_description_id=>database_description).first | ||
| 126 | + software_info.software_databases << software_database | ||
| 127 | + end | ||
| 128 | + | ||
| 129 | + if item[:operating_system] | ||
| 130 | + operating_system_name = OperatingSystemName.where(:name => item[:operating_system]).first | ||
| 131 | + operating_system = OperatingSystem.where(:operating_system_name_id => operating_system_name).first | ||
| 132 | + software_info.operating_systems << operating_system | ||
| 133 | + end | ||
| 134 | + | ||
| 123 | software_info.save! | 135 | software_info.save! |
| 124 | end | 136 | end |
| 125 | end | 137 | end |
lib/softwares_block.rb
| 1 | class SoftwaresBlock < CommunitiesBlock | 1 | class SoftwaresBlock < CommunitiesBlock |
| 2 | 2 | ||
| 3 | - attr_accessible :accessor_id, :accessor_type, :role_id, :resource_id, :resource_type | 3 | + settings_items :software_type |
| 4 | + attr_accessible :accessor_id, :accessor_type, :role_id, :resource_id, :resource_type, :software_type | ||
| 4 | 5 | ||
| 5 | def self.description | 6 | def self.description |
| 6 | _('Softwares') | 7 | _('Softwares') |
| 7 | end | 8 | end |
| 8 | 9 | ||
| 9 | def default_title | 10 | def default_title |
| 10 | - n_('{#} software', '{#} softwares', profile_count) | 11 | + if self.software_type == "Generic" |
| 12 | + return n_('{#} generic software', '{#} generic softwares', profile_count) | ||
| 13 | + elsif self.software_type == "Public" | ||
| 14 | + return n_('{#} public software', '{#} public softwares', profile_count) | ||
| 15 | + else | ||
| 16 | + return n_('{#} software', '{#} softwares', profile_count) | ||
| 17 | + end | ||
| 11 | end | 18 | end |
| 12 | 19 | ||
| 13 | def help | 20 | def help |
| @@ -15,6 +22,7 @@ class SoftwaresBlock < CommunitiesBlock | @@ -15,6 +22,7 @@ class SoftwaresBlock < CommunitiesBlock | ||
| 15 | end | 22 | end |
| 16 | 23 | ||
| 17 | def footer | 24 | def footer |
| 25 | + self.software_type ||= "All" | ||
| 18 | owner = self.owner | 26 | owner = self.owner |
| 19 | case owner | 27 | case owner |
| 20 | when Profile | 28 | when Profile |
| @@ -51,9 +59,15 @@ class SoftwaresBlock < CommunitiesBlock | @@ -51,9 +59,15 @@ class SoftwaresBlock < CommunitiesBlock | ||
| 51 | 59 | ||
| 52 | list_with_software = [] | 60 | list_with_software = [] |
| 53 | 61 | ||
| 54 | - visible_profiles.each do |p| | ||
| 55 | - if p.class == Community and p.software? and !p.institution? | ||
| 56 | - list_with_software << p | 62 | + result.each do |profile| |
| 63 | + if profile.class == Community and profile.software? | ||
| 64 | + if self.software_type == "Public" | ||
| 65 | + list_with_software << profile if profile.software_info.public_software? | ||
| 66 | + elsif self.software_type == "Generic" | ||
| 67 | + list_with_software << profile if !profile.software_info.public_software? | ||
| 68 | + else | ||
| 69 | + list_with_software << profile | ||
| 70 | + end | ||
| 57 | end | 71 | end |
| 58 | end | 72 | end |
| 59 | 73 |