statefulton 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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