alinta-cucumber-rest-bdd 0.5.18 → 0.5.19
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 +5 -5
- data/lib/cucumber-rest-bdd/steps/response.rb +4 -2
- data/lib/cucumber-rest-bdd/types.rb +26 -12
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 27c980d29ee35952fbc7bc96f4795dc0af56e31c
|
4
|
+
data.tar.gz: cbe202b5007ade6def21773d8a2bd6ed1ac838a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be9194bbf9479cb44f9b1cd3ee6ebe610fbd23c5ec049d69ee80677245414ee23e7be667cee6d65edbeadcf1275cf34e54ef79de37e638f8e932293b00cd82fb
|
7
|
+
data.tar.gz: 2e7c5f36fa32a8cda7e3dcacf0f132cfc9968c9b23f96e63f73bcf1058a1afaa693db70d9eaf695fc623eb96ce21bd5a7a216aa62b4ab35c75814ffacb596b98
|
@@ -17,11 +17,13 @@ Then("the response #{HAVE_ALTERNATION} {field_name} of type {word}") do |field,
|
|
17
17
|
end
|
18
18
|
|
19
19
|
type = 'string' if regex.nil?
|
20
|
-
field.
|
20
|
+
value = field.get_value(@response, type)
|
21
|
+
field.validate_value(@response, value.to_s, Regexp.new(regex))
|
21
22
|
end
|
22
23
|
|
23
24
|
Then("the response #{HAVE_ALTERNATION} {field_name} of type {word} that matches {string}") do |field, type, regex|
|
24
|
-
field.
|
25
|
+
value = field.get_value(@response, type)
|
26
|
+
field.validate_value(@response, value.to_s, Regexp.new(regex))
|
25
27
|
end
|
26
28
|
|
27
29
|
Then("the response is a list of/containing {list_has_count} {field_name}") do |list_comparison, item|
|
@@ -2,8 +2,8 @@ require 'active_support/inflector'
|
|
2
2
|
|
3
3
|
HAVE_ALTERNATION = "has/have/having/contain/contains/containing/with"
|
4
4
|
RESOURCE_NAME_SYNONYM = '\w+\b(?:\s+\w+\b)*?|`[^`]*`'
|
5
|
-
FIELD_NAME_SYNONYM =
|
6
|
-
MAXIMAL_FIELD_NAME_SYNONYM = '\w+\b(?:\s+\w+\b)*|`[^`]*`'
|
5
|
+
FIELD_NAME_SYNONYM = '\w+\b(?:(?:\s+:)?\s+\w+\b)*?|`[^`]*`'
|
6
|
+
MAXIMAL_FIELD_NAME_SYNONYM = '\w+\b(?:(?:\s+:)?\s+\w+\b)*|`[^`]*`'
|
7
7
|
|
8
8
|
ParameterType(
|
9
9
|
name: 'resource_name',
|
@@ -48,23 +48,23 @@ class ResponseField
|
|
48
48
|
return "#{get_root_data_key()}#{@fields.join('.')}"
|
49
49
|
end
|
50
50
|
|
51
|
-
def get_value(type)
|
52
|
-
return
|
51
|
+
def get_value(response, type)
|
52
|
+
return response.get_as_type to_json_path(), parse_type(type)
|
53
53
|
end
|
54
54
|
|
55
|
-
def validate_value(value, regex)
|
56
|
-
raise %/Expected #{json_path} value '#{value}' to match regex: #{regex}\n#{
|
55
|
+
def validate_value(response, value, regex)
|
56
|
+
raise %/Expected #{json_path} value '#{value}' to match regex: #{regex}\n#{response.to_json_s}/ if (regex =~ value).nil?
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
def parse_type(type)
|
61
61
|
replacements = {
|
62
|
-
/^numeric$/i => '
|
63
|
-
/^int$/i => '
|
64
|
-
/^long$/i => '
|
65
|
-
/^number$/i => '
|
66
|
-
/^decimal$/i => '
|
67
|
-
/^double$/i => '
|
62
|
+
/^numeric$/i => 'numeric',
|
63
|
+
/^int$/i => 'numeric',
|
64
|
+
/^long$/i => 'numeric',
|
65
|
+
/^number$/i => 'numeric',
|
66
|
+
/^decimal$/i => 'numeric',
|
67
|
+
/^double$/i => 'numeric',
|
68
68
|
/^bool$/i => 'boolean',
|
69
69
|
/^null$/i => 'nil_class',
|
70
70
|
/^nil$/i => 'nil_class',
|
@@ -111,6 +111,7 @@ end
|
|
111
111
|
def get_attributes(hashes)
|
112
112
|
attributes = hashes.each_with_object({}) do |row, hash|
|
113
113
|
name, value, type = row["attribute"], row["value"], row["type"]
|
114
|
+
value = resolve_functions(value)
|
114
115
|
value = resolve(value)
|
115
116
|
value.gsub!(/\\n/, "\n")
|
116
117
|
type = parse_type(type)
|
@@ -120,6 +121,19 @@ def get_attributes(hashes)
|
|
120
121
|
end
|
121
122
|
end
|
122
123
|
|
124
|
+
def resolve_functions(value)
|
125
|
+
value.gsub!(/\[([a-zA-Z0-9_]+)\]/) do |s|
|
126
|
+
s.gsub!(/[\[\]]/, '')
|
127
|
+
case s.downcase
|
128
|
+
when "datetime"
|
129
|
+
Time.now.strftime("%Y%m%d%H%M%S")
|
130
|
+
else
|
131
|
+
raise 'Unrecognised function ' + s + '?'
|
132
|
+
end
|
133
|
+
end
|
134
|
+
value
|
135
|
+
end
|
136
|
+
|
123
137
|
def add_to_hash(a, n)
|
124
138
|
result = nil
|
125
139
|
if (n[0] == '[' && n[-1] == ']') then
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alinta-cucumber-rest-bdd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Bragg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-04-
|
12
|
+
date: 2018-04-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber-api
|
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
96
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.
|
97
|
+
rubygems_version: 2.6.14
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
100
|
summary: BDD Rest API specifics for cucumber
|