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 +4 -4
- data/lib/lawyer/rspec/contract_double.rb +21 -14
- data/lib/lawyer/version.rb +1 -1
- data/spec/lib/lawyer/rspec/multiple_contract_double_spec.rb +19 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3055da0b937e13f7894e644f4356fb7d746e8d30
|
4
|
+
data.tar.gz: 6709ba33f3751944b35a3994d023b0968a49e273
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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(
|
5
|
-
|
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
|
-
|
8
|
-
|
9
|
+
contracts.each do |contract|
|
10
|
+
contract.clauses.each do |clause|
|
11
|
+
next if clause.name.to_sym == :initialize
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
data/lib/lawyer/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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
|