assembly_line 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.md CHANGED
@@ -1,6 +1,12 @@
1
1
  History
2
2
  =======
3
3
 
4
+ 0.2.1
5
+ -----
6
+ *2010-02-10*
7
+
8
+ * [fixed] Defining methods on kernel, BAD! Use AssemblyLine#method_name when using irb
9
+
4
10
  0.2.0
5
11
  -----
6
12
  *2010-02-08*
data/README.md CHANGED
@@ -80,9 +80,12 @@ Example
80
80
 
81
81
  ### Use your AssemblyLine in an irb session
82
82
 
83
+ AssemblyLine works a little differently when using it in irb. Your `let` definitions will not be defined globally (see [e26a903](http://github.com/sandro/commit/e26a903)), instead you'll have to prefix all defined methods with `AssemblyLine`.
84
+
83
85
  >> Assemble(:drinks)
84
86
  => #<AssemblyLine::Constructor:0x10049e958 @code_block=#<Proc:0x000000010049ea98@(irb):1>, @name=:drinks, @rspec_context=AssemblyLine::GlobalContext, @options={}>
85
- >> drinks
87
+ >>
88
+ >> AssemblyLine.drinks # the `drinks` method is prefixed with AssemblyLine
86
89
  => [:gin, :vodka]
87
90
 
88
91
 
@@ -92,7 +95,8 @@ Thanks!
92
95
  - l4rk (initial spike declaring modules and including them in the rspec context)
93
96
  - veezus (code contributions, introduced modular design / dependencies)
94
97
  - bigtiger (named the project)
95
- - leshill (support and testing)
98
+ - leshill (support and testing, suggested irb support)
99
+ - wgibbs (suggested irb support)
96
100
 
97
101
 
98
102
  Note on Patches/Pull Requests
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{assembly_line}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sandro Turriate"]
12
- s.date = %q{2010-02-08}
12
+ s.date = %q{2010-02-10}
13
13
  s.description = %q{Assembly Line allows you to group together a series of rspec `let` statements which can later be evaluated to set up a specific state for your specs.}
14
14
  s.email = %q{sandro.turriate@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -26,10 +26,10 @@ Gem::Specification.new do |s|
26
26
  "assembly_line.gemspec",
27
27
  "lib/assembly_line.rb",
28
28
  "lib/assembly_line/constructor.rb",
29
- "lib/assembly_line/global_context.rb",
29
+ "lib/assembly_line/generic_context.rb",
30
30
  "lib/assembly_line/registry.rb",
31
31
  "spec/assembly_line/constructor_spec.rb",
32
- "spec/assembly_line/global_context_spec.rb",
32
+ "spec/assembly_line/generic_context_spec.rb",
33
33
  "spec/assembly_line/registry_spec.rb",
34
34
  "spec/assembly_line_spec.rb",
35
35
  "spec/functional/assemble_spec.rb",
@@ -44,7 +44,7 @@ Gem::Specification.new do |s|
44
44
  s.summary = %q{Modularize setup blocks for rspec}
45
45
  s.test_files = [
46
46
  "spec/assembly_line/constructor_spec.rb",
47
- "spec/assembly_line/global_context_spec.rb",
47
+ "spec/assembly_line/generic_context_spec.rb",
48
48
  "spec/assembly_line/registry_spec.rb",
49
49
  "spec/assembly_line_spec.rb",
50
50
  "spec/functional/assemble_spec.rb",
@@ -1,17 +1,22 @@
1
1
  require 'forwardable'
2
2
  require 'assembly_line/registry'
3
3
  require 'assembly_line/constructor'
4
- require 'assembly_line/global_context'
4
+ require 'assembly_line/generic_context'
5
5
 
6
6
  module AssemblyLine
7
- VERSION = "0.2.0".freeze
7
+ VERSION = "0.2.1".freeze
8
+ extend SingleForwardable
9
+
10
+ def self.assemble(name, context, options={})
11
+ Registry.locate(name).assemble(context, options)
12
+ end
8
13
 
9
14
  def self.define(name, &block)
10
15
  Registry.add(name, block)
11
16
  end
12
17
 
13
- def self.assemble(name, rspec_context, options={})
14
- Registry.locate(name).assemble(rspec_context, options)
18
+ def self.generic_context
19
+ @generic_context ||= GenericContext.new
15
20
  end
16
21
 
17
22
  def Assemble(name, options={})
@@ -20,15 +25,7 @@ module AssemblyLine
20
25
  end
21
26
 
22
27
  module Kernel
23
- extend Forwardable
24
-
25
28
  def Assemble(name, options={})
26
- AssemblyLine.assemble(name, assembly_line_global_context, options)
27
- end
28
-
29
- protected
30
-
31
- def assembly_line_global_context
32
- AssemblyLine::GlobalContext
29
+ AssemblyLine.assemble(name, AssemblyLine.generic_context, options)
33
30
  end
34
31
  end
@@ -2,9 +2,9 @@ module AssemblyLine
2
2
  class Constructor
3
3
  extend Forwardable
4
4
 
5
- def_delegators :rspec_context, :let, :before
5
+ def_delegators :context, :let, :before
6
6
 
7
- attr_reader :name, :code_block, :rspec_context, :options
7
+ attr_reader :name, :code_block, :context, :options
8
8
 
9
9
  def initialize(name, code_block)
10
10
  @name = name
@@ -13,7 +13,7 @@ module AssemblyLine
13
13
 
14
14
  def assemble(context, options)
15
15
  @options = options
16
- @rspec_context = context
16
+ @context = context
17
17
  instance_eval(&code_block)
18
18
  self
19
19
  end
@@ -31,7 +31,7 @@ module AssemblyLine
31
31
  constructors = Array(options[:depends_on])
32
32
  end
33
33
  constructors.each do |name|
34
- AssemblyLine.assemble(name, rspec_context)
34
+ AssemblyLine.assemble(name, context)
35
35
  end
36
36
  end
37
37
 
@@ -1,12 +1,11 @@
1
1
  module AssemblyLine
2
- module GlobalContext
3
- extend self
2
+ class GenericContext
4
3
 
5
4
  def let(name, &block)
6
5
  define_method name do
7
6
  let_values[name] ||= instance_eval(&block)
8
7
  end
9
- ::Kernel.def_delegator :assembly_line_global_context, name
8
+ AssemblyLine.def_delegator :generic_context, name
10
9
  end
11
10
 
12
11
  # there are no tests so just run the block
@@ -26,6 +25,8 @@ module AssemblyLine
26
25
  @let_values ||= {}
27
26
  end
28
27
 
29
- attr_writer :context
28
+ def define_method(name, &block)
29
+ self.class.send(:define_method, name, &block)
30
+ end
30
31
  end
31
32
  end
@@ -19,7 +19,7 @@ describe AssemblyLine::Constructor do
19
19
  end
20
20
  it "persists context" do
21
21
  constructor.assemble(rspec_context, options)
22
- constructor.rspec_context.should == rspec_context
22
+ constructor.context.should == rspec_context
23
23
  end
24
24
 
25
25
  it "persists context" do
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe AssemblyLine::GenericContext do
4
+ let(:generic_context) { AssemblyLine.generic_context }
5
+
6
+ after { generic_context.clear }
7
+
8
+ describe "#let" do
9
+ it "defines the method on the GenericContext instance" do
10
+ generic_context.let(:foobarish) { :bar }
11
+ generic_context.foobarish.should == :bar
12
+ end
13
+
14
+ it "memoizes the defined method" do
15
+ generic_context.instance_variable_set(:@count, 0)
16
+ generic_context.let(:my_count) { @count += 1 }
17
+ 5.times { generic_context.my_count }
18
+ generic_context.my_count.should == 1
19
+ end
20
+
21
+ it "adds a delegating method to AssemblyLine" do
22
+ generic_context.let(:global_method) { :global }
23
+ AssemblyLine.global_method.should == :global
24
+ end
25
+ end
26
+
27
+ describe "#before" do
28
+ it "runs the code block" do
29
+ expect do
30
+ generic_context.before { @done = true }
31
+ end.to change { generic_context.instance_variable_get(:@done) }.from(nil).to(true)
32
+ end
33
+ end
34
+ end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- global_assembly_set_up = lambda do
3
+ set_up_assembly = lambda do
4
4
  AssemblyLine.define(:global_assembly) do
5
- let(:foo) { @bar +=1 }
5
+ let(:foo) { @bar += 1 }
6
6
  before do
7
7
  @bar = 0
8
8
  end
@@ -10,21 +10,17 @@ global_assembly_set_up = lambda do
10
10
  Assemble(:global_assembly)
11
11
  end
12
12
 
13
- def call_global_assembly(count = 5)
14
- (count - 1).times { foo }
15
- foo
16
- end
17
-
18
13
  describe "in the global context" do
19
- before(:all) do
20
- global_assembly_set_up.call
14
+ before do
15
+ set_up_assembly.call
21
16
  end
22
17
 
23
- it "defined the method within AssemblyLine::GlobalContext" do
24
- AssemblyLine::GlobalContext.should respond_to(:foo)
18
+ it "defines the method on AssemblyLine.generic_context" do
19
+ AssemblyLine.generic_context.should respond_to(:foo)
25
20
  end
26
21
 
27
- it "does not increase the value because the method is memoized" do
28
- call_global_assembly.should == 1
22
+ it "memoizes the value" do
23
+ 5.times { AssemblyLine.foo }
24
+ AssemblyLine.foo.should == 1
29
25
  end
30
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assembly_line
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Turriate
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-08 00:00:00 -05:00
12
+ date: 2010-02-10 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -51,10 +51,10 @@ files:
51
51
  - assembly_line.gemspec
52
52
  - lib/assembly_line.rb
53
53
  - lib/assembly_line/constructor.rb
54
- - lib/assembly_line/global_context.rb
54
+ - lib/assembly_line/generic_context.rb
55
55
  - lib/assembly_line/registry.rb
56
56
  - spec/assembly_line/constructor_spec.rb
57
- - spec/assembly_line/global_context_spec.rb
57
+ - spec/assembly_line/generic_context_spec.rb
58
58
  - spec/assembly_line/registry_spec.rb
59
59
  - spec/assembly_line_spec.rb
60
60
  - spec/functional/assemble_spec.rb
@@ -91,7 +91,7 @@ specification_version: 3
91
91
  summary: Modularize setup blocks for rspec
92
92
  test_files:
93
93
  - spec/assembly_line/constructor_spec.rb
94
- - spec/assembly_line/global_context_spec.rb
94
+ - spec/assembly_line/generic_context_spec.rb
95
95
  - spec/assembly_line/registry_spec.rb
96
96
  - spec/assembly_line_spec.rb
97
97
  - spec/functional/assemble_spec.rb
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe AssemblyLine::GlobalContext do
4
- let(:global_context) { AssemblyLine::GlobalContext }
5
- after { global_context.clear }
6
-
7
- describe "#let" do
8
- it "defines the method within AssemblyLine::GlobalContext" do
9
- global_context.let(:foobarish) { :bar }
10
- global_context.foobarish.should == :bar
11
- end
12
-
13
- it "memoizes the defined method" do
14
- global_context.instance_variable_set(:@count, 0)
15
- global_context.let(:my_count) { @count += 1 }
16
- 5.times { global_context.my_count }
17
- global_context.my_count.should == 1
18
- end
19
-
20
- it "tells Kernel to delegate this method to AssemblyLine::GlobalContext" do
21
- global_context.let(:global_method) { :global }
22
- Kernel.global_method.should == :global
23
- end
24
- end
25
-
26
- describe "#before" do
27
- it "runs the code block" do
28
- expect do
29
- global_context.before { @done = true }
30
- end.to change { global_context.instance_variable_get(:@done) }.from(nil).to(true)
31
- end
32
- end
33
- end