backyard 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,7 @@ GEM
10
10
  activesupport (= 2.3.10)
11
11
  activesupport (2.3.10)
12
12
  builder (3.0.0)
13
+ configuration (1.2.0)
13
14
  cucumber (0.10.0)
14
15
  builder (>= 2.1.2)
15
16
  diff-lcs (~> 1.1.2)
@@ -20,7 +21,18 @@ GEM
20
21
  factory_girl (1.3.2)
21
22
  gherkin (2.3.3)
22
23
  json (~> 1.4.6)
24
+ guard (0.3.0)
25
+ open_gem (~> 1.4.2)
26
+ thor (~> 0.14.6)
27
+ guard-rspec (0.2.0)
28
+ guard (>= 0.2.2)
23
29
  json (1.4.6)
30
+ launchy (0.3.7)
31
+ configuration (>= 0.0.5)
32
+ rake (>= 0.8.1)
33
+ open_gem (1.4.2)
34
+ launchy (~> 0.3.5)
35
+ rake (0.8.7)
24
36
  rspec (2.4.0)
25
37
  rspec-core (~> 2.4.0)
26
38
  rspec-expectations (~> 2.4.0)
@@ -31,6 +43,7 @@ GEM
31
43
  rspec-mocks (2.4.0)
32
44
  sqlite3 (1.3.3)
33
45
  term-ansicolor (1.0.5)
46
+ thor (0.14.6)
34
47
  yard (0.6.4)
35
48
 
36
49
  PLATFORMS
@@ -41,6 +54,8 @@ DEPENDENCIES
41
54
  backyard!
42
55
  cucumber
43
56
  factory_girl
57
+ guard
58
+ guard-rspec
44
59
  rspec
45
60
  sqlite3
46
61
  yard
@@ -0,0 +1,5 @@
1
+ guard 'rspec' do
2
+ watch(/^spec\/.+_spec\.rb/)
3
+ watch(/^lib\/(.+)\.rb/) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
@@ -4,6 +4,15 @@
4
4
 
5
5
  === Bugfixes
6
6
 
7
+
8
+ == 0.1.0 (25.10.2011)
9
+
10
+ === New Features
11
+ * global_store for seed data across features
12
+ * unify name_attribute and name_for
13
+
14
+ === Bugfixes
15
+
7
16
  == 0.0.1 (24.01.2011)
8
17
 
9
18
  === New Features
@@ -16,6 +16,8 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_development_dependency "rspec"
18
18
  s.add_development_dependency "cucumber"
19
+ s.add_development_dependency "guard"
20
+ s.add_development_dependency "guard-rspec"
19
21
  s.add_development_dependency "factory_girl"
20
22
  s.add_development_dependency "activerecord"
21
23
  s.add_development_dependency "sqlite3"
@@ -13,4 +13,10 @@ module Backyard
13
13
  @config ||= Backyard::Configuration.new
14
14
  @config
15
15
  end
16
+
17
+ def self.global_store
18
+ return @global_store if @global_store
19
+ @global_store = Object.new
20
+ @global_store.extend Backyard::Session
21
+ end
16
22
  end
@@ -6,7 +6,7 @@ module Backyard
6
6
  end
7
7
 
8
8
  def generate_model_name(model_type)
9
- "#{model_type.to_s.capitalize} #{Time.now.to_f}"
9
+ "#{model_type.to_s.capitalize} #{Time.now.to_f}".tap{|s| s << s.object_id.to_s}
10
10
  end
11
11
 
12
12
  def create(model_type, attributes)
@@ -1,8 +1,11 @@
1
1
  module Backyard
2
2
  class Configuration
3
3
 
4
+ attr_reader :adapter
5
+
4
6
  def initialize
5
7
  @model_configuration ||= {}
8
+ @adapter ||= :factory_girl
6
9
  end
7
10
 
8
11
  def name_attribute(attribute, options = {})
@@ -13,10 +16,16 @@ module Backyard
13
16
  end
14
17
  end
15
18
 
16
- def name_for(*model_types, &block)
17
- model_types.each do |model_type|
19
+ def name_for(*args, &block)
20
+ options = args.extract_options!
21
+ args.each do |model_type|
18
22
  klass = adapter_instance.class_for_type(model_type)
19
- config_for(klass).name_blocks << block
23
+
24
+ if options.has_key?(:attribute)
25
+ config_for(klass).name_attributes << options[:attribute]
26
+ else
27
+ config_for(klass).name_blocks << block
28
+ end
20
29
  end
21
30
  end
22
31
 
@@ -29,12 +38,18 @@ module Backyard
29
38
  end
30
39
 
31
40
  def adapter_instance
