defekt 0.0.2 → 0.0.3

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: 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