scenarios 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.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
data/lib/scenarios.rb CHANGED
@@ -2,18 +2,11 @@ module Scenarios
2
2
 
3
3
  #
4
4
  # Register a Scenario instance with the module.
5
- # Scenarios are stored inside of scenario groups.
6
5
  #
7
- # When multple scenarios are registerd in a single
8
- # group, it looks like this:
9
- #
10
- # { :user_scenarios => { :no_users => [Scenario], :admin_users => [Scenario] }}
11
- #
12
- # @param [String, Symbol] group_name
13
6
  # @param [Scenarios::Scenario] obj
14
7
  #
15
- def self.register(group_name, obj)
16
- ( store[group_name.to_sym] ||= {} )[obj.name.to_sym] = obj
8
+ def self.register(obj)
9
+ store[obj.name.to_sym] = obj
17
10
  end
18
11
 
19
12
  #
@@ -8,15 +8,6 @@ module Scenarios
8
8
 
9
9
  class << self
10
10
 
11
- #
12
- # Define the name for this scenario group
13
- #
14
- # @param [String, Symbol] group_name
15
- #
16
- def name(group_name)
17
- @group_name = group_name
18
- end
19
-
20
11
  #
21
12
  # Create a new instance of `Scenario` and register it.
22
13
  #
@@ -25,10 +16,8 @@ module Scenarios
25
16
  # @return [Scenairos::Scenario] the new scenario
26
17
  #
27
18
  def scenario(name, &block)
28
- raise "You must call `name` before you can call `scenario`" unless @group_name
29
-
30
19
  obj = Scenario.new(name, &block)
31
- Scenarios.register(@group_name.to_sym, obj)
20
+ Scenarios.register(obj)
32
21
  obj
33
22
  end
34
23
  end
@@ -2,7 +2,7 @@ module Scenarios
2
2
 
3
3
  class Scenario
4
4
 
5
- attr_reader :name, :definitions
5
+ attr_reader :name
6
6
 
7
7
  #
8
8
  # Initialize the new instance using the block
@@ -12,59 +12,16 @@ module Scenarios
12
12
  #
13
13
  def initialize(name, &block)
14
14
  @name = name
15
- @definitions = {}
16
- block.bind(self).call if block_given?
15
+ @block = block
17
16
  end
18
17
 
19
18
  #
20
- # Save a setup block to be called later
19
+ # Run the initialization block
21
20
  #
22
- # Example:
23
- #
24
- # setup do
25
- # @resorce = User.create(...)
26
- # end
27
- #
28
- # @param [Proc] block
29
- #
30
- def setup(&block)
31
- @setup_block = block
32
- end
33
-
34
- #
35
- # Call the setup block
36
- #
37
- def setup!
38
- @setup_block.call if @setup_block.is_a?(Proc)
39
- end
40
-
41
- #
42
- # Save a block that will be used later to
43
- # create a particular dataset.
44
- #
45
- # Example:
46
- #
47
- # define :params do
48
- # { :valid_id => @resource.id }
49
- # end
50
- #
51
- # @param [String, Symbol] key
52
21
  # @param [Proc] block
53
22
  #
54
- def define(key, &block)
55
- @definitions[key.to_sym] = block
56
- end
57
-
58
-
59
- #
60
- # Evaluate a particular definition and
61
- # return the results
62
- #
63
- # @param [String, Symbol] key Name of definition to eval
64
- #
65
- def [](key)
66
- d = @definitions[key.to_sym]
67
- d.is_a?(Proc) ? d.call : nil
23
+ def generate
24
+ @block.bind(self).call if @block.is_a?(Proc)
68
25
  end
69
26
 
70
27
  end
