kalibro_gatekeeper_client 0.0.1.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +29 -0
  6. data/AUTHORS +4 -0
  7. data/COPYING +674 -0
  8. data/COPYING.LESSER +165 -0
  9. data/Gemfile +4 -0
  10. data/README.md +77 -0
  11. data/Rakefile +6 -0
  12. data/cucumber.yml +1 -0
  13. data/features/base_tool/all_names.feature +8 -0
  14. data/features/base_tool/find_by_name.feature +12 -0
  15. data/features/configuration/all.feature +10 -0
  16. data/features/metric_configuration/find.feature +18 -0
  17. data/features/metric_configuration/metric_configurations_of.feature +18 -0
  18. data/features/metric_result/descendant_results.feature +19 -0
  19. data/features/metric_result/history_of.feature +20 -0
  20. data/features/metric_result/metric_results_of.feature +19 -0
  21. data/features/module_result/children.feature +18 -0
  22. data/features/module_result/find.feature +15 -0
  23. data/features/module_result/history_of.feature +11 -0
  24. data/features/processing/first_processing_after.feature +18 -0
  25. data/features/processing/first_processing_of.feature +18 -0
  26. data/features/processing/has_processing.feature +18 -0
  27. data/features/processing/has_processing_after.feature +18 -0
  28. data/features/processing/has_processing_before.feature +18 -0
  29. data/features/processing/has_ready_processing.feature +18 -0
  30. data/features/processing/last_processing_before.feature +18 -0
  31. data/features/processing/last_processing_of.feature +18 -0
  32. data/features/processing/last_processing_state_of.feature +18 -0
  33. data/features/processing/last_ready_processing_of.feature +18 -0
  34. data/features/processing/processing_of.feature +32 -0
  35. data/features/processing/processing_with_date_of.feature +32 -0
  36. data/features/project/all.feature +10 -0
  37. data/features/project/creation.feature +9 -0
  38. data/features/project/destroy.feature +10 -0
  39. data/features/project/exists.feature +9 -0
  40. data/features/project/find.feature +10 -0
  41. data/features/range/all.feature +14 -0
  42. data/features/range/exists.feature +13 -0
  43. data/features/range/find.feature +14 -0
  44. data/features/range/ranges_of.feature +22 -0
  45. data/features/range/save.feature +14 -0
  46. data/features/reading/all.feature +13 -0
  47. data/features/reading/exists.feature +13 -0
  48. data/features/reading/find.feature +11 -0
  49. data/features/reading/readings_of.feature +11 -0
  50. data/features/reading_group/all.feature +10 -0
  51. data/features/repository/all.feature +14 -0
  52. data/features/repository/cancel_processing.feature +14 -0
  53. data/features/repository/exists.feature +14 -0
  54. data/features/repository/find.feature +14 -0
  55. data/features/repository/of.feature +15 -0
  56. data/features/repository/process.feature +16 -0
  57. data/features/repository/types.feature +9 -0
  58. data/features/step_definitions/base_tool_steps.rb +28 -0
  59. data/features/step_definitions/configuration_steps.rb +11 -0
  60. data/features/step_definitions/metric_configuration_steps.rb +52 -0
  61. data/features/step_definitions/metric_result_steps.rb +29 -0
  62. data/features/step_definitions/metric_steps.rb +3 -0
  63. data/features/step_definitions/module_result_steps.rb +30 -0
  64. data/features/step_definitions/processing_steps.rb +91 -0
  65. data/features/step_definitions/project_steps.rb +48 -0
  66. data/features/step_definitions/range_steps.rb +68 -0
  67. data/features/step_definitions/reading_group_steps.rb +19 -0
  68. data/features/step_definitions/reading_steps.rb +39 -0
  69. data/features/step_definitions/repository_steps.rb +61 -0
  70. data/features/support/env.rb +25 -0
  71. data/features/support/kalibro_cucumber_helpers.yml.sample +10 -0
  72. data/kalibro_gatekeeper_client.gemspec +49 -0
  73. data/lib/kalibro_gatekeeper_client/entities/base_tool.rb +55 -0
  74. data/lib/kalibro_gatekeeper_client/entities/configuration.rb +34 -0
  75. data/lib/kalibro_gatekeeper_client/entities/date_metric_result.rb +39 -0
  76. data/lib/kalibro_gatekeeper_client/entities/date_module_result.rb +39 -0
  77. data/lib/kalibro_gatekeeper_client/entities/metric.rb +21 -0
  78. data/lib/kalibro_gatekeeper_client/entities/metric_configuration.rb +76 -0
  79. data/lib/kalibro_gatekeeper_client/entities/metric_configuration_snapshot.rb +57 -0
  80. data/lib/kalibro_gatekeeper_client/entities/metric_result.rb +72 -0
  81. data/lib/kalibro_gatekeeper_client/entities/model.rb +174 -0
  82. data/lib/kalibro_gatekeeper_client/entities/module.rb +27 -0
  83. data/lib/kalibro_gatekeeper_client/entities/module_result.rb +75 -0
  84. data/lib/kalibro_gatekeeper_client/entities/process_time.rb +31 -0
  85. data/lib/kalibro_gatekeeper_client/entities/processing.rb +113 -0
  86. data/lib/kalibro_gatekeeper_client/entities/project.rb +35 -0
  87. data/lib/kalibro_gatekeeper_client/entities/range.rb +100 -0
  88. data/lib/kalibro_gatekeeper_client/entities/range_snapshot.rb +37 -0
  89. data/lib/kalibro_gatekeeper_client/entities/reading.rb +67 -0
  90. data/lib/kalibro_gatekeeper_client/entities/reading_group.rb +44 -0
  91. data/lib/kalibro_gatekeeper_client/entities/repository.rb +89 -0
  92. data/lib/kalibro_gatekeeper_client/entities/repository_observer.rb +50 -0
  93. data/lib/kalibro_gatekeeper_client/entities/stack_trace_element.rb +31 -0
  94. data/lib/kalibro_gatekeeper_client/entities/throwable.rb +42 -0
  95. data/lib/kalibro_gatekeeper_client/entities.rb +37 -0
  96. data/lib/kalibro_gatekeeper_client/errors/record_not_found.rb +22 -0
  97. data/lib/kalibro_gatekeeper_client/errors/standard.rb +24 -0
  98. data/lib/kalibro_gatekeeper_client/errors.rb +18 -0
  99. data/lib/kalibro_gatekeeper_client/helpers/aggregation_options.rb +25 -0
  100. data/lib/kalibro_gatekeeper_client/helpers/hash_converters.rb +48 -0
  101. data/lib/kalibro_gatekeeper_client/helpers/request_methods.rb +47 -0
  102. data/lib/kalibro_gatekeeper_client/helpers/xml_converters.rb +20 -0
  103. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers/configuration.rb +39 -0
  104. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers/hooks.rb +56 -0
  105. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers/scripts/delete_all_kalibro_entries.sh +23 -0
  106. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers/scripts/prepare_kalibro_query_file.sh +38 -0
  107. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers/scripts/put_kalibro_on_test_mode.sh +39 -0
  108. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers/scripts/return_kalibro_from_test_mode.sh +26 -0
  109. data/lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers.rb +40 -0
  110. data/lib/kalibro_gatekeeper_client/version.rb +19 -0
  111. data/lib/kalibro_gatekeeper_client.rb +61 -0
  112. data/lib/rake/test_task.rb +57 -0
  113. data/spec/entities/base_tool_spec.rb +168 -0
  114. data/spec/entities/configuration_spec.rb +61 -0
  115. data/spec/entities/date_metric_result_spec.rb +62 -0
  116. data/spec/entities/date_module_result_spec.rb +61 -0
  117. data/spec/entities/metric_configuration_snapshot_spec.rb +107 -0
  118. data/spec/entities/metric_configuration_spec.rb +173 -0
  119. data/spec/entities/metric_result_spec.rb +188 -0
  120. data/spec/entities/metric_spec.rb +47 -0
  121. data/spec/entities/model_spec.rb +322 -0
  122. data/spec/entities/module_result_spec.rb +163 -0
  123. data/spec/entities/process_time_spec.rb +33 -0
  124. data/spec/entities/processing_spec.rb +334 -0
  125. data/spec/entities/project_spec.rb +68 -0
  126. data/spec/entities/range_snapshot_spec.rb +50 -0
  127. data/spec/entities/range_spec.rb +225 -0
  128. data/spec/entities/reading_group_spec.rb +90 -0
  129. data/spec/entities/reading_spec.rb +148 -0
  130. data/spec/entities/repository_observer_spec.rb +123 -0
  131. data/spec/entities/repository_spec.rb +191 -0
  132. data/spec/entities/stack_trace_element_spec.rb +26 -0
  133. data/spec/entities/throwable_spec.rb +51 -0
  134. data/spec/factories/base_tools.rb +31 -0
  135. data/spec/factories/configurations.rb +29 -0
  136. data/spec/factories/date_metric_results.rb +28 -0
  137. data/spec/factories/date_module_results.rb +22 -0
  138. data/spec/factories/metric_configurations.rb +28 -0
  139. data/spec/factories/metric_configurations_snapshot.rb +26 -0
  140. data/spec/factories/metric_results.rb +24 -0
  141. data/spec/factories/metrics.rb +35 -0
  142. data/spec/factories/models.rb +20 -0
  143. data/spec/factories/module_results.rb +33 -0
  144. data/spec/factories/modules.rb +22 -0
  145. data/spec/factories/process_times.rb +27 -0
  146. data/spec/factories/processings.rb +25 -0
  147. data/spec/factories/projects.rb +29 -0
  148. data/spec/factories/ranges.rb +35 -0
  149. data/spec/factories/ranges_snapshot.rb +26 -0
  150. data/spec/factories/reading_groups.rb +23 -0
  151. data/spec/factories/readings.rb +25 -0
  152. data/spec/factories/repositories.rb +34 -0
  153. data/spec/factories/repository_observers.rb +24 -0
  154. data/spec/factories/stack_trace_elements.rb +24 -0
  155. data/spec/factories/throwables.rb +23 -0
  156. data/spec/helpers/aggregation_options_spec.rb +31 -0
  157. data/spec/helpers/hash_converters_spec.rb +111 -0
  158. data/spec/helpers/xml_converters_spec.rb +64 -0
  159. data/spec/kalibro_entities_spec.rb +108 -0
  160. data/spec/savon/fixtures/config.yml +1 -0
  161. data/spec/savon/fixtures/invalid_config.yml +2 -0
  162. data/spec/savon/fixtures/project/does_not_exists.xml +1 -0
  163. data/spec/savon/savon_test_helper.rb +14 -0
  164. data/spec/spec_helper.rb +56 -0
  165. metadata +466 -0
