strategy 0.1.0 → 0.1.1
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/strategy/plan.rb +1 -1
- data/lib/strategy/step.rb +3 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/strategy/plan_spec.rb +49 -0
- data/spec/strategy/step_spec.rb +29 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 313846f0c19dea154b8ba65298ce28eb79043bc5
|
4
|
+
data.tar.gz: ff25f117d25be39dc138c54f230f7512d3b7a48e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eea489e5ae66e91a7d8dc14aa11a3c5ca0166ce485a006fd70c1a3678d5e1e84a7420db23c37e84952fc5399fa2999353c40f87f91b34d3bca619a9ef4727779
|
7
|
+
data.tar.gz: ef5e7e701e18ba6749bb5829c1bd90624584419066f9b61076db8fc7418f1ae98799f144d1f3293a49b0dcdf34ff1f4b74b801f14bcd1ecc161c67a3be272e8f
|
data/lib/strategy/plan.rb
CHANGED
@@ -5,7 +5,7 @@ module Strategy
|
|
5
5
|
# highest-level container around an execution strategy, and may contain as few
|
6
6
|
# or as many Step objects as required.
|
7
7
|
class Plan
|
8
|
-
attr_reader :name
|
8
|
+
attr_reader :name, :steps
|
9
9
|
|
10
10
|
# Create a new plan, to which individual execution steps will be added.
|
11
11
|
#
|
data/lib/strategy/step.rb
CHANGED
@@ -20,6 +20,9 @@ module Strategy
|
|
20
20
|
# Adds a new action to the step. Actions are given as a code block, and
|
21
21
|
# will be executed in the order they are added (if the step is executed).
|
22
22
|
def action &block
|
23
|
+
if block.nil?
|
24
|
+
raise RuntimeError, 'expected a block but none given'
|
25
|
+
end
|
23
26
|
@actions << block
|
24
27
|
end
|
25
28
|
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Plan' do
|
4
|
+
before :all do
|
5
|
+
@plan = Strategy::Plan.new 'Test Plan'
|
6
|
+
|
7
|
+
step = Strategy::Step.new 'Step 1'
|
8
|
+
step.action { puts 1 }
|
9
|
+
@plan.add step
|
10
|
+
|
11
|
+
step = Strategy::Step.new 'Step 2'
|
12
|
+
step.action { puts 2 }
|
13
|
+
@plan.add step
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should add a description to the plan' do
|
17
|
+
expect(@plan.name).to eq('Test Plan')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should accept new steps' do
|
21
|
+
step = Strategy::Step.new 'Step 3'
|
22
|
+
step.action { puts 3 }
|
23
|
+
@plan.add step
|
24
|
+
expect(@plan.steps.length).to eq(3)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should reflect the proper plan name' do
|
28
|
+
expect(@plan.describe).to include('Test Plan')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should error if a non-step object is passed' do
|
32
|
+
expect { @plan.add 0 }.to raise_error
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should reflect all steps in the plan' do
|
36
|
+
expect(@plan.describe).to include('Step 1')
|
37
|
+
expect(@plan.describe).to include('Step 2')
|
38
|
+
expect(@plan.describe).to include('Step 3')
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should execute all of the steps' do
|
42
|
+
expect { @plan.execute! }.to output("1\n2\n3\n").to_stdout
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should yield step number and description if block given' do
|
46
|
+
expect { @plan.execute! { |n, d| puts "#{n}. #{d}" } }.to \
|
47
|
+
output("1. Step 1\n1\n2. Step 2\n2\n3. Step 3\n3\n").to_stdout
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Step' do
|
4
|
+
before :all do
|
5
|
+
@step = Strategy::Step.new 'Test Step'
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should create a new step with proper name' do
|
9
|
+
expect(@step.name).to eq('Test Step')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should add an action properly' do
|
13
|
+
@step.action { puts 1 }
|
14
|
+
expect(@step.actions.length).to eq(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should allow multiple actions to be added' do
|
18
|
+
@step.action { puts 2 }
|
19
|
+
expect(@step.actions.length).to eq(2)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should raise an error if no block is given for an action' do
|
23
|
+
expect { @step.action }.to raise_error
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should execute all actions in the step in order' do
|
27
|
+
expect { @step.execute! }.to output("1\n2\n").to_stdout
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strategy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Uber
|
@@ -61,6 +61,9 @@ files:
|
|
61
61
|
- lib/strategy/plan.rb
|
62
62
|
- lib/strategy/step.rb
|
63
63
|
- lib/strategy.rb
|
64
|
+
- spec/spec_helper.rb
|
65
|
+
- spec/strategy/plan_spec.rb
|
66
|
+
- spec/strategy/step_spec.rb
|
64
67
|
homepage: https://github.com/ryanuber/strategy-gem
|
65
68
|
licenses:
|
66
69
|
- MIT
|
@@ -85,4 +88,7 @@ rubygems_version: 2.0.14
|
|
85
88
|
signing_key:
|
86
89
|
specification_version: 4
|
87
90
|
summary: Create runnable, stepped execution plans
|
88
|
-
test_files:
|
91
|
+
test_files:
|
92
|
+
- spec/spec_helper.rb
|
93
|
+
- spec/strategy/plan_spec.rb
|
94
|
+
- spec/strategy/step_spec.rb
|