theorem 1.2.2 → 1.2.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 +4 -4
- data/src/theorem/hypothesis.rb +2 -0
- data/src/theorem/let.rb +59 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 510e3aaddc01eb3545cf4977b01d94b40940f390b9c8ddc91aa01db2eca6cf03
|
4
|
+
data.tar.gz: 357e1c62b31bd700fa3aff4671dedb777867e3879f5de8ab4738535ab0e4c726
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f7d8754fc5e3549ce677098c348d4d8aa7dc03018337d44634adcf1ff932bd0ad8666ae0faef01f2c95d4508e11450075cee5fc500b87a67cc66f6313a80dfd
|
7
|
+
data.tar.gz: 6d0333b789ea2e2d13707be0039533421ce65bef5b9b55064cc6683ac15323900a7040d23a34218d1a05858c150d60cded6445f440448a41c6ec68c4b5bf02f0
|
data/src/theorem/hypothesis.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative 'completed_test'
|
|
4
4
|
require_relative 'beaker'
|
5
5
|
require_relative 'registry'
|
6
6
|
require_relative 'test'
|
7
|
+
require_relative 'let'
|
7
8
|
|
8
9
|
module Theorem
|
9
10
|
module Control
|
@@ -25,6 +26,7 @@ module Theorem
|
|
25
26
|
block.call(@notary)
|
26
27
|
end
|
27
28
|
|
29
|
+
klass.extend Let
|
28
30
|
klass.extend ClassMethods
|
29
31
|
klass.instance_eval do
|
30
32
|
@before_all ||= Beaker.new
|
data/src/theorem/let.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Theorem
|
4
|
+
module Control
|
5
|
+
# compatibility with let in rspec
|
6
|
+
module Let
|
7
|
+
|
8
|
+
def let(name, &block)
|
9
|
+
setup_let(name, &block)
|
10
|
+
instance_exec @let_registry do |registry|
|
11
|
+
@before_each.prepare do
|
12
|
+
define_singleton_method name do
|
13
|
+
raise "can't find #{name}" unless registry[:let][name]
|
14
|
+
|
15
|
+
registry[:let][name][:value] ||= instance_exec ®istry[:let][name][:block]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
@after_each.prepare do
|
20
|
+
registry[:let][name][:value] = nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
alias_method :each_with, :let
|
25
|
+
|
26
|
+
def let_it_be(name, &block)
|
27
|
+
setup_let(name, :let_it_be, &block)
|
28
|
+
something = binding
|
29
|
+
instance_exec @let_registry do |registry|
|
30
|
+
@before_all.prepare do
|
31
|
+
define_singleton_method name do
|
32
|
+
raise "can't find #{name}" unless registry[:let_it_be][name]
|
33
|
+
|
34
|
+
registry[:let_it_be][name][:value] ||= instance_exec ®istry[:let_it_be][name][:block]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@after_all.prepare do
|
38
|
+
registry[:let_it_be][name][:value] = nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
alias_method :all_with, :let_it_be
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def setup_let(name, type=:let, &block)
|
47
|
+
@let_registry ||= {}
|
48
|
+
@let_registry[type] ||= {}
|
49
|
+
@let_registry[type][name] = { block: block, value: nil }
|
50
|
+
|
51
|
+
define_singleton_method name do
|
52
|
+
raise "can't find #{name}" unless @let_registry[type][name]
|
53
|
+
|
54
|
+
@let_registry[type][name][:value] ||= @let_registry[type][name][:block].call
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: theorem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Gregory
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- src/theorem/completed_test.rb
|
125
125
|
- src/theorem/harness.rb
|
126
126
|
- src/theorem/hypothesis.rb
|
127
|
+
- src/theorem/let.rb
|
127
128
|
- src/theorem/notation.rb
|
128
129
|
- src/theorem/registry.rb
|
129
130
|
- src/theorem/reporter.rb
|