lawyer 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df0fdd310c4bf5cb45f1718ba8a0b4297ba2036b
4
- data.tar.gz: 3c60d43bce9b913b577d3bdde6bc7725f20f009c
3
+ metadata.gz: 3055da0b937e13f7894e644f4356fb7d746e8d30
4
+ data.tar.gz: 6709ba33f3751944b35a3994d023b0968a49e273
5
5
  SHA512:
6
- metadata.gz: a7333a513b566948e3203bac0b2db55ce126bf14e2fdbeb140693b0cbd1b17fde246c32520c5f4db5a452467de972f69c940f87cfa361ee054633731023fdea6
7
- data.tar.gz: 08e6dc4a6e735cb19756f33f81969465a6b821044587b41f03ddeb4749247f92be7fdf5d98f75cdbe0abe5ec8cb800ed44f4b5feeb9857fea5d6aa1ca06dae82
6
+ metadata.gz: a60de543feb9b115fffbc700b14390846e4c099c0083755caaecdc7267810afe544d451b1ea7d5a5071289140bc62bbc034b9746b4f23ca741757b23d9b971eb
7
+ data.tar.gz: 74cc04725a6f2a5d67d7a331689a39083df339dbec03af91ace8a25aa1d413b73ccc921ead3bcb15b73f01f683ef7bc44da9ce11f6c374737defe5bc347ff0fc
@@ -1,23 +1,30 @@
1
1
  module Lawyer
2
2
  module RSpec
3
3
  module ContractDouble
4
- def contract_double(contract, return_values = {})
5
- the_double = double(contract.name)
4
+ def contract_double(contracts, return_values = {})
5
+ contracts = [contracts] unless contracts.is_a?(Enumerable)
6
+ double_name = contracts.map(&:name).join(", ")
7
+ the_double = double(double_name)
6
8
 
7
- contract.clauses.each do |clause|
8
- next if clause.name.to_sym == :initialize
9
+ contracts.each do |contract|
10
+ contract.clauses.each do |clause|
11
+ next if clause.name.to_sym == :initialize
9
12
 
10
- return_value = if return_values.has_key?(clause.name.to_sym)
11
- return_values[clause.name.to_sym]
12
- else
13
- true
14
- end
13
+ return_value = if return_values.has_key?(clause.name.to_sym)
14
+ return_values[clause.name.to_sym]
15
+ else
16
+ true
17
+ end
15
18
 
16
- receiver = allow(the_double).to receive(clause.name).and_return(return_value)
17
- if clause.arity
18
- receiver.with(*clause.arity.times.map { anything })
19
- elsif clause.signature
20
- receiver.with(clause.signature.inject({}) { |acc, name| acc[name] = anything; acc })
19
+ receiver = allow(the_double).to receive(clause.name).and_return(return_value)
20
+ if clause.arity
21
+ receiver.with(*clause.arity.times.map { anything })
22
+ elsif clause.signature
23
+ receiver.with(clause.signature.inject({}) do |acc, name|
24
+ acc[name] = anything
25
+ acc
26
+ end)
27
+ end
21
28
  end
22
29
  end
23
30
  the_double
@@ -1,3 +1,3 @@
1
1
  module Lawyer
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -0,0 +1,19 @@
1
+ require 'lawyer/rspec'
2
+
3
+ class FirstContract < Lawyer::Contract
4
+ confirm :ping
5
+ end
6
+
7
+ class SecondContract < Lawyer::Contract
8
+ confirm :pong
9
+ end
10
+
11
+ describe "Multiple contracts" do
12
+ include Lawyer::RSpec::ContractDouble
13
+
14
+ subject(:multiple_double) { contract_double([FirstContract, SecondContract]) }
15
+
16
+ it { should be_a(RSpec::Mocks::Mock) }
17
+ it { should respond_to(:ping) }
18
+ it { should respond_to(:pong) }
19
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lawyer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Cinnamond
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-05 00:00:00.000000000 Z
11
+ date: 2014-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,6 +82,7 @@ files:
82
82
  - spec/lib/lawyer/contract_spec.rb
83
83
  - spec/lib/lawyer/rspec/contract_double_spec.rb
84
84
  - spec/lib/lawyer/rspec/matchers_spec.rb
85
+ - spec/lib/lawyer/rspec/multiple_contract_double_spec.rb
85
86
  - spec/module_spec.rb
86
87
  - spec/spec_helper.rb
87
88
  homepage: http://github.com/jcinnamond/lawyer
@@ -104,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
105
  version: '0'
105
106
  requirements: []
106
107
  rubyforge_project:
107
- rubygems_version: 2.2.0
108
+ rubygems_version: 2.2.2
108
109
  signing_key:
109
110
  specification_version: 4
110
111
  summary: Strong Duck Typing for Ruby
@@ -112,5 +113,6 @@ test_files:
112
113
  - spec/lib/lawyer/contract_spec.rb
113
114
  - spec/lib/lawyer/rspec/contract_double_spec.rb
114
115
  - spec/lib/lawyer/rspec/matchers_spec.rb
116
+ - spec/lib/lawyer/rspec/multiple_contract_double_spec.rb
115
117
  - spec/module_spec.rb
116
118
  - spec/spec_helper.rb