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.
- data/Gemfile.lock +15 -0
- data/Guardfile +5 -0
- data/History.txt +9 -0
- data/backyard.gemspec +2 -0
- data/lib/backyard.rb +6 -0
- data/lib/backyard/adapter.rb +1 -1
- data/lib/backyard/configuration.rb +23 -8
- data/lib/backyard/session.rb +14 -15
- data/lib/backyard/version.rb +1 -1
- data/spec/backyard/configuration_spec.rb +8 -11
- data/spec/backyard_spec.rb +10 -0
- metadata +92 -96
data/Gemfile.lock
CHANGED
@@ -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
|
data/Guardfile
ADDED
data/History.txt
CHANGED
data/backyard.gemspec
CHANGED
@@ -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"
|
data/lib/backyard.rb
CHANGED
data/lib/backyard/adapter.rb
CHANGED
@@ -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(*
|
17
|
-
|
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
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
data/lib/backyard/session.rb
CHANGED
@@ -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
|
10
|
-
# @param [String] name
|
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
|
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]
|
32
|
-
# @param [String] name
|
33
|
-
# @return [Object, nil]
|
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]
|
43
|
-
# @param [String] name
|
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
|
56
|
-
# @param [String] name
|
57
|
-
# @return [Object]
|
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
|
69
|
-
# @return [Array<Object>]
|
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
|
data/lib/backyard/version.rb
CHANGED
@@ -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.
|
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 "
|
46
|
-
|
47
|
-
|
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
|
-
|
53
|
-
|
54
|
-
|
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
|
data/spec/backyard_spec.rb
CHANGED
@@ -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
|
-
|
5
|
-
|
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
|
-
|
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
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
31
23
|
type: :development
|
32
|
-
|
33
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
81
|
-
|
82
|
-
|
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
|
-
|
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
|
-
|
94
|
-
- 0
|
95
|
-
version: "0"
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
96
100
|
type: :development
|
97
|
-
|
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
|
-
|
156
|
-
|
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
|
-
|
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.
|
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
|