32
- return @adapter_instance if @adapter_instance
33
- @adapter ||= :factory_girl
34
- require File.join('backyard', 'adapter', "#{@adapter}")
35
- adapter_class = @adapter.to_s.split('_').map!{ |w| w.capitalize }.join
36
- @adapter_instance = eval "Backyard::Adapter::#{adapter_class}.new"
41
+ @adapter_instance ||= adapter_klass.new
42
+ end
43
+
44
+ def adapter_klass
45
+ adapter_name = adapter.to_s.split('_').map!{ |w| w.capitalize }.join
46
+ adapter_class = "Backyard::Adapter::#{adapter_name}"
47
+ unless eval("defined?(#{adapter_class}) && #{adapter_class}.is_a?(Class)") == true
48
+ require File.join('backyard', 'adapter', "#{adapter}")
49
+ end
50
+ eval adapter_class
37
51
  end
52
+ private :adapter_klass
38
53
 
39
54
  class Model
40
55
  attr_writer :name_attributes, :name_blocks
@@ -6,13 +6,13 @@ module Backyard
6
6
  # @overload put_model(type, name, attributes)
7
7
  # creates an instance from type 'type' and saved it under the
8
8
  # passed name. The attributes are forwarded to the object creation
9
- # @param [Symbol] type the type of object that should get created
10
- # @param [String] name the name for the newly created object
9
+ # @param [Symbol] type
10
+ # @param [String] name
11
11
  # @param [Hash] attributes additional parameters for the object creation
12
12
  # @overload put_model(object, name)
13
13
  # stores the given object under 'name'
14
14
  # @param [Object] object the object to store
15
- # @param [String] name the name for the object
15
+ # @param [String] name
16
16
  # @return [Object] the object, which was stored
17
17
  def put_model(model_type, name = nil, attributes = {})
18
18
  model_name = name.nil? ? adapter.generate_model_name(model_type) : name
@@ -28,19 +28,19 @@ module Backyard
28
28
 
29
29
  # Retrieve a stored object from the backyard.
30
30
  #
31
- # @param [Symbol] type the type of the object to retrieve
32
- # @param [String] name the name of the object to retrieve
33
- # @return [Object, nil] the object with the given type and name
31
+ # @param [Symbol] model_type
32
+ # @param [String] name
33
+ # @return [Object, nil]
34
34
  def get_model(model_type, name)
35
35
  klass = class_for_type(model_type)
36
- result = model_store.get(klass, name)
36
+ result = model_store.get(klass, name) || Backyard.global_store.model_store.get(klass, name)
37
37
  reload_model(result)
38
38
  end
39
39
 
40
40
  # Check if a model is stored in the backyard.
41
41
  #
42
- # @param [Symbol] type the type of the object
43
- # @param [String] name the name of the object
42
+ # @param [Symbol] model_type
43
+ # @param [String] name
44
44
  # @return [true, false]
45
45
  def model_exists?(model_type, name)
46
46
  get_model(model_type, name) != nil
@@ -52,9 +52,9 @@ module Backyard
52
52
  # @see #get_model
53
53
  # @see #put_model
54
54
  #
55
- # @param [Symbol] model_type the type of the object
56
- # @param [String] name the name of the object
57
- # @return [Object] an object with the given type and name
55
+ # @param [Symbol] model_type
56
+ # @param [String] name
57
+ # @return [Object]
58
58
  def model(model_type, name, attributes = {})
59
59
  if model_exists?(model_type, name)
60
60
  get_model(model_type, name)
@@ -65,8 +65,8 @@ module Backyard
65
65
 
66
66
  # Retrieve all objects for a given type.
67
67
  #
68
- # @param [Symbol] type the type of the objects to retrieve
69
- # @return [Array<Object>] an array of objects of the given type
68
+ # @param [Symbol] type
69
+ # @return [Array<Object>]
70
70
  def get_models(model_type)
71
71
  model_store.get_collection class_for_type(model_type)
72
72
  end
@@ -105,6 +105,5 @@ module Backyard
105
105
  end
106
106
  Hash[name_attributes].merge(block_attributes)
107
107
  end
108
-
109
108
  end
110
109
  end
@@ -1,3 +1,3 @@
1
1
  module Backyard
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -7,7 +7,7 @@ describe Backyard::Configuration do
7
7
  describe "#name_attribute" do
8
8
  context "with single for key" do
9
9
  it "should store the specified attribtues" do
10
- subject.name_attribute :username, :for => :string
10
+ subject.name_for :string, :attribute => :username
11
11
  subject.config_for(String).name_attributes.should == [:username]
12
12
  end
13
13
  end
@@ -42,19 +42,16 @@ describe Backyard::Configuration do
42
42
  end
43
43
  end
44
44
 
45
- describe "#use_adapter" do
46
- it "should set the specified adapter" do
47
- subject.use_adapter :factory_girl
45
+ describe "adapter" do
46
+ class Backyard::Adapter::Special; end
47
+
48
+ it "should use the factory_girl adapter by default" do
48
49
  subject.adapter_instance.should be_kind_of(Backyard::Adapter::FactoryGirl)
49
50
  end
50
- end
51
51
 
52
- describe "#adapter_instance" do
53
- describe "default: " do
54
- it "should return the factory girl adapter" do
55
- subject.adapter_instance.should be_kind_of(Backyard::Adapter::FactoryGirl)
56
- end
52
+ it "should use the adapter specified with #use_adapter" do
53
+ subject.use_adapter :special
54
+ subject.adapter_instance.should be_kind_of(Backyard::Adapter::Special)
57
55
  end
