soaspec 0.0.35 → 0.0.36
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.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +10 -0
- data/ChangeLog +9 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +2 -1
- data/config/data/default.yml +40 -1
- data/lib/soaspec/accessors.rb +20 -2
- data/lib/soaspec/exchange.rb +4 -2
- data/lib/soaspec/exchange_handlers/exchange_handler.rb +14 -8
- data/lib/soaspec/soaspec_shared_examples.rb +3 -10
- data/lib/soaspec/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0877db6205f535e6fe2c1999d6fd43efc7c8c968'
|
4
|
+
data.tar.gz: cd409d133b72f33a343dcd2c6dae74e23bda9c00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cf6f5d024199e9a4518bb86054927f768e096ae34c9f9686b8c58a5d79163fe979dbb3fc01448c90c89a2d057399e00f0ac0ff012e7ac3564e27f9d45a5ecd4
|
7
|
+
data.tar.gz: 630e900ca4727d7f17bec11c0d947c12e1378f57acadbe67cfae4442425f69807ca2abdf1dede554d7cbf477861b97002a543f1283d3f6bb64cd66068f64fed6
|
data/.gitlab-ci.yml
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
before_script:
|
2
|
+
- apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
|
3
|
+
- ruby -v
|
4
|
+
- which ruby
|
5
|
+
- gem install bundler rake --no-ri --no-rdoc
|
6
|
+
- bundle install --jobs $(nproc) "${FLAGS[@]}"
|
7
|
+
|
8
|
+
rspec:
|
9
|
+
script:
|
10
|
+
- bundle exec rake spec
|
data/ChangeLog
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
Version 0.0.36 / 2018-3-15
|
2
|
+
* Bug fix
|
3
|
+
* Make test name log in correct place
|
4
|
+
* Enhancements
|
5
|
+
* Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
|
6
|
+
* Created 'store' method for handler through which one can store a value and use it later on it in the same context
|
7
|
+
* Deprecated
|
8
|
+
* Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
|
9
|
+
|
1
10
|
Version 0.0.35 / 2018-3-13
|
2
11
|
* Enhancements
|
3
12
|
* Handle array of JSON hashes starting with '['
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -3,9 +3,10 @@ require 'rspec/core/rake_task'
|
|
3
3
|
require 'rake/clean'
|
4
4
|
|
5
5
|
ENV['folder'] ||= ''
|
6
|
+
ENV['test'] ||= ''
|
6
7
|
|
7
8
|
RSpec::Core::RakeTask.new(:run_spec) do |t|
|
8
|
-
t.pattern = "spec/*/#{ENV['folder']}
|
9
|
+
t.pattern = "spec/*/#{ENV['folder']}*/#{ENV['test']}*_spec.rb"
|
9
10
|
end
|
10
11
|
|
11
12
|
desc 'Prepare log files'
|
data/config/data/default.yml
CHANGED
@@ -3,7 +3,7 @@ japan:
|
|
3
3
|
country_name: 'Japan'
|
4
4
|
|
5
5
|
pet:
|
6
|
-
id: '
|
6
|
+
id: '1122334400'
|
7
7
|
category:
|
8
8
|
id: '1'
|
9
9
|
name: 'string'
|
@@ -14,3 +14,42 @@ pet:
|
|
14
14
|
- id: '1'
|
15
15
|
name: 'string'
|
16
16
|
status: sold
|
17
|
+
|
18
|
+
pet1:
|
19
|
+
id: '123987'
|
20
|
+
category:
|
21
|
+
id: '1'
|
22
|
+
name: 'string'
|
23
|
+
name: 'new_puppy'
|
24
|
+
photoUrls:
|
25
|
+
- 'string'
|
26
|
+
tags:
|
27
|
+
- id: '1'
|
28
|
+
name: 'string'
|
29
|
+
status: available
|
30
|
+
|
31
|
+
pet2:
|
32
|
+
id: '9998772'
|
33
|
+
category:
|
34
|
+
id: '1'
|
35
|
+
name: 'string'
|
36
|
+
name: 'new_puppy'
|
37
|
+
photoUrls:
|
38
|
+
- 'string'
|
39
|
+
tags:
|
40
|
+
- id: '1'
|
41
|
+
name: 'string'
|
42
|
+
status: available
|
43
|
+
|
44
|
+
pet3:
|
45
|
+
id: '554678'
|
46
|
+
category:
|
47
|
+
id: '1'
|
48
|
+
name: 'string'
|
49
|
+
name: 'new_puppy'
|
50
|
+
photoUrls:
|
51
|
+
- 'string'
|
52
|
+
tags:
|
53
|
+
- id: '1'
|
54
|
+
name: 'string'
|
55
|
+
status: available
|
data/lib/soaspec/accessors.rb
CHANGED
@@ -3,11 +3,12 @@ module Soaspec
|
|
3
3
|
# Some are included in 'success scenarios' and to configure the request sent
|
4
4
|
module Accessors
|
5
5
|
|
6
|
-
# Defines expected_mandatory_elements method used in '
|
6
|
+
# Defines expected_mandatory_elements method used in 'success_scenario' shared examples
|
7
7
|
# to indicate certain elements must be present
|
8
|
-
# @param [Array] elements Array of symbols specifying expected element names for '
|
8
|
+
# @param [Array] elements Array of symbols specifying expected element names for 'success scenario' in snakecase
|
9
9
|
def mandatory_elements(elements)
|
10
10
|
define_method('expected_mandatory_elements') do
|
11
|
+
return [elements] if elements.is_a?(String) || elements.is_a?(Symbol)
|
11
12
|
elements
|
12
13
|
end
|
13
14
|
end
|
@@ -29,5 +30,22 @@ module Soaspec
|
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
33
|
+
# Defines mandatory json path value pairs to be included in 'success scenario' shared example
|
34
|
+
#
|
35
|
+
# @example Inside class
|
36
|
+
# mandatory_json_values '$..GetWeatherResult' => 'Found'
|
37
|
+
#
|
38
|
+
# In test
|
39
|
+
# describe Exchange(:name) do
|
40
|
+
# it_behaves_like 'success scenario' # Includes json pair validation
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
def mandatory_json_values(json_value_pairs)
|
44
|
+
raise ArgumentError('Hash of {jsonpath => expected values} expected ') unless json_value_pairs.is_a? Hash
|
45
|
+
define_method('expected_mandatory_json_values') do
|
46
|
+
json_value_pairs
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
32
50
|
end
|
33
51
|
end
|
data/lib/soaspec/exchange.rb
CHANGED
@@ -5,6 +5,8 @@ class Exchange
|
|
5
5
|
|
6
6
|
attr_reader :api_class
|
7
7
|
|
8
|
+
# @param [Symbol, String] name Name shown in RSpec run
|
9
|
+
# @param [Hash] override_parameters Parameters to override for default params
|
8
10
|
def initialize(name, override_parameters = {})
|
9
11
|
@test_name = name.to_s
|
10
12
|
@api_class = Soaspec::Environment.api_handler
|
@@ -13,6 +15,7 @@ class Exchange
|
|
13
15
|
|
14
16
|
# Make request to handler with parameters defined
|
15
17
|
def make_request
|
18
|
+
Soaspec::SpecLogger.add_to 'Example ' + @test_name
|
16
19
|
@api_class.make_request(@override_parameters)
|
17
20
|
end
|
18
21
|
|
@@ -20,7 +23,6 @@ class Exchange
|
|
20
23
|
# This will make the request and store the response
|
21
24
|
# @return [String] Name given when initializing
|
22
25
|
def to_s
|
23
|
-
Soaspec::SpecLogger.add_to 'Example ' + @test_name
|
24
26
|
@test_name
|
25
27
|
end
|
26
28
|
|
@@ -35,7 +37,7 @@ class Exchange
|
|
35
37
|
# Get status code from api class. This is http response for Web Api
|
36
38
|
# @return [Integer] Status code from api class
|
37
39
|
def status_code
|
38
|
-
@api_class.status_code_for(
|
40
|
+
@api_class.status_code_for(response)
|
39
41
|
end
|
40
42
|
|
41
43
|
# Extract value from path api class
|
@@ -35,21 +35,27 @@ module Soaspec
|
|
35
35
|
[]
|
36
36
|
end
|
37
37
|
|
38
|
-
#
|
39
|
-
|
40
|
-
|
38
|
+
# Change this through 'mandatory_xpath_values' method to specify xpath results that must be present in the response
|
39
|
+
# Will be used in 'success_scenarios' shared examples
|
40
|
+
# @return [Hash] Hash of 'xpath' => 'expected value' pairs
|
41
|
+
def expected_mandatory_xpath_values
|
42
|
+
{}
|
41
43
|
end
|
42
44
|
|
43
|
-
#
|
45
|
+
# Change this through 'mandatory_json_values' method to specify json results that must be present in the response
|
44
46
|
# Will be used in 'success_scenarios' shared examples
|
45
47
|
# @return [Hash] Hash of 'xpath' => 'expected value' pairs
|
46
|
-
def
|
48
|
+
def expected_mandatory_json_values
|
47
49
|
{}
|
48
50
|
end
|
49
51
|
|
50
|
-
#
|
51
|
-
|
52
|
-
|
52
|
+
# Stores a value in a method that can be accessed by the provided name
|
53
|
+
# @param [Symbol] name Name of method to use to access this value within handler
|
54
|
+
# @param [String] value Value to store
|
55
|
+
def store(name, value)
|
56
|
+
define_singleton_method(name.to_s) do
|
57
|
+
value
|
58
|
+
end
|
53
59
|
end
|
54
60
|
|
55
61
|
end
|
@@ -10,24 +10,17 @@ shared_examples_for 'success scenario' do
|
|
10
10
|
expect(described_class).to contain_key mandatory_element
|
11
11
|
end
|
12
12
|
end
|
13
|
-
# TODO: Remove this. Handle deprecated method temporarily
|
14
|
-
described_class.api_class.mandatory_elements.each do |mandatory_element|
|
15
|
-
puts "Overriding 'mandatory_elements' deprecated. Use new 'expected_mandatory_elements' instead of overriding this method"
|
16
|
-
it mandatory_element do
|
17
|
-
expect(described_class).to contain_key mandatory_element
|
18
|
-
end
|
19
|
-
end
|
20
13
|
end
|
21
14
|
described_class.api_class.expected_mandatory_xpath_values.each do |xpath, value|
|
22
15
|
it "has xpath '#{xpath}' equal to '#{value}'" do
|
23
16
|
expect(described_class).to have_xpath_value(xpath => value)
|
24
17
|
end
|
25
18
|
end
|
26
|
-
|
27
|
-
described_class.api_class.mandatory_xpath_values.each do |xpath, value|
|
28
|
-
puts "Overriding 'mandatory_elements' deprecated. Use new 'expected_mandatory_elements' instead of overriding this method"
|
19
|
+
described_class.api_class.expected_mandatory_json_values.each do |xpath, value|
|
29
20
|
it "has xpath '#{xpath}' equal to '#{value}'" do
|
30
21
|
expect(described_class).to have_xpath_value(xpath => value)
|
31
22
|
end
|
32
23
|
end
|
24
|
+
|
25
|
+
|
33
26
|
end
|
data/lib/soaspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soaspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.36
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SamuelGarrattIQA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -148,6 +148,7 @@ extensions: []
|
|
148
148
|
extra_rdoc_files: []
|
149
149
|
files:
|
150
150
|
- ".gitignore"
|
151
|
+
- ".gitlab-ci.yml"
|
151
152
|
- ".rspec"
|
152
153
|
- ".rubocop.yml"
|
153
154
|
- ".travis.yml"
|