data/scenarios.gemspec ADDED
@@ -0,0 +1,66 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{scenarios}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Starr Horne"]
12
+ s.date = %q{2010-06-13}
13
+ s.description = %q{Factories on steroids.}
14
+ s.email = %q{starr@chromahq.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/scenarios.rb",
27
+ "lib/scenarios/base.rb",
28
+ "lib/scenarios/proc_extensions.rb",
29
+ "lib/scenarios/scenario.rb",
30
+ "scenarios.gemspec",
31
+ "test/base_test.rb",
32
+ "test/helper.rb",
33
+ "test/scenario_test.rb",
34
+ "test/scenarios_test.rb",
35
+ "test/system_test.rb"
36
+ ]
37
+ s.homepage = %q{http://github.com/starrhorne/scenarios}
38
+ s.rdoc_options = ["--charset=UTF-8"]
39
+ s.require_paths = ["lib"]
40
+ s.rubygems_version = %q{1.3.6}
41
+ s.summary = %q{Manage scenarios for testing}
42
+ s.test_files = [
43
+ "test/base_test.rb",
44
+ "test/helper.rb",
45
+ "test/scenario_test.rb",
46
+ "test/scenarios_test.rb",
47
+ "test/system_test.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
55
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
56
+ s.add_development_dependency(%q<mocha>, [">= 0"])
57
+ else
58
+ s.add_dependency(%q<shoulda>, [">= 0"])
59
+ s.add_dependency(%q<mocha>, [">= 0"])
60
+ end
61
+ else
62
+ s.add_dependency(%q<shoulda>, [">= 0"])
63
+ s.add_dependency(%q<mocha>, [">= 0"])
64
+ end
65
+ end
66
+
data/test/base_test.rb CHANGED
@@ -2,73 +2,17 @@ require 'helper'
2
2
 
3
3
  class TestBase < Test::Unit::TestCase
4
4
 
5
- context "no name" do
6
-
7
- setup do
8
- Scenarios.clear
9
- Scenarios::Base.name(nil)
10
- end
11
-
12
- should "raise an exception when `scenario` called" do
13
- assert_raise RuntimeError do
14
- Scenarios::Base.scenario("X"){}
15
- end
16
- end
17
-
18
- end
19
-
20
- context "a name" do
21
-
22
- setup do
23
- Scenarios.clear
24
- Scenarios::Base.name(:sample)
25
- end
26
-
27
- should "not raise an exception when `scenario` called" do
28
- Scenarios::Base.scenario("X"){}
29
- end
30
-
31
- end
32
-
33
5
  context "a few empty scenarios" do
34
6
 
35
7
  setup do
36
8
  Scenarios.clear
37
- Scenarios::Base.name(:sample)
38
9
  @one = Scenarios::Base.scenario(:one){}
39
10
  @two = Scenarios::Base.scenario(:two){}
40
11
  end
41
12
 
42
- should "register group with Scenarios module" do
43
- assert Scenarios[:sample].kind_of?(Hash)
44
- end
45
-
46
- should "register both scenarios" do
47
- assert_equal 2, Scenarios[:sample].size
48
- end
49
-
50
- should "register correct scenarios" do
51
- assert_equal({@one.name.to_sym => @one, @two.name.to_sym => @two}, Scenarios[:sample])
52
- end
53
-
54
- end
55
-
56
- context "a scenario with a definition" do
57
- setup do
58
- Scenarios.clear
59
- Scenarios::Base.name(:sample)
60
- @one = Scenarios::Base.instance_eval %[
61
- scenario(:one) do
62
- define :foo do
63
- { :bar => :baz }
64
- end
65
- end
66
- ]
67
- end
68
-
69
- should "add definition to scenerio object" do
70
- assert_equal 1, @one.definitions.size
71
- assert_equal({ :bar => :baz }, @one.definitions[:foo].call)
13
+ should "register with Scenarios module" do
14
+ assert_equal @one, Scenarios[:one]
15
+ assert_equal @two, Scenarios[:two]
72
16
  end
73
17
 
74
18
  end
@@ -2,75 +2,22 @@ require 'helper'
2
2
 
3
3
  class TestScenario < Test::Unit::TestCase
4
4
 
5
- context "an empty scenario" do
5
+ context "a scenario" do
6
6
 
7
7
  setup do
8
- @resource = Scenarios::Scenario.new("test")
8
+ @resource = Scenarios::Scenario.new("test") do
9
+ "hi"
10
+ end
9
11
  end
10
12
 
11
13
  should "have name set" do
12
14
  assert_equal('test', @resource.name)
13
15
  end
14
16
 
15
- should "have an empty definitions" do
16
- assert_equal({}, @resource.definitions)
17
- end
18
-
19
- should "return nil on setup" do
20
- assert_equal nil, @resource.setup!
21
- end
22
-
23
- end
24
-
25
- context "a scenario with a setup block" do
26
-
27
- setup do
28
- @resource = Scenarios::Scenario.new("test")
29
- @resource.setup do
30
- @setup_called = true
31
- end
32
- end
33
-
34
- should "not call setup block automatically" do
35
- assert !@setup_called
36
- end
37
-
38
- should "call setup block manually, in scope of caller" do
39
- @resource.setup!
40
- assert @setup_called
17
+ should "generate correctly" do
18
+ assert_equal('hi', @resource.generate)
41
19
  end
42
20
 
43
21
  end
44
22
 
45
- context "a scenario with a definition" do
46
-
47
- setup do
48
- @resource = Scenarios::Scenario.new("test")
49
- @resource.define(:params) do
50
- @definition_called = true
51
- {}
52
- end
53
- @resource.define(:other) do
54
- {}
55
- end
56
- end
57
-
58
- should "not call definition block automatically" do
59
- assert !@definition_called
60
- end
61
-
62
- should "call definition block when referenced" do
63
- assert_equal({}, @resource[:params])
64
- assert @definition_called
65
- end
66
-
67
- should "return nil when referencing an invalid definition" do
68
- assert_equal(nil, @resource[:winny])
69
- end
70
-
71
- end
72
-
73
-
74
-
75
-
76
23
  end
@@ -23,21 +23,19 @@ class TestScenarios < Test::Unit::TestCase
23
23
 
24
24
  setup do
25
25
  Scenarios.clear
26
- @world = stub(:name => :world)
27
26
  @baz = stub(:name => :baz)
28
27
  @foo = stub(:name => :foo)
29
- Scenarios.register("foo", @foo)
30
- Scenarios.register("foo", @baz)
31
- Scenarios.register("hello", @world)
28
+ Scenarios.register(@foo)
29
+ Scenarios.register(@baz)
32
30
  end
33
31
 
34
32
  should "return correct store" do
35
- assert_equal({:foo => {:foo => @foo, :baz => @baz}, :hello => {:world => @world}}, Scenarios.store)
33
+ assert_equal({:foo => @foo, :baz => @baz}, Scenarios.store)
36
34
  end
37
35
 
38
36
  should "return correct vals for keys" do
39
- assert_equal({:foo => @foo, :baz => @baz}, Scenarios[:foo])
40
- assert_equal({:world => @world}, Scenarios[:hello])
37
+ assert_equal(@foo, Scenarios[:foo])
38
+ assert_equal(@baz, Scenarios[:baz])
41
39
  end
42
40
 
43
41
  end
data/test/system_test.rb CHANGED
@@ -10,63 +10,22 @@ class TestSystem < Test::Unit::TestCase
10
10
  Scenarios.clear
11
11
 
12
12
  class SampleScenarios < Scenarios::Base
13
- name "sample"
14
-
15
13
  scenario :one do
16
- setup do
17
- @foo = :bar
18
- end
19
-
20
- define :params do
21
- { :foo => @foo }
22
- end
23
-
24
- define :env do
25
- { :one => 1, :two => 2, :three => 3 }
26
- end
27
-
28
- end.setup!
29
-
30
- scenario :two do
31
- setup do
32
- @foo = :baz
33
- end
34
-
35
- define :params do
36
- { :foo => @foo }
37
- end
38
-
39
- end.setup!
14
+ 1
15
+ end
40
16
  end
41
17
 
42
18
  class MoreScenarios < Scenarios::Base
43
- name "more"
44
-
45
- scenario :three do
46
- setup do
47
- @foo = :what
48
- end
49
-
50
- define :params do
51
- { :foo => @foo }
52
- end
53
- end.setup!
19
+ scenario :two do
20
+ 2
21
+ end
54
22
  end
55
23
 
56
24
  end
57
25
 
58
- should "register group with module" do
59
- assert Scenarios[:sample]
60
- end
61
-
62
26
  should "register scenarios with module" do
63
- assert_equal 2, Scenarios[:sample].size
64
- end
65
-
66
- should "have scenarios return correct values " do
67
- assert_equal({:foo => :bar}, Scenarios[:sample][:one][:params])
68
- assert_equal({ :one => 1, :two => 2, :three => 3 }, Scenarios[:sample][:one][:env])
69
- assert_equal({:foo => :baz}, Scenarios[:sample][:two][:params])
27
+ assert_equal 1, Scenarios[:one].generate
28
+ assert_equal 2, Scenarios[:two].generate
70
29
  end
71
30
 
72
31
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Starr Horne
@@ -56,10 +56,12 @@ files:
56
56
  - LICENSE
57
57
  - README.rdoc
58
58
  - Rakefile
59
+ - VERSION
59
60
  - lib/scenarios.rb
60
61
  - lib/scenarios/base.rb
61
62
  - lib/scenarios/proc_extensions.rb
62
63
  - lib/scenarios/scenario.rb
64
+ - scenarios.gemspec
63
65
  - test/base_test.rb
64
66
  - test/helper.rb
65
67
  - test/scenario_test.rb