shokkenki 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Shokkenki
2
2
  module Version
3
- STRING = '0.0.0'
3
+ STRING = '0.0.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shokkenki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,48 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-07 00:00:00.000000000 Z
12
+ date: 2013-11-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: json
15
+ name: shokkenki-consumer
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.0.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 0.0.2
30
30
  - !ruby/object:Gem::Dependency
31
- name: rake
31
+ name: shokkenki-provider
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ~>
35
+ - - '='
36
36
  - !ruby/object:Gem::Version
37
- version: 10.0.0
38
- type: :development
37
+ version: 0.0.2
38
+ type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - '='
44
44
  - !ruby/object:Gem::Version
45
- version: 10.0.0
45
+ version: 0.0.2
46
46
  - !ruby/object:Gem::Dependency
47
- name: rspec
47
+ name: rake
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 2.14.0
53
+ version: 10.0.0
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,62 +58,17 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 2.14.0
62
- - !ruby/object:Gem::Dependency
63
- name: json
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: timecop
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- description: Consumer-driven contracts recorded from real examples.
61
+ version: 10.0.0
62
+ description: Example-driven consumer-driven contracts.
95
63
  email: brent@fuglylogic.com
96
64
  executables: []
97
65
  extensions: []
98
66
  extra_rdoc_files: []
99
67
  files:
100
- - lib/shokkenki/configuration.rb
101
- - lib/shokkenki/consumer/consumer_role.rb
102
- - lib/shokkenki/consumer/interaction.rb
103
- - lib/shokkenki/consumer/patronage.rb
104
- - lib/shokkenki/consumer/request.rb
105
- - lib/shokkenki/consumer/response.rb
106
- - lib/shokkenki/consumer/rspec.rb
107
- - lib/shokkenki/consumer/rspec/example_group_binding.rb
108
- - lib/shokkenki/consumer/rspec/rspec_configuration.rb
109
- - lib/shokkenki/consumer/session.rb
110
- - lib/shokkenki/consumer/simplification.rb
111
- - lib/shokkenki/consumer/ticket.rb
112
- - lib/shokkenki/shokkenki.rb
113
68
  - lib/shokkenki/version.rb
114
69
  homepage: http://github.com/brentsnook/shokkenki
115
70
  licenses:
116
- - MIT
71
+ - GPL2
117
72
  post_install_message:
118
73
  rdoc_options:
119
74
  - --charset=UTF-8
@@ -124,7 +79,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
79
  requirements:
125
80
  - - ! '>='
126
81
  - !ruby/object:Gem::Version
127
- version: 1.8.7
82
+ version: '1.9'
128
83
  required_rubygems_version: !ruby/object:Gem::Requirement
129
84
  none: false
130
85
  requirements:
@@ -133,11 +88,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
88
  version: '0'
134
89
  segments:
135
90
  - 0
136
- hash: -4031148388905452257
91
+ hash: 2988723278780647956
137
92
  requirements: []
138
93
  rubyforge_project:
139
94
  rubygems_version: 1.8.24
140
95
  signing_key:
141
96
  specification_version: 3
142
- summary: shokkenki-0.0.0
97
+ summary: shokkenki-0.0.2
143
98
  test_files: []
