screenplay 0.1.6 → 0.1.7
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/Gemfile +3 -0
- data/lib/screenplay/actors/api.rb +7 -3
- data/lib/screenplay/actors/cache.rb +3 -1
- data/lib/screenplay/actors/test.rb +1 -2
- data/lib/screenplay/datatype-extensions.rb +25 -5
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b226d59c75415b22f69511c0c26d5c123ef7148c
|
|
4
|
+
data.tar.gz: 9c15ef66099947510117fd11bc442b67f71139f6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9fad414d66f8a9c71980d839628e08da5d1ac7c40244db69ec16607971f69df44525baa270f8901557d0d69de2f8630799035300e45484826469fa84d4c7e9c3
|
|
7
|
+
data.tar.gz: 4e40b8ec65f9c2d1319a852f9357ddb0a6d9c00013d4770153f2549a91c3549125e47df634fe68d1405fa13a9933e0a5e7513f33c4e03269653b972a1243e85f
|
data/Gemfile
CHANGED
|
@@ -16,7 +16,8 @@ module Screenplay
|
|
|
16
16
|
def configure(config)
|
|
17
17
|
@url = config[:url].to_s
|
|
18
18
|
@url += '/' unless @url.end_with?('/')
|
|
19
|
-
@headers =
|
|
19
|
+
@headers = {}
|
|
20
|
+
@config = config
|
|
20
21
|
@cookies = nil
|
|
21
22
|
end
|
|
22
23
|
|
|
@@ -28,7 +29,8 @@ module Screenplay
|
|
|
28
29
|
data = params[:data] || {} rescue {}
|
|
29
30
|
data = input if (data.is_a?(String)) && (data == '$input')
|
|
30
31
|
data.stringify_keys!
|
|
31
|
-
headers =
|
|
32
|
+
headers = {}
|
|
33
|
+
headers['Content-Type'] = @config[:content_type] if (!@config[:content_type].nil?)
|
|
32
34
|
headers[:cookie] = @cookies unless @cookies.nil?
|
|
33
35
|
url = @url + path.to_s.replace_vars(input)
|
|
34
36
|
if ([:get, :head, :delete].include?(method))
|
|
@@ -36,10 +38,12 @@ module Screenplay
|
|
|
36
38
|
data = {}
|
|
37
39
|
end
|
|
38
40
|
|
|
39
|
-
if (headers['Content-Type'
|
|
41
|
+
if (headers['Content-Type'] == 'application/json')
|
|
40
42
|
data = JSON.generate(data)
|
|
41
43
|
end
|
|
42
44
|
|
|
45
|
+
puts "\nAPI - #{method.to_s.upcase} - #{url}: #{data}" if Screenplay.options[:debug]
|
|
46
|
+
|
|
43
47
|
begin
|
|
44
48
|
response = RestClient::Request.execute({
|
|
45
49
|
url: url,
|
|
@@ -16,10 +16,12 @@ module Screenplay
|
|
|
16
16
|
@cache.clear
|
|
17
17
|
elsif action == :set
|
|
18
18
|
values.each { | cache_key, input_key |
|
|
19
|
-
@cache[cache_key
|
|
19
|
+
@cache[cache_key] = (input_key == '$input'.to_sym) ? input : input.get_value_from_path(input_key)
|
|
20
|
+
puts "\nSet cache #{cache_key} to #{@cache[cache_key]}" if Screenplay.options[:debug]
|
|
20
21
|
}
|
|
21
22
|
elsif (action == :merge || action == :get)
|
|
22
23
|
values.each { | input_key, cache_key |
|
|
24
|
+
puts "\nSet #{input_key.to_sym} to #{@cache[cache_key.to_sym]} from cache key #{cache_key}" if Screenplay.options[:debug]
|
|
23
25
|
output[input_key.to_sym] = @cache[cache_key.to_sym]
|
|
24
26
|
}
|
|
25
27
|
end
|
|
@@ -35,8 +35,7 @@ module Screenplay
|
|
|
35
35
|
test = test.to_s[4..-1] unless expects
|
|
36
36
|
method = "test_#{test}".to_sym
|
|
37
37
|
raise UnknownTestException.new(test) if !respond_to?(method)
|
|
38
|
-
|
|
39
|
-
a = input[key.to_sym]
|
|
38
|
+
a = input.get_value_from_path(key)
|
|
40
39
|
raise TestFailedException.new(test, a, b) unless (public_send(method, a, b) == expects)
|
|
41
40
|
}
|
|
42
41
|
}
|
|
@@ -53,6 +53,27 @@ class Hash
|
|
|
53
53
|
return self
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
+
def get_value_from_path(path, sep_char = '.')
|
|
57
|
+
node, rest = path.to_s.split(sep_char, 2)
|
|
58
|
+
index = node.gsub(/(^.*\[|\]$)/, '')
|
|
59
|
+
value = nil
|
|
60
|
+
if node == index
|
|
61
|
+
value = self[node.to_sym] || self[node.to_s]
|
|
62
|
+
elsif index.numeric?
|
|
63
|
+
node.gsub!(/\[(\w+)\]$/, '')
|
|
64
|
+
if self.include?(node.to_sym) && self[node.to_sym].is_a?(Array)
|
|
65
|
+
value = self[node.to_sym][index.to_i]
|
|
66
|
+
elsif self.include?(node.to_s) && self[node.to_s].is_a?(Array)
|
|
67
|
+
value = self[node.to_s][index.to_i]
|
|
68
|
+
else
|
|
69
|
+
value = nil
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
return nil if value.nil?
|
|
73
|
+
return value if rest.nil? || rest.empty?
|
|
74
|
+
return value.is_a?(Hash) ? value.get_value_from_path(rest, sep_char) : nil
|
|
75
|
+
end
|
|
76
|
+
|
|
56
77
|
end
|
|
57
78
|
|
|
58
79
|
|
|
@@ -102,12 +123,11 @@ class String
|
|
|
102
123
|
(self.length > max_length) ? self.to_s[0..max_length].gsub(/[^\w]\w+\s*$/, '...') : self.to_s
|
|
103
124
|
end
|
|
104
125
|
|
|
105
|
-
def replace_vars!(input)
|
|
126
|
+
def replace_vars!(input, sep_char = '.')
|
|
106
127
|
input = {} unless input.is_a?(Hash)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
self.gsub!(/\#({\w+})/, matches)
|
|
128
|
+
self.gsub!(/\#({[\w#{Regexp.escape(sep_char)}]+})/) { | key |
|
|
129
|
+
input.get_value_from_path(key.delete("{}#"))
|
|
130
|
+
}
|
|
111
131
|
end
|
|
112
132
|
|
|
113
133
|
def replace_vars(input)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: screenplay
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Taco Jan Osinga
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-07-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rest-client
|
|
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
81
81
|
version: '0'
|
|
82
82
|
requirements: []
|
|
83
83
|
rubyforge_project:
|
|
84
|
-
rubygems_version: 2.
|
|
84
|
+
rubygems_version: 2.6.6
|
|
85
85
|
signing_key:
|
|
86
86
|
specification_version: 4
|
|
87
87
|
summary: Screenplay
|