lawyer 0.0.12 → 0.0.13

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.
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