circumstance 0.0.1 → 1.0.0
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/lib/circumstance.rb +65 -0
- data/lib/circumstance/helpers.rb +18 -0
- data/lib/circumstance/registry.rb +33 -0
- data/lib/circumstance/version.rb +3 -0
- metadata +7 -7
- data/lib/scenario.rb +0 -65
- data/lib/scenario/helpers.rb +0 -18
- data/lib/scenario/registry.rb +0 -33
- data/lib/scenario/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 932a87fc2d2139595d0f825a03bd8bd601bb9436
|
4
|
+
data.tar.gz: d3fcf56a5b3690ff7e38eb47f962cc0c9c327515
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00cba68c760747efca905f55cb89e1fe24103253a34870e3deef18afc95d3b480bc2aadfa319e3e20f580cbd836a9488b788521ba08716d60fa111670435dd07
|
7
|
+
data.tar.gz: 0f9e492c4582c3c87cfece1d9123192d0592b128be8c8d3e577f326ad30c5c5ac3ac5911a640f2b81aab116bb1d11754647fe834c92d1f320a12b615df9d32e7
|
data/lib/circumstance.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
class Circumstance
|
4
|
+
autoload :Helpers, 'circumstance/helpers'
|
5
|
+
autoload :Registry, 'circumstance/registry'
|
6
|
+
autoload :VERSION, 'circumstance/version'
|
7
|
+
|
8
|
+
class << self
|
9
|
+
# Logger used for debugging information
|
10
|
+
attr_accessor :logger
|
11
|
+
# A registry which keeps track of all the circumstances you've defined
|
12
|
+
attr_accessor :registry
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :name
|
16
|
+
|
17
|
+
self.logger = Logger.new($stderr)
|
18
|
+
logger.level = Logger::ERROR
|
19
|
+
|
20
|
+
self.registry = Circumstance::Registry.new
|
21
|
+
|
22
|
+
def initialize(name, block)
|
23
|
+
@name, @block = name, block
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns Circumstance.logger for convenience
|
27
|
+
def logger
|
28
|
+
self.class.logger
|
29
|
+
end
|
30
|
+
|
31
|
+
# Evaluate this circumstance in the context
|
32
|
+
def evaluate(context)
|
33
|
+
logger.debug("Evaluating circumstance #{@name}")
|
34
|
+
if defined?(FactoryGirl)
|
35
|
+
context.send(:include, FactoryGirl::Syntax::Methods)
|
36
|
+
end
|
37
|
+
context.instance_eval(&@block)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Define a circumstance on the global registry
|
41
|
+
#
|
42
|
+
# Circumstance.define(:blue_ocean_fishing) {}
|
43
|
+
def self.define(name, &block)
|
44
|
+
logger.debug("Defining circumstance #{name}")
|
45
|
+
registry.define(name, &block)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Find a circumstance on the global registry
|
49
|
+
#
|
50
|
+
# Circumstance.find(:blue_ocean_fishing) #=> Proc…
|
51
|
+
def self.find(name)
|
52
|
+
registry.find(name)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Find and evaluate a circumstance in a certain context. The context is usually
|
56
|
+
# either a test class or spec context.
|
57
|
+
#
|
58
|
+
# Circumstance.evaluate(self, :blue_ocean_fishing)
|
59
|
+
def self.evaluate(context, name)
|
60
|
+
logger.debug("Loading circumstance #{name}")
|
61
|
+
circumstance = find(name)
|
62
|
+
circumstance.evaluate(context)
|
63
|
+
circumstance
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
class Circumstance
|
4
|
+
module Helpers
|
5
|
+
# Returns a set of loaded circumstances for the current context
|
6
|
+
def loaded_circumstances
|
7
|
+
@loaded_circumstances ||= Set.new
|
8
|
+
end
|
9
|
+
|
10
|
+
# Evaluate a circumstance in the current context
|
11
|
+
def load_circumstance(name)
|
12
|
+
unless loaded_circumstances.include?(name)
|
13
|
+
Circumstance.evaluate(self, name)
|
14
|
+
loaded_circumstances.add(name)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Circumstance
|
2
|
+
# A Registry holds circumstances by name. It's usually used through Circumstance
|
3
|
+
# class methods.
|
4
|
+
class Registry
|
5
|
+
class NotFound < StandardError
|
6
|
+
end
|
7
|
+
|
8
|
+
attr_accessor :circumstances
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
reset
|
12
|
+
end
|
13
|
+
|
14
|
+
# Undefine all circumstances in this Registry
|
15
|
+
def reset
|
16
|
+
@circumstances = {}
|
17
|
+
end
|
18
|
+
|
19
|
+
# Find a circumstance in this Registry by name
|
20
|
+
def find(name)
|
21
|
+
if circumstance = circumstances[name]
|
22
|
+
circumstance
|
23
|
+
else
|
24
|
+
raise Circumstance::Registry::NotFound, "Can't find the circumstance `#{name}', did you define it?"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Define a circumstance in this Registry
|
29
|
+
def define(name, &block)
|
30
|
+
@circumstances[name] = ::Circumstance.new(name, block)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: circumstance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manfred Stienstra
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-04-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -51,10 +51,10 @@ extensions: []
|
|
51
51
|
extra_rdoc_files: []
|
52
52
|
files:
|
53
53
|
- LICENSE.txt
|
54
|
-
- lib/
|
55
|
-
- lib/
|
56
|
-
- lib/
|
57
|
-
- lib/
|
54
|
+
- lib/circumstance.rb
|
55
|
+
- lib/circumstance/helpers.rb
|
56
|
+
- lib/circumstance/registry.rb
|
57
|
+
- lib/circumstance/version.rb
|
58
58
|
homepage: http://github.com/procore/circumstance
|
59
59
|
licenses:
|
60
60
|
- MIT
|
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
75
|
version: '0'
|
76
76
|
requirements: []
|
77
77
|
rubyforge_project:
|
78
|
-
rubygems_version: 2.5.
|
78
|
+
rubygems_version: 2.5.1
|
79
79
|
signing_key:
|
80
80
|
specification_version: 4
|
81
81
|
summary: Circumstance is a thin wrapper around test setup.
|
data/lib/scenario.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'logger'
|
2
|
-
|
3
|
-
class Scenario
|
4
|
-
autoload :Helpers, 'scenario/helpers'
|
5
|
-
autoload :Registry, 'scenario/registry'
|
6
|
-
autoload :VERSION, 'scenario/version'
|
7
|
-
|
8
|
-
class << self
|
9
|
-
# Logger used for debugging information
|
10
|
-
attr_accessor :logger
|
11
|
-
# A registry which keeps track of all the scenarios you've defined
|
12
|
-
attr_accessor :registry
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader :name
|
16
|
-
|
17
|
-
self.logger = Logger.new($stderr)
|
18
|
-
logger.level = Logger::ERROR
|
19
|
-
|
20
|
-
self.registry = Scenario::Registry.new
|
21
|
-
|
22
|
-
def initialize(name, block)
|
23
|
-
@name, @block = name, block
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns Scenario.logger for convenience
|
27
|
-
def logger
|
28
|
-
self.class.logger
|
29
|
-
end
|
30
|
-
|
31
|
-
# Evaluate this scenario in the context
|
32
|
-
def evaluate(context)
|
33
|
-
logger.debug("Evaluating scenario #{@name}")
|
34
|
-
if defined?(FactoryGirl)
|
35
|
-
context.send(:include, FactoryGirl::Syntax::Methods)
|
36
|
-
end
|
37
|
-
context.instance_eval(&@block)
|
38
|
-
end
|
39
|
-
|
40
|
-
# Define a scenario on the global registry
|
41
|
-
#
|
42
|
-
# Scenario.define(:blue_ocean_fishing) {}
|
43
|
-
def self.define(name, &block)
|
44
|
-
logger.debug("Defining scenario #{name}")
|
45
|
-
registry.define(name, &block)
|
46
|
-
end
|
47
|
-
|
48
|
-
# Find a scenario on the global registry
|
49
|
-
#
|
50
|
-
# Scenario.find(:blue_ocean_fishing) #=> Proc…
|
51
|
-
def self.find(name)
|
52
|
-
registry.find(name)
|
53
|
-
end
|
54
|
-
|
55
|
-
# Find and evaluate a scenario in a certain context. The context is usually
|
56
|
-
# either a test class or spec context.
|
57
|
-
#
|
58
|
-
# Scenario.evaluate(self, :blue_ocean_fishing)
|
59
|
-
def self.evaluate(context, name)
|
60
|
-
logger.debug("Loading scenario #{name}")
|
61
|
-
scenario = find(name)
|
62
|
-
scenario.evaluate(context)
|
63
|
-
scenario
|
64
|
-
end
|
65
|
-
end
|
data/lib/scenario/helpers.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'set'
|
2
|
-
|
3
|
-
class Scenario
|
4
|
-
module Helpers
|
5
|
-
# Returns a set of loaded scenarios for the current context
|
6
|
-
def loaded_scenarios
|
7
|
-
@loaded_scenarios ||= Set.new
|
8
|
-
end
|
9
|
-
|
10
|
-
# Evaluate a scenario in the current context
|
11
|
-
def load_scenario(name)
|
12
|
-
unless loaded_scenarios.include?(name)
|
13
|
-
Scenario.evaluate(self, name)
|
14
|
-
loaded_scenarios.add(name)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/scenario/registry.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
class Scenario
|
2
|
-
# A Registry holds scenarios by name. It's usually used through Scenario
|
3
|
-
# class methods.
|
4
|
-
class Registry
|
5
|
-
class NotFound < StandardError
|
6
|
-
end
|
7
|
-
|
8
|
-
attr_accessor :scenarios
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
reset
|
12
|
-
end
|
13
|
-
|
14
|
-
# Undefine all scenarios in this Registry
|
15
|
-
def reset
|
16
|
-
@scenarios = {}
|
17
|
-
end
|
18
|
-
|
19
|
-
# Find a scenario in this Registry by name
|
20
|
-
def find(name)
|
21
|
-
if scenario = scenarios[name]
|
22
|
-
scenario
|
23
|
-
else
|
24
|
-
raise Scenario::Registry::NotFound, "Can't find the scenario `#{name}', did you define it?"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Define a scenario in this Registry
|
29
|
-
def define(name, &block)
|
30
|
-
@scenarios[name] = ::Scenario.new(name, block)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
data/lib/scenario/version.rb
DELETED