defekt 0.0.2 → 0.0.3

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: 954d8400f90cdb7972f5d7f743264b19f017a8c1
4
- data.tar.gz: a3e4787acc89cab5d4dbd3d37be7ddd73a0842e6
3
+ metadata.gz: 6dc18564964d2eed94ab05aecfcbcfcff79744c5
4
+ data.tar.gz: e564b34f1d22d5eddab37f2911c72d9bd601af1a
5
5
  SHA512:
6
- metadata.gz: ec6589474c3151e97fa9294295c2bcc74e145b7865b2684d2e8f7d18663a4fc8aff6cdaa3088e4dcffe5f0e48f16fec890df4f4da8ea9b1f52009eeaaa1a8204
7
- data.tar.gz: 70573b204c30eb87828cee86d7750140ef03a88a2896981da6d310a054e8f5bcb3129502e464522c38add127eed2d43811094aeb686f04f56549783dca9fb8b2
6
+ metadata.gz: 386c4c1b3b9abd39344b912b7ce3b4c3b57ecc64d0c08f5873273f35f513c2d077ab863b303764bd1e0b77d4e1a7a5f84bdc8142a2c719a721492996a3ef6e5a
7
+ data.tar.gz: 5cc7b9c7cd0cf7336bb33816605dac364af30e4b46ec17e49bb238cc31d60ba3d868a55c864b7c7e8ba4e5169188b7678c9d51c256942666bf96f273dba9ffac
data/README.md CHANGED
@@ -23,7 +23,7 @@ Or install it yourself as:
23
23
 
24
24
  ## Usage
25
25
 
26
- Inherit test classes from ```Defekt::Base``` and define tests prefixed with ```test_```. ```before``` and ```after``` methods are optional, which will be invoked around a test.
26
+ Inherit your test classes from `Defekt::Base` and define your tests prefixed with `test_`. You can define `before` and `after` methods, which are invoked around each test.
27
27
 
28
28
  ```ruby
29
29
  require 'defekt'
@@ -50,12 +50,15 @@ class PersonTest < Defekt::Base
50
50
  end
51
51
 
52
52
  def test_age
53
- @person.stub(:age) { 'unknown' }
54
- equal_to! 'unknown', @person.age
53
+ true! !@person.respond_to?(:age)
54
+ @person.stub(:age, 'unknown') do
55
+ true! @person.respond_to?(:age)
56
+ equal_to! 'unknown', @person.age
57
+ end
55
58
  end
56
59
  end
57
60
 
58
- Defekt::Runner.new(Defekt::Collection.new(Defekt::Base)).run.report
61
+ Defekt.run
59
62
  ```
60
63
 
61
64
  ## Development
@@ -6,3 +6,9 @@ require 'defekt/object'
6
6
  require 'defekt/runner'
7
7
  require 'defekt/test'
8
8
  require 'defekt/version'
9
+
10
+ module Defekt
11
+ def self.run(klass=Base)
12
+ Runner.new(Collection.new(klass)).run.report
13
+ end
14
+ end
@@ -2,11 +2,7 @@ module Defekt
2
2
  class Base
3
3
  include Assertions
4
4
 
5
- def before
6
- end
7
-
8
- def after
9
- end
5
+ [:before, :after].each { |methot| define_method(methot) {} }
10
6
 
11
7
  def self.children
12
8
  @children ||= []
@@ -1,6 +1,23 @@
1
1
  class Object
2
- def stub(methot, &block)
3
- raise ArgumentError, 'block is required' unless block
4
- define_singleton_method(methot, block)
2
+ def stub(methot, value)
3
+ singleton_methot_exists = respond_to?(methot) && singleton_methods.include?(methot)
4
+
5
+ if singleton_methot_exists
6
+ original = "__original_#{methot}__"
7
+ singleton_class.class_eval { alias_method(original, methot) }
8
+ end
9
+
10
+ define_singleton_method(methot) { |*arguments| value }
11
+
12
+ yield
13
+
14
+ if singleton_methot_exists
15
+ singleton_class.class_eval do
16
+ alias_method(methot, original)
17
+ remove_method(original)
18
+ end
19
+ else
20
+ singleton_class.class_eval { remove_method(methot) }
21
+ end
5
22
  end
6
23
  end
@@ -1,3 +1,3 @@
1
1
  module Defekt
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
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.2
4
+ version: 0.0.3
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-24 00:00:00.000000000 Z
11
+ date: 2015-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler