Class: Webspicy::Specification
- Inherits:
-
Object
- Object
- Webspicy::Specification
show all
- Includes:
- Webspicy::Support::DataObject
- Defined in:
- lib/webspicy/specification.rb,
lib/webspicy/specification/err.rb,
lib/webspicy/specification/pre.rb,
lib/webspicy/specification/post.rb,
lib/webspicy/specification/service.rb,
lib/webspicy/specification/condition.rb,
lib/webspicy/specification/test_case.rb,
lib/webspicy/specification/file_upload.rb,
lib/webspicy/specification/oldies/bridge.rb,
lib/webspicy/specification/oldies/errcondition.rb,
lib/webspicy/specification/oldies/precondition.rb,
lib/webspicy/specification/oldies/postcondition.rb,
lib/webspicy/specification/pre/global_request_headers.rb,
lib/webspicy/specification/post/missing_condition_impl.rb,
lib/webspicy/specification/pre/robust_to_invalid_input.rb,
lib/webspicy/specification/post/unexpected_condition_impl.rb
Defined Under Namespace
Modules: Condition, Err, Errcondition, Oldies, Post, Postcondition, Pre, Precondition
Classes: FileUpload, Service, TestCase
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#method_missing, #to_info
Constructor Details
#initialize(raw, location = nil) ⇒ Specification
Returns a new instance of Specification.
5
6
7
8
9
|
# File 'lib/webspicy/specification.rb', line 5
def initialize(raw, location = nil)
super(raw)
@location = location
bind_services
end
|
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
10
11
12
|
# File 'lib/webspicy/specification.rb', line 10
def config
@config
end
|
#location ⇒ Object
Returns the value of attribute location.
11
12
13
|
# File 'lib/webspicy/specification.rb', line 11
def location
@location
end
|
Class Method Details
.info(raw) ⇒ Object
13
14
15
|
# File 'lib/webspicy/specification.rb', line 13
def self.info(raw)
new(raw)
end
|
.singleservice(raw) ⇒ Object
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/webspicy/specification.rb', line 17
def self.singleservice(raw)
converted = {
name: raw[:name] || "Unamed specification",
url: raw[:url],
services: [
Webspicy.service(raw.reject{|k| k==:url or k==:name }, Webspicy.current_scope)
]
}
info(converted)
end
|
Instance Method Details
#instantiate_url(params) ⇒ Object
58
59
60
61
62
63
64
65
|
# File 'lib/webspicy/specification.rb', line 58
def instantiate_url(params)
url, rest = self.url, params.dup
url_placeholders.each do |placeholder|
value, rest = (rest, placeholder)
url = url.gsub("{#{placeholder}}", value.to_s)
end
[ url, rest ]
end
|
#locate(relative_path) ⇒ Object
32
33
34
35
36
|
# File 'lib/webspicy/specification.rb', line 32
def locate(relative_path)
file = @location.parent/relative_path
raise "File not found: #{file}" unless file.exists?
file
end
|
#located_at!(location) ⇒ Object
28
29
30
|
# File 'lib/webspicy/specification.rb', line 28
def located_at!(location)
@location = Path(location)
end
|
#name ⇒ Object
38
39
40
|
# File 'lib/webspicy/specification.rb', line 38
def name
@raw[:name]
end
|
#services ⇒ Object
50
51
52
|
# File 'lib/webspicy/specification.rb', line 50
def services
@raw[:services] || []
end
|
#to_singleservice ⇒ Object
67
68
69
|
# File 'lib/webspicy/specification.rb', line 67
def to_singleservice
raise NotImplementedError
end
|
#url ⇒ Object
42
43
44
|
# File 'lib/webspicy/specification.rb', line 42
def url
@raw[:url]
end
|
#url_pattern ⇒ Object
46
47
48
|
# File 'lib/webspicy/specification.rb', line 46
def url_pattern
@url_pattern ||= Mustermann.new(url, type: :template)
end
|
#url_placeholders ⇒ Object
54
55
56
|
# File 'lib/webspicy/specification.rb', line 54
def url_placeholders
url.scan(/\{([a-zA-Z]+(\.[a-zA-Z]+)*)\}/).map{|x| x.first }
end
|