backyard 0.0.1 → 0.1.0

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.
@@ -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