defekt 0.0.4 → 0.0.5
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 +4 -4
- data/.travis.yml +1 -1
- data/README.md +50 -17
- data/lib/defekt.rb +1 -0
- data/lib/defekt/assertions.rb +19 -1
- data/lib/defekt/mock.rb +28 -0
- data/lib/defekt/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85c8731973c7a971c7f481f0bc771989f88ff6b5
|
4
|
+
data.tar.gz: ecf8db7857aff82bbf27bc8e7b922fa22d56a6a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98f7078c0d453520a12cd4f20ae028a63856ea99245e41051961b78fd4849c97177f98dd8d9d77039a3475d3f0e89abf200a6dd5dc96efc91896bdc0771b1808
|
7
|
+
data.tar.gz: ee9f9756e32946562dd2d2a2aba8754ef7696d1dbbea10da048284f5125052b84eae6c57fca9d55d9e58466947a3c2330790a033ea1475f32f69b79c2d9a7f02
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -48,14 +48,6 @@ class PersonTest < Defekt::Base
|
|
48
48
|
def test_name
|
49
49
|
equal_to! 'kodnin', @person.name
|
50
50
|
end
|
51
|
-
|
52
|
-
def test_age
|
53
|
-
not_respond_to! @person, :age
|
54
|
-
@person.stub(:age, 'unknown') do
|
55
|
-
respond_to! @person, :age
|
56
|
-
equal_to! 'unknown', @person.age
|
57
|
-
end
|
58
|
-
end
|
59
51
|
end
|
60
52
|
|
61
53
|
Defekt.run
|
@@ -63,15 +55,18 @@ Defekt.run
|
|
63
55
|
|
64
56
|
## Assertions
|
65
57
|
|
66
|
-
|
58
|
+
Both positive and negative assertions are available.
|
67
59
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
60
|
+
Positive | Negative | Argument(s)
|
61
|
+
--- | --- | ---
|
62
|
+
true! | not_true! | value
|
63
|
+
nil! | not_nil! | value
|
64
|
+
equal_to! | not_equal_to! | expected, actual
|
65
|
+
identical_to! | not_identical_to! | expected, actual
|
66
|
+
included_in! | not_included_in! | collection, member
|
67
|
+
instance_of! | not_instance_of! | class, instance
|
68
|
+
kind_of! | not_kind_of! | class, instance
|
69
|
+
respond_to! | not_respond_to! | object, method
|
75
70
|
|
76
71
|
You can add your own assertions by opening up the `Defekt::Assertions` module.
|
77
72
|
|
@@ -80,13 +75,51 @@ module Defekt
|
|
80
75
|
module Assertions
|
81
76
|
def awesome!(value)
|
82
77
|
unless value == 'awesome'
|
83
|
-
raise Errors::AwesomeError, "
|
78
|
+
raise Errors::AwesomeError, "#{value.inspect} is not awesome"
|
84
79
|
end
|
85
80
|
end
|
86
81
|
end
|
87
82
|
end
|
88
83
|
```
|
89
84
|
|
85
|
+
## Mocking and stubbing
|
86
|
+
|
87
|
+
Basic mocking and stubbing functionality is supported.
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
require 'defekt'
|
91
|
+
|
92
|
+
class Hacker
|
93
|
+
def identity(person)
|
94
|
+
person.name
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
class HackerTest < Defekt::Base
|
99
|
+
def before
|
100
|
+
@hacker = Hacker.new
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_mock
|
104
|
+
mock = Defekt::Mock.new
|
105
|
+
mock.expect(:name, 'kodnin')
|
106
|
+
equal_to! 'kodnin', @hacker.identity(mock)
|
107
|
+
verify! mock
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_stub
|
111
|
+
not_respond_to! @hacker, :password
|
112
|
+
@hacker.stub(:password, 'nindok') do
|
113
|
+
respond_to! @hacker, :password
|
114
|
+
equal_to! 'nindok', @hacker.password
|
115
|
+
end
|
116
|
+
not_respond_to! @hacker, :password
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
Defekt.run
|
121
|
+
```
|
122
|
+
|
90
123
|
## Development
|
91
124
|
|
92
125
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/defekt.rb
CHANGED
data/lib/defekt/assertions.rb
CHANGED
@@ -12,6 +12,18 @@ module Defekt
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
def nil!(value)
|
16
|
+
unless value.nil?
|
17
|
+
raise Errors::NilError, message(value, 'is not', nil)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def not_nil!(value)
|
22
|
+
if value.nil?
|
23
|
+
raise Errors::NotNilError, message(value, 'is', nil)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
15
27
|
def equal_to!(expected, actual)
|
16
28
|
unless actual == expected
|
17
29
|
raise Errors::EqualToError, message(actual, 'is not equal to', expected)
|
@@ -84,10 +96,16 @@ module Defekt
|
|
84
96
|
end
|
85
97
|
end
|
86
98
|
|
99
|
+
def verify!(mock)
|
100
|
+
unless mock.verify
|
101
|
+
raise Errors::MockExpectationError, 'mock expectation not met'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
87
105
|
private
|
88
106
|
|
89
107
|
def message(object1, text, object2)
|
90
|
-
"
|
108
|
+
"#{object1.inspect} #{text} #{object2.inspect}"
|
91
109
|
end
|
92
110
|
end
|
93
111
|
end
|
data/lib/defekt/mock.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Defekt
|
2
|
+
class Mock
|
3
|
+
def expect(methot, value, arguments=[])
|
4
|
+
expected_calls.push([methot, arguments])
|
5
|
+
|
6
|
+
define_singleton_method(methot) do |*args|
|
7
|
+
actual_calls.push([methot, args])
|
8
|
+
value
|
9
|
+
end
|
10
|
+
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify
|
15
|
+
expected_calls.uniq.sort == actual_calls.uniq.sort
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def expected_calls
|
21
|
+
@expected_calls ||= []
|
22
|
+
end
|
23
|
+
|
24
|
+
def actual_calls
|
25
|
+
@actual_calls ||= []
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/defekt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: defekt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Boot
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- lib/defekt/base.rb
|
89
89
|
- lib/defekt/collection.rb
|
90
90
|
- lib/defekt/errors.rb
|
91
|
+
- lib/defekt/mock.rb
|
91
92
|
- lib/defekt/object.rb
|
92
93
|
- lib/defekt/runner.rb
|
93
94
|
- lib/defekt/test.rb
|