Commit d99a6c2b297ca3ceda7837988ac2487a1553314d
1 parent
d4ebc3c3
Exists in
master
and in
79 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 |