@@ -0,0 +1,48 @@
1
+ Given(/^I have a project$/) do
2
+ @project = FactoryGirl.build(:project)
3
+ end
4
+
5
+ Given(/^the project name is "(.*?)"$/) do |name|
6
+ @project.name = name
7
+ end
8
+
9
+ Given(/^I have a project with name "(.*?)"$/) do |name|
10
+ @project = FactoryGirl.create(:project, {name: name, id: nil})
11
+ end
12
+
13
+ When(/^I save the project$/) do
14
+ @project.save
15
+ end
16
+
17
+ When(/^I create the project with name "(.*?)"$/) do |name|
18
+ @project = FactoryGirl.create(:project, {name: name, id: nil})
19
+ end
20
+
21
+ When(/^I search a project with the same id of the given project$/) do
22
+ @found_project = KalibroGatekeeperClient::Entities::Project.find(@project.id)
23
+ end
24
+
25
+ When(/^I destroy the project with the same id of the given project$/) do
26
+ @found_project = KalibroGatekeeperClient::Entities::Project.find(@project.id)
27
+ @found_project.destroy
28
+ end
29
+
30
+ When(/^I ask for all the projects$/) do
31
+ @all_projects = KalibroGatekeeperClient::Entities::Project.all
32
+ end
33
+
34
+ Then(/^the project should exist$/) do
35
+ KalibroGatekeeperClient::Entities::Project.exists?(@project.id)
36
+ end
37
+
38
+ Then(/^it should return the same project as the given one$/) do
39
+ @found_project == @project
40
+ end
41
+
42
+ Then(/^the project should not exist$/) do
43
+ !KalibroGatekeeperClient::Entities::Project.exists?(@found_project.id)
44
+ end
45
+
46
+ Then(/^I should get a list with the given project$/) do
47
+ @all_projects.include?(@project)
48
+ end
@@ -0,0 +1,68 @@
1
+ Given(/^I have a range within the given reading$/) do
2
+ @range = FactoryGirl.build(:range, {id: nil, reading_id: @reading.id, metric_configuration_id: @metric_configuration.id})
3
+ @range.save
4
+ end
5
+
6
+ Given(/^I have an unsaved range$/) do
7
+ @range = FactoryGirl.build(:range, {id: nil})
8
+ end
9
+
10
+ Given(/^I have an unsaved range within the given reading$/) do
11
+ @range = FactoryGirl.build(:range, {id: nil, reading_id: @reading.id, metric_configuration_id: @metric_configuration.id})
12
+ end
13
+
14
+ When(/^I ask to save the given range$/) do
15
+ @range.save
16
+ end
17
+
18
+ When(/^I ask to save the given range with an inexistent metric configuration$/) do
19
+ @range.metric_configuration_id = rand(Time.now.to_i)
20
+ @range.save
21
+ end
22
+
23
+ When(/^I ask ranges of the given metric configuration$/) do
24
+ @response = KalibroGatekeeperClient::Entities::Range.ranges_of @metric_configuration.id
25
+ end
26
+
27
+ When(/^I try to save a range with an inexistent metric configuration$/) do
28
+ @range = FactoryGirl.build(:range, {id: nil, reading_id: @reading.id})
29
+ @range.metric_configuration_id = rand(Time.now.to_i)
30
+ @range.save
31
+ end
32
+
33
+ When(/^I ask for all the ranges$/) do
34
+ @response = KalibroGatekeeperClient::Entities::Range.all
35
+ end
36
+
37
+ When(/^I search a range with the same id of the given range$/) do
38
+ @found_range = KalibroGatekeeperClient::Entities::Range.find(@range.id.to_i)
39
+ end
40
+
41
+ Then(/^I should get an empty list$/) do
42
+ @response.should eq([])
43
+ end
44
+
45
+ Then(/^I should not get an empty list$/) do
46
+ @response.should_not eq([])
47
+ end
48
+
49
+ Then(/^I should get a list with the given range$/) do
50
+ @response.size.should eq(1)
51
+ @response.first.comments.should eq(@range.comments)
52
+ end
53
+
54
+ Then(/^I should get an error in range kalibro errors attribute$/) do
55
+ @range.kalibro_errors.should_not eq([])
56
+ end
57
+
58
+ Then(/^the id of the given range should be set$/) do
59
+ @range.id.should_not eq(0)
60
+ end
61
+
62
+ Then(/^it should return the same range as the given one$/) do
63
+ @found_range == @range
64
+ end
65
+
66
+ Then(/^the range should exist$/) do
67
+ KalibroGatekeeperClient::Entities::Range.exists?(@range.id)
68
+ end
@@ -0,0 +1,19 @@
1
+ Given(/^I have a reading group with name "(.*?)"$/) do |name|
2
+ @reading_group = FactoryGirl.create(:reading_group, {id: nil, name: name})
3
+ end
4
+
5
+ When(/^I ask for all the reading groups$/) do
6
+ @all_reading_groups = KalibroGatekeeperClient::Entities::ReadingGroup.all
7
+ end
8
+
9
+ When(/^I call the reading_group_of method for the given MetricConfiguration$/) do
10
+ @metric_configuration_reading_group = KalibroGatekeeperClient::Entities::ReadingGroup.reading_group_of(@metric_configuration.id)
11
+ end
12
+
13
+ Then(/^I should get a list with the given reading group$/) do
14
+ @all_reading_groups.include?(@reading_group)
15
+ end
16
+
17
+ Then(/^I should get the given RedingGroup$/) do
18
+ @metric_configuration_reading_group.should eq(@reading_group)
19
+ end
@@ -0,0 +1,39 @@
1
+ Given(/^the given reading group has the following readings:$/) do |table|
2
+ hash = table.hashes.first
3
+ hash[:group_id] = @reading_group.id
4
+ hash[:id] = nil
5
+
6
+ @reading = FactoryGirl.create(:reading, hash)
7
+ end
8
+
9
+ Given(/^I have a reading within the given reading group$/) do
10
+ @reading = FactoryGirl.create(:reading, {id: nil, group_id: @reading_group.id})
11
+ end
12
+
13
+ When(/^I ask for all the readings$/) do
14
+ @all_readings = KalibroGatekeeperClient::Entities::Reading.all
15
+ end
16
+
17
+ When(/^I ask for a reading with the same id of the given reading$/) do
18
+ @found_reading = KalibroGatekeeperClient::Entities::Reading.find @reading.id
19
+ end
20
+
21
+ When(/^I ask for the readings of the given reading group$/) do
22
+ @found_readings = KalibroGatekeeperClient::Entities::Reading.readings_of @reading_group.id
23
+ end
24
+
25
+ When(/^I ask to check if the given reading exists$/) do
26
+ @response = KalibroGatekeeperClient::Entities::Reading.exists?(@reading.id)
27
+ end
28
+
29
+ Then(/^I should get the given reading$/) do
30
+ @found_reading == @reading
31
+ end
32
+
33
+ Then(/^I should get a list with the given reading$/) do
34
+ @found_readings.first == @reading
35
+ end
36
+
37
+ Then(/^the response should contain the given reading$/) do
38
+ @all_readings.first == @reading
39
+ end
@@ -0,0 +1,61 @@
1
+ Given(/^the given project has the following Repositories:$/) do |table|
2
+ hash = table.hashes.first
3
+ hash[:project_id] = @project.id
4
+ hash[:configuration_id] = @configuration.id
5
+ hash[:id] = nil
6
+
7
+ @repository = FactoryGirl.create(:repository, hash)
8
+ end
9
+
10
+ When(/^I call the cancel_process method for the given repository$/) do
11
+ @response = @repository.cancel_processing_of_repository
12
+ end
13
+
14
+ When(/^I ask for repositories from the given project$/) do
15
+ @response = KalibroGatekeeperClient::Entities::Repository.repositories_of(@project.id)
16
+ end
17
+
18
+ When(/^I call the process method for the given repository$/) do
19
+ @response = @repository.process
20
+ end
21
+
22
+ When(/^I list types$/) do
23
+ @repository_types = KalibroGatekeeperClient::Entities::Repository.repository_types
24
+ end
25
+
26
+ When(/^I ask for all the repositories$/) do
27
+ @response = KalibroGatekeeperClient::Entities::Repository.all
28
+ end
29
+
30
+ When(/^I ask to find the given repository$/) do
31
+ @response = KalibroGatekeeperClient::Entities::Repository.find(@repository.id)
32
+ end
33
+
34
+ When(/^I ask to check if the given repository exists$/) do
35
+ @response = KalibroGatekeeperClient::Entities::Repository.exists?(@repository.id)
36
+ end
37
+
38
+ Then(/^I should get success$/) do
39
+ @response == true
40
+ end
41
+
42
+ Then(/^I should get a list with the given repository$/) do
43
+ @response.should include(@repository)
44
+ end
45
+
46
+ Then(/^I should get an array of types$/) do
47
+ @repository_types.is_a?(Array)
48
+ @repository_types.count >= 1
49
+ end
50
+
51
+ Then(/^I should get the given repository$/) do
52
+ @response.should eq(@repository)
53
+ end
54
+
55
+ Then(/^the response should contain the given repository$/) do
56
+ @response.first.project_id.should eq(@project.id)
57
+ end
58
+
59
+ Then(/^the repositories should contain the project id$/) do
60
+ @response.first.project_id.should eq(@project.id)
61
+ end
@@ -0,0 +1,25 @@
1
+ # SimpleCov for test coverage report
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_group "Entities", "lib/kalibro_gatekeeper_client/entities"
5
+ add_group "Errors", "lib/kalibro_gatekeeper_client/errors"
6
+ add_group "Helpers", "lib/kalibro_gatekeeper_client/helpers"
7
+ add_group "Cucumber Helpers", "lib/kalibro_gatekeeper_client/kalibro_cucumber_helpers"
8
+
9
+ add_filter "/spec/"
10
+ add_filter "/features/"
11
+
12
+ coverage_dir 'coverage/cucumber'
13
+ end
14
+
15
+ # Kalibro hooks
16
+ require 'kalibro_gatekeeper_client/kalibro_cucumber_helpers/hooks'
17
+
18
+ # Configuring the right hooks
19
+ KalibroGatekeeperClient::KalibroCucumberHelpers.configure_from_yml("#{__dir__}/kalibro_cucumber_helpers.yml")
20
+
21
+ # The gem itself
22
+ require 'kalibro_gatekeeper_client'
23
+
24
+ require 'factory_girl'
25
+ FactoryGirl.find_definitions
@@ -0,0 +1,10 @@
1
+ kalibro_cucumber_helpers:
2
+ database: "kalibro_test"
3
+ user: "kalibro"
4
+ password: "kalibro"
5
+ psql_file_path: "/tmp/PostgreSQL.sql"
6
+ query_file_path: "/tmp/query"
7
+ kalibro_home: "/usr/share/tomcat6/.kalibro"
8
+ tomcat_user: "tomcat6"
9
+ tomcat_group: "tomcat6"
10
+ tomcat_restart_command: "sudo\\ service\\ tomcat6\\ restart"
@@ -0,0 +1,49 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ # coding: utf-8
18
+ lib = File.expand_path('../lib', __FILE__)
19
+
20
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
21
+ require 'kalibro_gatekeeper_client/version'
22
+
23
+ Gem::Specification.new do |spec|
24
+ spec.name = "kalibro_gatekeeper_client"
25
+ spec.version = KalibroGatekeeperClient::VERSION
26
+ spec.authors = ["Diego Araújo Martinez", "Fellipe Souto", "Rafael Reggiani Manzo", "Renan Fichberg"]
27
+ spec.email = ["diegamc90@gmail.com", "fllsouto@gmail.com", "rr.manzo@gmail.com", "rfichberg@gmail.com"]
28
+ spec.description = "KalibroGatekeeperClient is a Ruby gem intended to be an interface for KalibroGatekeeper WebService."
29
+ spec.summary = "KalibroGatekeeperClient is a communication interface with the KalibroGateKeeper service."
30
+ spec.homepage = "https://github.com/mezuro/kalibro_gatekeeper_client"
31
+ spec.license = "LGPLv3"
32
+
33
+ spec.files = `git ls-files`.split($/)
34
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
35
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
36
+ spec.require_paths = ["lib"]
37
+
38
+ spec.add_development_dependency "bundler", "~> 1.3"
39
+ spec.add_development_dependency "rake"
40
+ spec.add_development_dependency "rspec", "~> 2.14"
41
+ spec.add_development_dependency "cucumber", "~> 1.3.11"
42
+ spec.add_development_dependency "mocha", "~> 1.0.0"
43
+ spec.add_development_dependency "simplecov"
44
+ spec.add_development_dependency "factory_girl", "~> 4.4.0"
45
+ spec.add_development_dependency 'coveralls'
46
+
47
+ spec.add_dependency "activesupport", ">= 2.2.1" #version in which underscore was introduced
48
+ spec.add_dependency "faraday_middleware", "~> 0.9.0"
49
+ end
@@ -0,0 +1,55 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require "kalibro_gatekeeper_client/entities/model"
18
+
19
+ module KalibroGatekeeperClient
20
+ module Entities
21
+ class BaseTool < Model
22
+ attr_accessor :name, :description, :collector_class_name, :supported_metric
23
+
24
+ def supported_metric=(value)
25
+ @supported_metric = KalibroGatekeeperClient::Entities::Metric.to_objects_array value
26
+ end
27
+
28
+ def supported_metrics
29
+ @supported_metric
30
+ end
31
+
32
+ def metric(name)
33
+ supported_metrics.find {|metric| metric.name == name}
34
+ end
35
+
36
+ def self.find_by_name(base_tool_name)
37
+ begin
38
+ new request(:get, {name: base_tool_name})
39
+ rescue
40
+ raise KalibroGatekeeperClient::Errors::RecordNotFound
41
+ end
42
+ end
43
+
44
+ def self.all_names
45
+ # FIXME: for some reason, the JSON is not getting automatically parsed
46
+ JSON.parse(request(:all_names, {}, :get))['base_tool_names'].to_a
47
+ end
48
+
49
+ def self.all
50
+ base_tools = all_names
51
+ base_tools.map{ |name| find_by_name(name) }
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,34 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require "kalibro_gatekeeper_client/entities/model"
18
+
19
+ module KalibroGatekeeperClient
20
+ module Entities
21
+ class Configuration < Model
22
+ attr_accessor :id, :name, :description
23
+
24
+ def id=(value)
25
+ @id = value.to_i
26
+ end
27
+
28
+ def self.all
29
+ # FIXME: for some reason, the JSON is not getting automatically parsed
30
+ create_objects_array_from_hash(JSON.parse(request(:all, {}, :get))['configurations'])
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require "kalibro_gatekeeper_client/entities/model"
18
+
19
+ module KalibroGatekeeperClient
20
+ module Entities
21
+ class DateMetricResult < Model
22
+
23
+ attr_accessor :date, :metric_result
24
+
25
+ def date=(value)
26
+ @date = value.is_a?(String) ? DateTime.parse(value) : value
27
+ end
28
+
29
+ def metric_result=(value)
30
+ @metric_result = KalibroGatekeeperClient::Entities::MetricResult.to_object value
31
+ end
32
+
33
+ def result
34
+ @metric_result.value
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require "kalibro_gatekeeper_client/entities/model"
18
+
19
+ module KalibroGatekeeperClient
20
+ module Entities
21
+ class DateModuleResult < Model
22
+
23
+ attr_accessor :date, :module_result
24
+
25
+ def date=(value)
26
+ @date = value.is_a?(String) ? DateTime.parse(value) : value
27
+ end
28
+
29
+ def module_result=(value)
30
+ @module_result = KalibroGatekeeperClient::Entities::ModuleResult.to_object value
31
+ end
32
+
33
+ def result
34
+ @module_result.grade
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,21 @@
1
+ module KalibroGatekeeperClient
2
+ module Entities
3
+ class Metric < Model
4
+
5
+ attr_accessor :name, :compound, :scope, :description, :script, :language
6
+
7
+ def languages
8
+ @language
9
+ end
10
+
11
+ def languages=(languages)
12
+ @language = languages
13
+ end
14
+
15
+ def language=(value)
16
+ @language = self.class.to_objects_array value
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,76 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require "kalibro_gatekeeper_client/entities/model"
18
+
19
+ module KalibroGatekeeperClient
20
+ module Entities
21
+ class MetricConfiguration < Model
22
+
23
+ attr_accessor :id, :code, :metric, :base_tool_name, :weight, :aggregation_form, :reading_group_id, :configuration_id
24
+
25
+ def id=(value)
26
+ @id = value.to_i
27
+ end
28
+
29
+ def reading_group_id=(value)
30
+ @reading_group_id = value.to_i
31
+ end
32
+
33
+ def metric=(value)
34
+ @metric = KalibroGatekeeperClient::Entities::Metric.to_object(value)
35
+ end
36
+
37
+ def weight=(value)
38
+ @weight = value.to_f
39
+ end
40
+
41
+ def update_attributes(attributes={})
42
+ attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) }
43
+ save
44
+ end
45
+
46
+ def to_hash
47
+ super :except => [:configuration_id]
48
+ end
49
+
50
+ def self.metric_configurations_of(configuration_id)
51
+ create_objects_array_from_hash request(:of, {:configuration_id => configuration_id})['metric_configurations']
52
+ end
53
+
54
+ def self.find(id)
55
+ #TODO: on future versions of Kalibro this begin/rescue will be unnecessary
56
+ metric_configuration = request(:get, {id: id})
57
+ raise KalibroGatekeeperClient::Errors::RecordNotFound unless metric_configuration['error'].nil?
58
+ return new(metric_configuration)
59
+ end
60
+
61
+ def self.exists?(id)
62
+ begin
63
+ return true unless find(id).nil?
64
+ rescue KalibroGatekeeperClient::Errors::RecordNotFound
65
+ return false
66
+ end
67
+ end
68
+
69
+ private
70
+
71
+ def save_params
72
+ {:metric_configuration => self.to_hash, :configuration_id => self.configuration_id}
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,57 @@
1
+ # This file is part of KalibroGatekeeperClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require "kalibro_gatekeeper_client/entities/model"
18
+
19
+ module KalibroGatekeeperClient
20
+ module Entities
21
+ class MetricConfigurationSnapshot < Model
22
+ attr_accessor :code, :weight, :aggregation_form, :metric, :base_tool_name, :range
23
+
24
+ def weight=(value)
25
+ @weight = value.to_f
26
+ end
27
+
28
+ def metric=(value)
29
+ if value.kind_of?(Hash)
30
+ @metric = KalibroGatekeeperClient::Entities::Metric.to_object(value)
31
+ else
32
+ @metric = value
33
+ end
34
+ end
35
+
36
+ def range=(value)
37
+ value = [value] unless value.kind_of?(Array)
38
+ @range = []
39
+
40
+ value.each do |range_snapshot|
41
+ @range << KalibroGatekeeperClient::Entities::RangeSnapshot.to_object(range_snapshot)
42
+ end
43
+ end
44
+
45
+ def range_snapshot
46
+ range
47
+ end
48
+
49
+ def to_hash
50
+ hash = super
51
+ hash[:attributes!][:range] = {'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance',
52
+ 'xsi:type' => 'kalibro:rangeSnapshotXml' }
53
+ hash
54
+ end
55
+ end
56
+ end
57
+ end