58
56
  end
59
-
60
57
  end
@@ -19,4 +19,14 @@ describe Backyard do
19
19
  end
20
20
  end
21
21
 
22
+ describe ".global_store" do
23
+ it "is a Backyard::Session" do
24
+ Backyard.global_store.should be_kind_of(Backyard::Session)
25
+ end
26
+
27
+ it "is always the same object" do
28
+ Backyard.global_store.should == Backyard.global_store
29
+ end
30
+ end
31
+
22
32
  end
metadata CHANGED
@@ -1,113 +1,116 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: backyard
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Yves Senn
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-01-24 00:00:00 +01:00
12
+ date: 2011-10-25 00:00:00.000000000 +02:00
18
13
  default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
21
16
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2165748100 !ruby/object:Gem::Requirement
24
18
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
31
23
  type: :development
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
24
+ prerelease: false
25
+ version_requirements: *2165748100
26
+ - !ruby/object:Gem::Dependency
34
27
  name: cucumber
28
+ requirement: &2165747440 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
35
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ version_requirements: *2165747440
37
+ - !ruby/object:Gem::Dependency
38
+ name: guard
39
+ requirement: &2165746440 !ruby/object:Gem::Requirement
37
40
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
44
45
  type: :development
45
- version_requirements: *id002
46
- - !ruby/object:Gem::Dependency
47
- name: factory_girl
48
46
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
47
+ version_requirements: *2165746440
48
+ - !ruby/object:Gem::Dependency
49
+ name: guard-rspec
50
+ requirement: &2165745820 !ruby/object:Gem::Requirement
50
51
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
57
56
  type: :development
58
- version_requirements: *id003
59
- - !ruby/object:Gem::Dependency
60
- name: activerecord
61
57
  prerelease: false
62
- requirement: &id004 !ruby/object:Gem::Requirement
58
+ version_requirements: *2165745820
59
+ - !ruby/object:Gem::Dependency
60
+ name: factory_girl
61
+ requirement: &2165745160 !ruby/object:Gem::Requirement
63
62
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
- version: "0"
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
70
67
  type: :development
71
- version_requirements: *id004
72
- - !ruby/object:Gem::Dependency
73
- name: sqlite3
74
68
  prerelease: false
75
- requirement: &id005 !ruby/object:Gem::Requirement
69
+ version_requirements: *2165745160
70
+ - !ruby/object:Gem::Dependency
71
+ name: activerecord
72
+ requirement: &2165744500 !ruby/object:Gem::Requirement
76
73
  none: false
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- segments:
81
- - 0
82
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *2165744500
81
+ - !ruby/object:Gem::Dependency
82
+ name: sqlite3
83
+ requirement: &2165743860 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
83
89
  type: :development
84
- version_requirements: *id005
85
- - !ruby/object:Gem::Dependency
86
- name: yard
87
90
  prerelease: false
88
- requirement: &id006 !ruby/object:Gem::Requirement
91
+ version_requirements: *2165743860
92
+ - !ruby/object:Gem::Dependency
93
+ name: yard
94
+ requirement: &2165743220 !ruby/object:Gem::Requirement
89
95
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- segments:
94
- - 0
95
- version: "0"
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
96
100
  type: :development
97
- version_requirements: *id006
101
+ prerelease: false
102
+ version_requirements: *2165743220
98
103
  description: backyard allows you to name the models in your cucumber scenarios.
99
- email:
104
+ email:
100
105
  - yves.senn@gmail.com
101
106
  executables: []
102
-
103
107
  extensions: []
104
-
105
108
  extra_rdoc_files: []
106
-
107
- files:
109
+ files:
108
110
  - .gitignore
109
111
  - Gemfile
110
112
  - Gemfile.lock
113
+ - Guardfile
111
114
  - History.txt
112
115
  - README.md
113
116
  - Rakefile
@@ -141,36 +144,29 @@ files:
141
144
  has_rdoc: true
142
145
  homepage: http://rubygems.org/gems/backyard
143
146
  licenses: []
144
-
145
147
  post_install_message:
146
148
  rdoc_options: []
147
-
148
- require_paths:
149
+ require_paths:
149
150
  - lib
150
- required_ruby_version: !ruby/object:Gem::Requirement
151
+ required_ruby_version: !ruby/object:Gem::Requirement
151
152
  none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- segments:
156
- - 0
157
- version: "0"
158
- required_rubygems_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
158
  none: false
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- segments:
164
- - 0
165
- version: "0"
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
166
163
  requirements: []
167
-
168
164
  rubyforge_project: backyard
169
- rubygems_version: 1.3.7
165
+ rubygems_version: 1.6.2
170
166
  signing_key:
171
167
  specification_version: 3
172
168
  summary: manage the models in your cucumbers with ease
173
- test_files:
169
+ test_files:
174
170
  - features/backyard_with_factory_girl.feature
175
171
  - features/step_definitions/backyard_account_steps.rb
176
172
  - features/step_definitions/backyard_steps.rb