shokkenki-consumer 1.0.1 → 1.1.0

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.
@@ -1,6 +1,6 @@
1
- require 'shokkenki/term/core_ext'
2
1
  require_relative '../model/interaction'
3
2
  require_relative '../model/fixture'
3
+ require_relative '../model/request'
4
4
  require_relative 'http_methods'
5
5
  require_relative 'term_dsl'
6
6
 
@@ -22,13 +22,7 @@ module Shokkenki
22
22
  end
23
23
 
24
24
  def receive details
25
- raise "No request method has been specified." unless details.has_key?(:method)
26
- raise "The request method must be a symbol." unless @request_details = details[:method].is_a?(Symbol)
27
-
28
- raise "No request path has been specified." unless details.has_key?(:path)
29
- raise "The request path must be a string." unless details[:path].is_a?(String)
30
-
31
- @request_details = details
25
+ @request_details = Shokkenki::Consumer::Model::Request.new details
32
26
  self
33
27
  end
34
28
 
@@ -53,8 +47,8 @@ module Shokkenki
53
47
  def to_interaction
54
48
  Shokkenki::Consumer::Model::Interaction.new(
55
49
  :label => @interaction_label,
56
- :request => @request_details.to_shokkenki_term,
57
- :response => @response_details.to_shokkenki_term,
50
+ :request => @request_details,
51
+ :response => @response_details,
58
52
  :fixtures => @fixtures
59
53
  )
60
54
  end
@@ -1,3 +1,5 @@
1
+ require 'shokkenki/term/core_ext'
2
+
1
3
  module Shokkenki
2
4
  module Consumer
3
5
  module Model
@@ -6,9 +8,9 @@ module Shokkenki
6
8
  attr_reader :label, :request, :response, :time, :fixtures
7
9
 
8
10
  def initialize attributes
9
- @label = attributes[:label]
10
- @request = attributes[:request]
11
- @response = attributes[:response]
11
+ @request = attributes[:request].to_shokkenki_term
12
+ @label = attributes[:label] || attributes[:request].label
13
+ @response = attributes[:response].to_shokkenki_term
12
14
  @fixtures = attributes[:fixtures]
13
15
  @time = Time.now
14
16
  end
@@ -17,9 +19,9 @@ module Shokkenki
17
19
  hash = {
18
20
  :request => @request.to_hash,
19
21
  :response => @response.to_hash,
20
- :time => @time.utc.iso8601
22
+ :time => @time.utc.iso8601,
23
+ :label => @label
21
24
  }
22
- hash.merge!(:label => @label) if @label
23
25
  hash.merge!(:fixtures => @fixtures.map{ |f| f.to_hash }) if @fixtures
24
26
  hash
25
27
  end
@@ -10,11 +10,11 @@ module Shokkenki
10
10
  def initialize attributes
11
11
  @provider = attributes[:provider]
12
12
  @consumer = attributes[:consumer]
13
- @interactions = []
13
+ @interactions = {}
14
14
  end
15
15
 
16
16
  def add_interaction interaction
17
- @interactions << interaction
17
+ @interactions[interaction.label] = interaction
18
18
  @provider.stub_interaction interaction
19
19
  end
20
20
 
@@ -22,7 +22,7 @@ module Shokkenki
22
22
  Ticket.new(
23
23
  :consumer => @consumer,
24
24
  :provider => @provider,
25
- :interactions => @interactions
25
+ :interactions => @interactions.values
26
26
  )
27
27
  end
28
28
  end
@@ -0,0 +1,26 @@
1
+ module Shokkenki
2
+ module Consumer
3
+ module Model
4
+ class Request < Hash
5
+
6
+ def initialize attributes
7
+ raise "No request method has been specified." unless attributes.has_key?(:method)
8
+ raise "The request method must be a symbol." unless attributes[:method].is_a?(Symbol)
9
+
10
+ raise "No request path has been specified." unless attributes.has_key?(:path)
11
+ raise "The request path must be a string." unless attributes[:path].is_a?(String)
12
+ merge! attributes
13
+ end
14
+
15
+ def label
16
+ query = " ? #{self[:query].to_json}" if self[:query]
17
+ headers = " headers: #{self[:headers].to_json}" if self[:headers]
18
+ "#{self[:method]} #{self[:path]}#{query}#{headers}"
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+
@@ -4,6 +4,11 @@ require 'rspec'
4
4
 
5
5
  RSpec.configure do |config|
6
6
  config.treat_symbols_as_metadata_keys_with_true_values = true
7
+
8
+ if config.respond_to?(:backtrace_inclusion_patterns)
9
+ config.backtrace_inclusion_patterns << /shokkenki\-consumer/
10
+ end
11
+
7
12
  config.include(
8
13
  Shokkenki::Consumer::RSpec::ExampleGroupBinding,
9
14
  :shokkenki_consumer => lambda{ |x| true }
@@ -1,7 +1,7 @@
1
1
  module Shokkenki
2
2
  module Consumer
3
3
  module Version
4
- STRING = '1.0.1'
4
+ STRING = '1.1.0'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shokkenki-consumer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-25 00:00:00.000000000 Z
12
+ date: 2014-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
- version: 1.0.0
101
+ version: 1.1.0
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: 1.0.0
109
+ version: 1.1.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: rack
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +220,7 @@ files:
220
220
  - lib/shokkenki/consumer/model/interaction.rb
221
221
  - lib/shokkenki/consumer/model/patronage.rb
222
222
  - lib/shokkenki/consumer/model/provider.rb
223
+ - lib/shokkenki/consumer/model/request.rb
223
224
  - lib/shokkenki/consumer/model/role.rb
224
225
  - lib/shokkenki/consumer/model/simplification.rb
225
226
  - lib/shokkenki/consumer/model/ticket.rb
@@ -265,11 +266,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
266
  version: '0'
266
267
  segments:
267
268
  - 0
268
- hash: 1445690267303160436
269
+ hash: 268067568248106092
269
270
  requirements: []
270
271
  rubyforge_project:
271
272
  rubygems_version: 1.8.23
272
273
  signing_key:
273
274
  specification_version: 3
274
- summary: shokkenki-consumer-1.0.1
275
+ summary: shokkenki-consumer-1.1.0
275
276
  test_files: []