@@ -1,5 +0,0 @@
1
- module Shokkenki
2
- class Configuration
3
- attr_accessor :ticket_location
4
- end
5
- end
@@ -1,26 +0,0 @@
1
- require 'shokkenki/consumer/patronage'
2
- require 'shokkenki/consumer/simplification'
3
-
4
- module Shokkenki
5
- module Consumer
6
- class ConsumerRole
7
- include Shokkenki::Consumer::Simplification
8
-
9
- attr_reader :name, :patronages
10
-
11
- def initialize arguments
12
- @name = simplify(arguments[:name])
13
- @patronages = {}
14
- end
15
-
16
- def patronage provider_name
17
- @patronages[simplify(provider_name)] ||= Shokkenki::Consumer::Patronage.new :name => provider_name, :consumer => self
18
- end
19
-
20
- def tickets
21
- @patronages.values.collect &:ticket
22
- end
23
-
24
- end
25
- end
26
- end
@@ -1,24 +0,0 @@
1
- require 'shokkenki/consumer/request'
2
- require 'shokkenki/consumer/response'
3
-
4
- module Shokkenki
5
- module Consumer
6
- class Interaction
7
-
8
- attr_reader :label, :request, :response
9
-
10
- def initialize attributes
11
- @label = attributes[:label]
12
- end
13
-
14
- def requested_with request_attributes
15
- @request = Shokkenki::Consumer::Request.new request_attributes
16
- end
17
-
18
- def responds_with response_attributes
19
- @response = Shokkenki::Consumer::Response.new response_attributes
20
- end
21
-
22
- end
23
- end
24
- end
@@ -1,29 +0,0 @@
1
- require 'shokkenki/consumer/ticket'
2
- require 'shokkenki/consumer/interaction'
3
- require 'shokkenki/consumer/simplification'
4
-
5
- module Shokkenki
6
- module Consumer
7
- class Patronage
8
- include Shokkenki::Consumer::Simplification
9
-
10
- attr_reader :name, :consumer
11
-
12
- def initialize attributes
13
- @name = simplify(attributes[:name])
14
- @consumer = attributes[:consumer]
15
- @interactions = []
16
- end
17
-
18
- def during interaction_label
19
- interaction = Interaction.new(:label => interaction_label)
20
- @interactions << interaction
21
- interaction
22
- end
23
-
24
- def ticket
25
- Ticket.new :consumer => @consumer.name, :provider => @name
26
- end
27
- end
28
- end
29
- end
@@ -1,14 +0,0 @@
1
- module Shokkenki
2
- module Consumer
3
- class Request
4
-
5
- attr_reader :method_type, :path
6
-
7
- def initialize attributes
8
- @method_type = attributes[:method]
9
- @path = attributes[:path]
10
- end
11
-
12
- end
13
- end
14
- end
@@ -1,11 +0,0 @@
1
- module Shokkenki
2
- module Consumer
3
- class Response
4
-
5
- def initialize attributes
6
-
7
- end
8
-
9
- end
10
- end
11
- end
@@ -1,14 +0,0 @@
1
- require 'shokkenki/consumer/session'
2
- require 'shokkenki/consumer/consumer_role'
3
-
4
- module Shokkenki
5
- module Consumer
6
- module RSpec
7
- module ExampleGroupBinding
8
- def shokkenki
9
- Shokkenki::Consumer::Session.singleton
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,13 +0,0 @@
1
- require 'shokkenki/consumer/rspec/example_group_binding'
2
- require 'rspec'
3
-
4
- RSpec.configure do |config|
5
- config.treat_symbols_as_metadata_keys_with_true_values = true
6
- config.include Shokkenki::Consumer::RSpec::ExampleGroupBinding
7
-
8
- config.before(:each, :shokkenki_consumer => lambda{ |x| true }) do
9
- Shokkenki::Consumer::Session.singleton.current_consumer = example.metadata[:shokkenki_consumer]
10
- end
11
-
12
- config.after(:suite) { Shokkenki::Consumer::Session.singleton.print_tickets }
13
- end
@@ -1,2 +0,0 @@
1
- # for cosmetic reasons so that clients don't have to require shokkenki/consumer/rspec/rspec
2
- require 'shokkenki/consumer/rspec/rspec_configuration'
@@ -1,50 +0,0 @@
1
- require 'shokkenki/consumer/consumer_role'
2
- require 'shokkenki/shokkenki'
3
- require 'shokkenki/consumer/simplification'
4
-
5
- module Shokkenki
6
- module Consumer
7
- class Session
8
- include Shokkenki::Consumer::Simplification
9
-
10
- attr_reader :consumers, :current_consumer
11
-
12
- def initialize
13
- @consumers = {}
14
- end
15
-
16
- def self.singleton
17
- @instance ||= Session.new
18
- end
19
-
20
- def provider provider_name
21
- @current_consumer.patronage provider_name
22
- end
23
-
24
- def current_consumer= consumer_attributes
25
- name = simplify(consumer_attributes[:name])
26
- @consumers[name] ||= Shokkenki::Consumer::ConsumerRole.new consumer_attributes
27
- @current_consumer = @consumers[name]
28
- end
29
-
30
- def stamped_tickets
31
- time = Time.now
32
- # would rather copy + transform tickets rather than modify
33
- # existing state - something to come back to
34
- @consumers.values.collect(&:tickets).flatten.map do |ticket|
35
- ticket.version = Shokkenki::Version::STRING
36
- ticket.time = time
37
- ticket
38
- end
39
- end
40
-
41
- def print_tickets
42
- stamped_tickets.each do |ticket|
43
- ticket_path = File.expand_path(File.join(Shokkenki.configuration.ticket_location, ticket.filename))
44
- File.open(ticket_path, 'w') { |file| file.write(ticket.to_json) }
45
- end
46
- end
47
-
48
- end
49
- end
50
- end
@@ -1,14 +0,0 @@
1
- module Shokkenki
2
- module Consumer
3
- module Simplification
4
- def simplify name
5
- name.to_s.
6
- strip.
7
- gsub(' ', '_').
8
- gsub(/\W/, '').
9
- downcase.
10
- to_sym if name
11
- end
12
- end
13
- end
14
- end
@@ -1,38 +0,0 @@
1
- require 'json'
2
- require 'time'
3
-
4
- module Shokkenki
5
- module Consumer
6
- class Ticket
7
-
8
- attr_reader :provider, :consumer
9
- attr_accessor :time, :version
10
-
11
- def initialize attributes
12
- @provider = attributes[:provider]
13
- @consumer = attributes[:consumer]
14
- end
15
-
16
- def filename
17
- "#{@consumer}-#{@provider}.json"
18
- end
19
-
20
- def to_hash
21
- {
22
- :consumer => {
23
- :name => @consumer
24
- },
25
- :provider => {
26
- :name => @provider
27
- },
28
- :time => @time.utc.iso8601,
29
- :version => @version
30
- }
31
- end
32
-
33
- def to_json
34
- to_hash.to_json
35
- end
36
- end
37
- end
38
- end
@@ -1,12 +0,0 @@
1
- require 'shokkenki/configuration'
2
-
3
- module Shokkenki
4
-
5
- def self.configuration
6
- @configuration ||= Shokkenki::Configuration.new
7
- end
8
-
9
- def self.configure
10
- yield configuration if block_given?
11
- end
12
- end