Class: Webspicy::Specification

Inherits:
Object
  • Object
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

Methods included from Webspicy::Support::DataObject

#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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Webspicy::Support::DataObject

Instance Attribute Details

#configObject

Returns the value of attribute config.



10
11
12
# File 'lib/webspicy/specification.rb', line 10

def config
  @config
end

#locationObject (readonly)

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 = extract_placeholder_value(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

#nameObject



38
39
40
# File 'lib/webspicy/specification.rb', line 38

def name
  @raw[:name]
end

#servicesObject



50
51
52
# File 'lib/webspicy/specification.rb', line 50

def services
  @raw[:services] || []
end

#to_singleserviceObject

Raises:

  • (NotImplementedError)


67
68
69
# File 'lib/webspicy/specification.rb', line 67

def to_singleservice
  raise NotImplementedError
end

#urlObject



42
43
44
# File 'lib/webspicy/specification.rb', line 42

def url
  @raw[:url]
end

#url_patternObject



46
47
48
# File 'lib/webspicy/specification.rb', line 46

def url_pattern
  @url_pattern ||= Mustermann.new(url, type: :template)
end

#url_placeholdersObject



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