statefulton 0.0.1 → 0.0.2

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.
data/README.md CHANGED
@@ -32,6 +32,10 @@ Creating a statefulton:
32
32
 
33
33
  * Statefulton(:name) { # a block of calls to the DSL methods }
34
34
 
35
+ Reset state between tests:
36
+
37
+ * Statefulton::Reset.all
38
+
35
39
  To define a new statefulton:
36
40
 
37
41
  Statefulton(:user) do
data/Rakefile CHANGED
@@ -1,3 +1,10 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
3
  require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ ENV['SPEC_OPTS'] = "--format progress"
7
+ spec.pattern = "spec/**/*_spec.rb"
8
+ end
9
+
10
+ task :default => [:spec]
@@ -1,31 +1,33 @@
1
1
  require 'singleton'
2
2
 
3
- class Statefulton::Builder
4
- include Singleton
3
+ module Statefulton
4
+ class Builder
5
+ include Singleton
5
6
 
6
- def register(name, &block)
7
- state = Statefulton::Statefulton.new &block
8
- add_state name, state
9
- end
7
+ def register(name, &block)
8
+ state = Statefulton.new &block
9
+ add_state name, state
10
+ end
10
11
 
11
- def get_state name, method
12
- states[name].public_method(method).call
13
- end
12
+ def get_state name, method
13
+ states[name].public_method(method).call
14
+ end
14
15
 
15
- def reset_all!
16
- states.values.map(&:reset!).none?
17
- end
16
+ def reset_all!
17
+ states.values.map(&:reset!).none?
18
+ end
18
19
 
19
- private
20
+ private
20
21
 
21
- attr_reader :states
22
+ attr_reader :states
22
23
 
23
- def initialize
24
- @states = {}
25
- end
24
+ def initialize
25
+ @states = {}
26
+ end
26
27
 
27
- def add_state name, state
28
- @states[name] = state
29
- state
28
+ def add_state name, state
29
+ @states[name] = state
30
+ state
31
+ end
30
32
  end
31
33
  end
@@ -1,37 +1,39 @@
1
- class Statefulton::Statefulton
2
- attr_reader :instance
1
+ module Statefulton
2
+ class Statefulton
3
+ attr_reader :instance
3
4
 
4
- def initialize &block
5
- instance_eval &block
6
- end
5
+ def initialize &block
6
+ instance_eval &block
7
+ end
7
8
 
8
- def builder &block
9
- @builder = block
10
- end
9
+ def builder &block
10
+ @builder = block
11
+ end
11
12
 
12
- def make string, &block
13
- define_singleton_method string do
14
- build_instance &block
13
+ def make string, &block
14
+ define_singleton_method string do
15
+ build_instance &block
16
+ end
15
17
  end
16
- end
17
18
 
18
- def expects string
19
- define_singleton_method string do
20
- instance or fail "No instance exists!"
19
+ def expects string
20
+ define_singleton_method string do
21
+ instance or fail Exceptions::NoInstance
22
+ end
21
23
  end
22
- end
23
24
 
24
- def reset!
25
- @instance = nil
26
- end
25
+ def reset!
26
+ @instance = nil
27
+ end
27
28
 
28
- private
29
- def build_instance &block
30
- fail "Instance already created!" unless @instance.nil?
31
- @instance = if block_given?
32
- block.call
33
- else
34
- @builder.call
29
+ private
30
+ def build_instance &block
31
+ fail Exceptions::InstanceExists unless @instance.nil?
32
+ @instance = if block_given?
33
+ block.call
34
+ else
35
+ @builder.call
36
+ end
35
37
  end
36
38
  end
37
39
  end
@@ -1,3 +1,3 @@
1
1
  module Statefulton
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/statefulton.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  require "statefulton/version"
2
2
 
3
3
  module Statefulton
4
+ module Exceptions
5
+ class NoInstance < StandardError; end
6
+ class InstanceExists < StandardError; end
7
+ end
4
8
  autoload :Builder, 'statefulton/builder'
5
9
  autoload :Statefulton, 'statefulton/statefulton'
6
10
  State = Builder.instance
@@ -9,6 +13,7 @@ module Statefulton
9
13
  Builder.instance.reset_all!
10
14
  end
11
15
  end
16
+
12
17
  end
13
18
 
14
19
  def Statefulton(name, &block)
@@ -43,8 +43,9 @@ describe Statefulton::Statefulton do
43
43
 
44
44
  it "raises if a creation attempt occurs" do
45
45
  expect do
46
- subject.send("instance with stuff")
47
- end.to raise_error
46
+ subject
47
+ statefulton.send("instance with stuff")
48
+ end.to raise_error(Statefulton::Exceptions::InstanceExists)
48
49
  end
49
50
  end
50
51
  end
@@ -64,7 +65,7 @@ describe Statefulton::Statefulton do
64
65
  it "raises if no instance exists" do
65
66
  expect do
66
67
  subject.send("an instance")
67
- end.to raise_error
68
+ end.to raise_error(Statefulton::Exceptions::NoInstance)
68
69
  end
69
70
  end
70
71
 
@@ -114,7 +115,7 @@ describe Statefulton::Statefulton do
114
115
  subject.send "one instance"
115
116
  expect do
116
117
  subject.send "one instance"
117
- end.to raise_error "Instance already created!"
118
+ end.to raise_error Statefulton::Exceptions::InstanceExists
118
119
  end
119
120
  end
120
121
  end
@@ -131,7 +132,7 @@ describe Statefulton::Statefulton do
131
132
  it "raises an error" do
132
133
  expect do
133
134
  subject.send("that instance")
134
- end.to raise_error "No instance exists!"
135
+ end.to raise_error(Statefulton::Exceptions::NoInstance)
135
136
  end
136
137
  end
137
138
  end
@@ -22,7 +22,7 @@ describe "Statefulton" do
22
22
  end
23
23
  end
24
24
 
25
- describe "::Reset.alll" do
25
+ describe "::Reset.all" do
26
26
  it "calls reset_all! on the builder" do
27
27
  Statefulton::Reset.all.should == true
28
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statefulton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,12 +10,12 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-12-28 00:00:00.000000000 -06:00
13
+ date: 2012-02-02 00:00:00.000000000 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &2165793320 !ruby/object:Gem::Requirement
18
+ requirement: &2156543960 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,7 +23,7 @@ dependencies:
23
23
  version: '2.7'
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *2165793320
26
+ version_requirements: *2156543960
27
27
  description: A simple utility to manage state when testing
28
28
  email:
29
29
  - gems@davelyon.net