defekt 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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