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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 275d792094526444f3788ba4ba64c6d7a843a189
4
- data.tar.gz: 4c667631152f5acd1c02ff37cdc7d85546224656
3
+ metadata.gz: 85c8731973c7a971c7f481f0bc771989f88ff6b5
4
+ data.tar.gz: ecf8db7857aff82bbf27bc8e7b922fa22d56a6a3
5
5
  SHA512:
6
- metadata.gz: 3bac76848cc8b80de750319fdd8ba2ac509a1c2fdfd0dfd9176c8f0c8e708db79a08d92d7438bfd7062eb7af913bd2d38ccd219b544885dfeae7a322ee94caff
7
- data.tar.gz: ccb5b7deb6f7cfab73b65dee8c3ad21d0abf8cc8aacdaacde6dece222f1c8d58e654a1ec3050b9b9c30580d4d0357620b4f855f523d9f76b996b385ac2687e78
6
+ metadata.gz: 98f7078c0d453520a12cd4f20ae028a63856ea99245e41051961b78fd4849c97177f98dd8d9d77039a3475d3f0e89abf200a6dd5dc96efc91896bdc0771b1808
7
+ data.tar.gz: ee9f9756e32946562dd2d2a2aba8754ef7696d1dbbea10da048284f5125052b84eae6c57fca9d55d9e58466947a3c2330790a033ea1475f32f69b79c2d9a7f02
@@ -2,4 +2,4 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.2.1
5
- before_install: gem install bundler -v 1.9.1
5
+ before_install: gem install bundler -v 1.9.2
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
- All available assertions have negative counterparts prefixed with `not_`.
58
+ Both positive and negative assertions are available.
67
59
 
68
- - true!
69
- - equal_to!
70
- - identical_to!
71
- - included_in!
72
- - instance_of!
73
- - kind_of!
74
- - respond_to!
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, "~#{value}~ is not awesome"
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.
@@ -2,6 +2,7 @@ require 'defekt/assertions'
2
2
  require 'defekt/base'
3
3
  require 'defekt/collection'
4
4
  require 'defekt/errors'
5
+ require 'defekt/mock'
5
6
  require 'defekt/object'
6
7
  require 'defekt/runner'
7
8
  require 'defekt/test'
@@ -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
- "~#{object1}~ #{text} #{object2}"
108
+ "#{object1.inspect} #{text} #{object2.inspect}"
91
109
  end
92
110
  end
93
111
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Defekt
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
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
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-03-30 00:00:00.000000000 Z
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