expectable 0.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.
- checksums.yaml +7 -0
- data/lib/expectable.rb +44 -0
- metadata +66 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e7a93d9c5deb286fe892d0c610db7c1171d3534e
|
4
|
+
data.tar.gz: 1de9c2772d4beb4825b8b5c715a53bfc7b73c6b1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4ce6bba7bfcd6ffa55ee05db6437b09b8fc35962e0eb63a24da69d9f03170266cf40826b873c1b0e091aca96f688ceadb4b303ebac065ac6e8d45e761b87fe93
|
7
|
+
data.tar.gz: 2a8ade1091ff1ade32d1f24c20b78f84b555722a8a875e002d9ab36af64659ea42fbcfd7a0e5a2f894e523d953c883593c097cc425f3487ab64c4da5748a5836
|
data/lib/expectable.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'minitest'
|
2
|
+
require 'minitest/mock'
|
3
|
+
|
4
|
+
module Expectable
|
5
|
+
def expect(method_name, return_value = nil, expected_args = nil)
|
6
|
+
mock = expect_helper(return_value, expected_args)
|
7
|
+
|
8
|
+
stub(method_name, mock) do
|
9
|
+
yield
|
10
|
+
end
|
11
|
+
|
12
|
+
begin
|
13
|
+
mock.verify
|
14
|
+
rescue
|
15
|
+
raise ExpectationError, "Expected method #{method_name} to be called on object " \
|
16
|
+
"<#{self.class} ##{object_id}>"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def expect_helper(return_value = nil, expected_args = nil)
|
23
|
+
mock = Minitest::Mock.new
|
24
|
+
|
25
|
+
# Expected arguments can either be an array or a Proc
|
26
|
+
if expected_args && expected_args.is_a?(Array)
|
27
|
+
mock.expect :call, return_value, expected_args
|
28
|
+
# Note: In Ruby lambdas have class Proc
|
29
|
+
elsif expected_args && expected_args.class == Proc
|
30
|
+
mock.expect :call, return_value, &expected_args
|
31
|
+
else
|
32
|
+
# Allows us to run expect without caring about which args are given
|
33
|
+
# I know that this isn't Minitest behaviour, but it's prettier
|
34
|
+
mock.expect :call, return_value do
|
35
|
+
true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
mock
|
40
|
+
end
|
41
|
+
|
42
|
+
class ExpectationError < StandardError
|
43
|
+
end
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: expectable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben Lewis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-05-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.11'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.11'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '5.11'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.11'
|
33
|
+
description: This gem extends MiniTest by allowing you to simply include this class
|
34
|
+
on any given class dynamically and expect calls to methods on that class.
|
35
|
+
email: hello@blewis.me
|
36
|
+
executables: []
|
37
|
+
extensions: []
|
38
|
+
extra_rdoc_files: []
|
39
|
+
files:
|
40
|
+
- lib/expectable.rb
|
41
|
+
homepage: http://rubygems.org/gems/expectable
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 2.2.2
|
62
|
+
signing_key:
|
63
|
+
specification_version: 4
|
64
|
+
summary: The Expectable gem allows you to expect methods to be called on objects that
|
65
|
+
are not MiniTest::Mock
|
66
|
+
test_files: []
|