tenacity 0.4.1 → 0.5.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/.gitignore +1 -0
- data/EXTEND.rdoc +18 -21
- data/Gemfile +0 -2
- data/README.rdoc +3 -1
- data/Rakefile +7 -0
- data/history.txt +17 -0
- data/lib/tenacity.rb +4 -0
- data/lib/tenacity/associates_proxy.rb +5 -7
- data/lib/tenacity/association.rb +9 -47
- data/lib/tenacity/associations/belongs_to.rb +1 -2
- data/lib/tenacity/associations/has_many.rb +27 -21
- data/lib/tenacity/associations/has_one.rb +3 -2
- data/lib/tenacity/class_methods.rb +14 -60
- data/lib/tenacity/errors.rb +8 -0
- data/lib/tenacity/instance_methods.rb +42 -12
- data/lib/tenacity/orm_ext/activerecord.rb +11 -32
- data/lib/tenacity/orm_ext/couchrest.rb +14 -22
- data/lib/tenacity/orm_ext/datamapper.rb +14 -31
- data/lib/tenacity/orm_ext/helpers.rb +3 -3
- data/lib/tenacity/orm_ext/mongo_mapper.rb +16 -22
- data/lib/tenacity/orm_ext/mongoid.rb +10 -18
- data/lib/tenacity/orm_ext/ripple.rb +270 -0
- data/lib/tenacity/orm_ext/sequel.rb +21 -33
- data/lib/tenacity/orm_ext/toystore.rb +114 -0
- data/lib/tenacity/version.rb +1 -1
- data/tenacity.gemspec +10 -3
- data/test/association_features/belongs_to_test.rb +12 -0
- data/test/association_features/has_many_test.rb +32 -2
- data/test/association_features/has_one_test.rb +18 -4
- data/test/associations/has_one_test.rb +0 -1
- data/test/core/classmethods_test.rb +7 -0
- data/test/fixtures/active_record_has_many_target.rb +4 -0
- data/test/fixtures/active_record_has_one_target.rb +4 -0
- data/test/fixtures/active_record_object.rb +8 -0
- data/test/fixtures/couch_rest_has_many_target.rb +4 -0
- data/test/fixtures/couch_rest_has_one_target.rb +4 -0
- data/test/fixtures/couch_rest_object.rb +8 -0
- data/test/fixtures/data_mapper_has_many_target.rb +10 -0
- data/test/fixtures/data_mapper_has_one_target.rb +10 -0
- data/test/fixtures/data_mapper_object.rb +8 -0
- data/test/fixtures/mongo_mapper_has_many_target.rb +4 -0
- data/test/fixtures/mongo_mapper_has_one_target.rb +4 -0
- data/test/fixtures/mongo_mapper_object.rb +8 -0
- data/test/fixtures/mongoid_has_many_target.rb +4 -0
- data/test/fixtures/mongoid_has_one_target.rb +4 -0
- data/test/fixtures/mongoid_object.rb +8 -0
- data/test/fixtures/no_associations.rb +4 -0
- data/test/fixtures/ripple_has_many_target.rb +24 -0
- data/test/fixtures/ripple_has_one_target.rb +24 -0
- data/test/fixtures/ripple_object.rb +42 -0
- data/test/fixtures/sequel_has_many_target.rb +4 -0
- data/test/fixtures/sequel_has_one_target.rb +4 -0
- data/test/fixtures/sequel_object.rb +8 -0
- data/test/fixtures/toystore_has_many_target.rb +28 -0
- data/test/fixtures/toystore_has_one_target.rb +28 -0
- data/test/fixtures/toystore_object.rb +46 -0
- data/test/helpers/active_record_test_helper.rb +12 -95
- data/test/helpers/data_mapper_test_helper.rb +0 -64
- data/test/helpers/ripple_test_helper.rb +19 -0
- data/test/helpers/sequel_test_helper.rb +13 -60
- data/test/helpers/toystore_test_helper.rb +17 -0
- data/test/orm_ext/activerecord_test.rb +16 -26
- data/test/orm_ext/couchrest_test.rb +10 -29
- data/test/orm_ext/datamapper_test.rb +16 -29
- data/test/orm_ext/mongo_mapper_test.rb +11 -29
- data/test/orm_ext/mongoid_test.rb +11 -29
- data/test/orm_ext/ripple_test.rb +140 -0
- data/test/orm_ext/sequel_test.rb +15 -26
- data/test/orm_ext/toystore_test.rb +103 -0
- data/test/test_helper.rb +35 -23
- metadata +99 -133
@@ -32,15 +32,8 @@ module Tenacity
|
|
32
32
|
#
|
33
33
|
# == t_has_many
|
34
34
|
#
|
35
|
-
# The +t_has_many+ association requires
|
36
|
-
#
|
37
|
-
# The name of the join table in this example would be cars_wheels, since cars
|
38
|
-
# comes before wheels when shorted alphabetically.
|
39
|
-
#
|
40
|
-
# DB.create_table :cars_wheels do
|
41
|
-
# Integer :car_id
|
42
|
-
# String :wheel_id
|
43
|
-
# end
|
35
|
+
# The +t_has_many+ association requires nothing special, as the associates
|
36
|
+
# are looked up using the associate class.
|
44
37
|
#
|
45
38
|
module Sequel
|
46
39
|
|
@@ -79,7 +72,12 @@ module Tenacity
|
|
79
72
|
end
|
80
73
|
|
81
74
|
def _t_find_all_by_associate(property, id)
|
82
|
-
filter(property => _t_serialize(id)).to_a
|
75
|
+
filter(property.to_sym => _t_serialize(id)).to_a
|
76
|
+
end
|
77
|
+
|
78
|
+
def _t_find_all_ids_by_associate(property, id)
|
79
|
+
results = db["SELECT id FROM #{table_name} WHERE #{property} = #{_t_serialize_id_for_sql(id)}"].all
|
80
|
+
results.map { |r| r[:id] }
|
83
81
|
end
|
84
82
|
|
85
83
|
def _t_initialize_tenacity
|
@@ -112,6 +110,11 @@ module Tenacity
|
|
112
110
|
module InstanceMethods #:nodoc:
|
113
111
|
include Tenacity::OrmExt::Helpers
|
114
112
|
|
113
|
+
def before_save
|
114
|
+
_t_verify_associates_exist
|
115
|
+
super
|
116
|
+
end
|
117
|
+
|
115
118
|
def after_save
|
116
119
|
_t_save_autosave_associations
|
117
120
|
|
@@ -120,10 +123,7 @@ module Tenacity
|
|
120
123
|
super
|
121
124
|
end
|
122
125
|
|
123
|
-
def
|
124
|
-
associations = self.class._t_belongs_to_associations || []
|
125
|
-
associations.each { |association| self._t_cleanup_belongs_to_association(association) }
|
126
|
-
|
126
|
+
def before_destroy
|
127
127
|
associations = self.class._t_has_one_associations || []
|
128
128
|
associations.each { |association| self._t_cleanup_has_one_association(association) }
|
129
129
|
|
@@ -132,27 +132,15 @@ module Tenacity
|
|
132
132
|
super
|
133
133
|
end
|
134
134
|
|
135
|
-
def
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
def _t_clear_associates(association)
|
140
|
-
db["delete from #{association.join_table} where #{association.association_key} = #{_t_serialize_id_for_sql(self.id)}"].delete
|
141
|
-
end
|
142
|
-
|
143
|
-
def _t_associate_many(association, associate_ids)
|
144
|
-
db.transaction do
|
145
|
-
_t_clear_associates(association)
|
146
|
-
associate_ids.each do |associate_id|
|
147
|
-
db["insert into #{association.join_table} (#{association.association_key}, #{association.association_foreign_key}) values (#{_t_serialize_id_for_sql(self.id)}, #{_t_serialize_id_for_sql(associate_id)})"].insert
|
148
|
-
end
|
149
|
-
end
|
135
|
+
def after_destroy
|
136
|
+
associations = self.class._t_belongs_to_associations || []
|
137
|
+
associations.each { |association| self._t_cleanup_belongs_to_association(association) }
|
138
|
+
super
|
150
139
|
end
|
151
140
|
|
152
|
-
def
|
153
|
-
|
154
|
-
|
155
|
-
rows.map { |row| row[association.association_foreign_key.to_sym] }
|
141
|
+
def _t_reload
|
142
|
+
reload
|
143
|
+
self
|
156
144
|
end
|
157
145
|
end
|
158
146
|
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module Tenacity
|
2
|
+
module OrmExt
|
3
|
+
#
|
4
|
+
# Tenacity relationships on Toystore objects require no special attributes
|
5
|
+
# defined on the object. Tenacity will define the attributes that it needs
|
6
|
+
# to support the relationships. Take the following class for example:
|
7
|
+
#
|
8
|
+
# class Car
|
9
|
+
# include Toy::Store
|
10
|
+
# store :mongo, Mongo::Connection.new.db('tenacity')['toystore']
|
11
|
+
# include Tenacity
|
12
|
+
#
|
13
|
+
# t_has_many :wheels
|
14
|
+
# t_has_one :dashboard
|
15
|
+
# t_belongs_to :driver
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# <b>Please note that the data store must be established before including the Tenacity module.</b>
|
19
|
+
#
|
20
|
+
# == t_belongs_to
|
21
|
+
#
|
22
|
+
# The +t_belongs_to+ association will define an attribute named after the association.
|
23
|
+
# The example above will create an attribute named <tt>:driver_id</tt>
|
24
|
+
#
|
25
|
+
#
|
26
|
+
# == t_has_one
|
27
|
+
#
|
28
|
+
# The +t_has_one+ association will not define any new attributes on the object, since
|
29
|
+
# the associated object holds the foreign key.
|
30
|
+
#
|
31
|
+
#
|
32
|
+
# == t_has_many
|
33
|
+
#
|
34
|
+
# The +t_has_many+ association will define an attribute named after the association.
|
35
|
+
# The example above will create attribute named <tt>:wheels_ids</tt>
|
36
|
+
#
|
37
|
+
module Toystore
|
38
|
+
|
39
|
+
def self.setup(model) #:nodoc:
|
40
|
+
require 'toystore'
|
41
|
+
if model.included_modules.include?(::Toy::Store)
|
42
|
+
model.send :include, Toystore::InstanceMethods
|
43
|
+
model.extend Toystore::ClassMethods
|
44
|
+
end
|
45
|
+
rescue LoadError
|
46
|
+
# Toystore not available
|
47
|
+
end
|
48
|
+
|
49
|
+
module ClassMethods #:nodoc:
|
50
|
+
include Tenacity::OrmExt::Helpers
|
51
|
+
|
52
|
+
def _t_id_type
|
53
|
+
String
|
54
|
+
end
|
55
|
+
|
56
|
+
def _t_find(id)
|
57
|
+
(id.nil? || id.to_s.strip == "") ? nil : get(_t_serialize(id))
|
58
|
+
end
|
59
|
+
|
60
|
+
def _t_find_bulk(ids)
|
61
|
+
get_multi(_t_serialize_ids(ids)).compact
|
62
|
+
end
|
63
|
+
|
64
|
+
def _t_find_first_by_associate(property, id)
|
65
|
+
send("first_by_#{property}", id)
|
66
|
+
end
|
67
|
+
|
68
|
+
def _t_find_all_by_associate(property, id)
|
69
|
+
get_multi(_t_find_all_ids_by_associate(property, id))
|
70
|
+
end
|
71
|
+
|
72
|
+
def _t_find_all_ids_by_associate(property, id)
|
73
|
+
get_index(property.to_sym, id)
|
74
|
+
end
|
75
|
+
|
76
|
+
def _t_initialize_tenacity
|
77
|
+
before_save { |record| record._t_verify_associates_exist }
|
78
|
+
after_save { |record| record._t_save_autosave_associations }
|
79
|
+
end
|
80
|
+
|
81
|
+
def _t_initialize_has_one_association(association)
|
82
|
+
before_destroy { |record| record._t_cleanup_has_one_association(association) }
|
83
|
+
end
|
84
|
+
|
85
|
+
def _t_initialize_has_many_association(association)
|
86
|
+
after_save { |record| self.class._t_save_associates(record, association) }
|
87
|
+
before_destroy { |record| record._t_cleanup_has_many_association(association) }
|
88
|
+
end
|
89
|
+
|
90
|
+
def _t_initialize_belongs_to_association(association)
|
91
|
+
attribute association.foreign_key, id_class_for(association)
|
92
|
+
attribute association.polymorphic_type, String if association.polymorphic?
|
93
|
+
index(association.foreign_key.to_sym)
|
94
|
+
after_destroy { |record| record._t_cleanup_belongs_to_association(association) }
|
95
|
+
end
|
96
|
+
|
97
|
+
def _t_delete(ids, run_callbacks=true)
|
98
|
+
if run_callbacks
|
99
|
+
destroy(*ids)
|
100
|
+
else
|
101
|
+
delete(*ids)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
module InstanceMethods #:nodoc:
|
107
|
+
def _t_reload
|
108
|
+
reload
|
109
|
+
self
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
data/lib/tenacity/version.rb
CHANGED
data/tenacity.gemspec
CHANGED
@@ -33,13 +33,20 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.add_development_dependency "sequel", "~> 3.19.0"
|
34
34
|
|
35
35
|
# MongoDB
|
36
|
-
|
36
|
+
s.add_development_dependency "mongo_mapper", "~> 0.9.0"
|
37
37
|
s.add_development_dependency "bson_ext", "~> 1.3.0"
|
38
|
-
s.add_development_dependency "mongoid", "~> 2.0.0
|
38
|
+
s.add_development_dependency "mongoid", "~> 2.0.0"
|
39
39
|
|
40
40
|
# CouchDB
|
41
41
|
s.add_development_dependency "couchrest", "~> 1.0.0"
|
42
|
-
s.add_development_dependency "couchrest_model", "~> 1.0.0
|
42
|
+
s.add_development_dependency "couchrest_model", "~> 1.0.0"
|
43
|
+
|
44
|
+
# Riak
|
45
|
+
s.add_development_dependency "ripple", "~> 0.9.2"
|
46
|
+
|
47
|
+
# Multiple
|
48
|
+
s.add_development_dependency "toystore", "~> 0.8.0"
|
49
|
+
s.add_development_dependency "adapter-mongo", "~> 0.5.2"
|
43
50
|
|
44
51
|
s.files = `git ls-files`.split("\n")
|
45
52
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
@@ -82,6 +82,18 @@ class BelongsToTest < Test::Unit::TestCase
|
|
82
82
|
assert_equal alternator, MongoMapperCircuitBoard.find(circuit_board.id).diagnosable
|
83
83
|
assert_equal 'MongoMapperAlternator', circuit_board.diagnosable_type
|
84
84
|
end
|
85
|
+
|
86
|
+
should "not be able to create the relationship if the target object does not exist" do
|
87
|
+
ash_tray = MongoMapperAshTray.new(:mongo_mapper_dashboard_id => 'abc123')
|
88
|
+
assert_raises(Tenacity::ObjectDoesNotExistError) { ash_tray.save }
|
89
|
+
end
|
90
|
+
|
91
|
+
should "be able to create the relationship if the target object does not exist and foreign key constraints are disabled" do
|
92
|
+
Tenacity::Association.any_instance.stubs(:foreign_key_constraints_enabled?).returns(false)
|
93
|
+
ash_tray = MongoMapperAshTray.new(:mongo_mapper_dashboard_id => 'abc123')
|
94
|
+
ash_tray.save
|
95
|
+
assert_equal 'abc123', MongoMapperAshTray.find(ash_tray.id).mongo_mapper_dashboard_id
|
96
|
+
end
|
85
97
|
end
|
86
98
|
|
87
99
|
end
|
@@ -2,9 +2,11 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class HasManyTest < Test::Unit::TestCase
|
4
4
|
|
5
|
-
context "A class with a
|
5
|
+
context "A class with a has_many association to another class" do
|
6
6
|
setup do
|
7
|
-
|
7
|
+
setup_fixtures
|
8
|
+
setup_couchdb_fixtures
|
9
|
+
|
8
10
|
@car = ActiveRecordCar.create
|
9
11
|
@wheels = [MongoMapperWheel.create, MongoMapperWheel.create, MongoMapperWheel.create]
|
10
12
|
|
@@ -150,6 +152,34 @@ class HasManyTest < Test::Unit::TestCase
|
|
150
152
|
assert_set_equal ['ActiveRecordEngine', 'ActiveRecordEngine', 'ActiveRecordEngine'], components.map {|c| c.diagnosable_type}
|
151
153
|
end
|
152
154
|
|
155
|
+
context "with an a active t_belongs_to association that is not auto destroyed" do
|
156
|
+
setup do
|
157
|
+
@car = ActiveRecordCar.create
|
158
|
+
window_1 = MongoMapperWindow.create
|
159
|
+
window_2 = MongoMapperWindow.create
|
160
|
+
window_3 = MongoMapperWindow.create
|
161
|
+
window_4 = MongoMapperWindow.create
|
162
|
+
window_5 = MongoMapperWindow.create
|
163
|
+
window_6 = MongoMapperWindow.create
|
164
|
+
window_7 = MongoMapperWindow.create
|
165
|
+
window_8 = MongoMapperWindow.create
|
166
|
+
window_9 = MongoMapperWindow.create
|
167
|
+
@car.mongo_mapper_windows = [window_1, window_2, window_3, window_4, window_5, window_6, window_7, window_8, window_9]
|
168
|
+
@car.save
|
169
|
+
end
|
170
|
+
|
171
|
+
should "should not eligible for deletion" do
|
172
|
+
assert_raises(Tenacity::ObjectIdInUseError) { ActiveRecordCar._t_delete(@car.id) }
|
173
|
+
assert_not_nil ActiveRecordCar._t_find(@car.id)
|
174
|
+
end
|
175
|
+
|
176
|
+
should "should be eligible for deletion if foreign key constraints are disabled" do
|
177
|
+
Tenacity::Association.any_instance.stubs(:foreign_key_constraints_enabled?).returns(false)
|
178
|
+
ActiveRecordCar._t_delete(@car.id)
|
179
|
+
assert_nil ActiveRecordCar._t_find(@car.id)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
153
183
|
context "with an autosave association" do
|
154
184
|
setup do
|
155
185
|
@source = ActiveRecordObject.create
|
@@ -4,9 +4,11 @@ class HasOneTest < Test::Unit::TestCase
|
|
4
4
|
|
5
5
|
context "A class with a has_one association to another class" do
|
6
6
|
setup do
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
setup_fixtures
|
8
|
+
setup_couchdb_fixtures
|
9
|
+
|
10
|
+
@dashboard = MongoMapperDashboard.create
|
11
|
+
@climate_control_unit = ActiveRecordClimateControlUnit.create(:mongo_mapper_dashboard => @dashboard)
|
10
12
|
end
|
11
13
|
|
12
14
|
should "memoize the association" do
|
@@ -23,8 +25,9 @@ class HasOneTest < Test::Unit::TestCase
|
|
23
25
|
end
|
24
26
|
|
25
27
|
should "be able to specify the class name of the associated class" do
|
28
|
+
dashboard = MongoMapperDashboard.create
|
26
29
|
ash_tray = MongoMapperAshTray.create
|
27
|
-
dashboard
|
30
|
+
dashboard.ash_tray = ash_tray
|
28
31
|
assert_equal ash_tray, dashboard.ash_tray
|
29
32
|
end
|
30
33
|
|
@@ -91,6 +94,17 @@ class HasOneTest < Test::Unit::TestCase
|
|
91
94
|
assert_equal circuit_board, component
|
92
95
|
assert_equal 'MongoMapperAlternator', component.diagnosable_type
|
93
96
|
end
|
97
|
+
|
98
|
+
should "not be able to delete an object with an active t_belongs_to association" do
|
99
|
+
assert_raises(Tenacity::ObjectIdInUseError) { MongoMapperDashboard._t_delete(@dashboard.id) }
|
100
|
+
assert_not_nil MongoMapperDashboard._t_find(@dashboard.id)
|
101
|
+
end
|
102
|
+
|
103
|
+
should "be able to delete an object with an active t_belongs_to association if foreign key constraints are disabled" do
|
104
|
+
Tenacity::Association.any_instance.stubs(:foreign_key_constraints_enabled?).returns(false)
|
105
|
+
MongoMapperDashboard._t_delete(@dashboard.id)
|
106
|
+
assert_nil MongoMapperDashboard._t_find(@dashboard.id)
|
107
|
+
end
|
94
108
|
end
|
95
109
|
|
96
110
|
end
|
@@ -35,6 +35,13 @@ class ClassmethodsTest < Test::Unit::TestCase
|
|
35
35
|
should("respond to mongo_mapper_has_many_target_ids=") { assert @object.respond_to?(:mongo_mapper_has_many_target_ids=) }
|
36
36
|
end
|
37
37
|
|
38
|
+
context "A class including Tenacity with no associations" do
|
39
|
+
should "be able to be saved successfully" do
|
40
|
+
object = NoAssociations.new(:name => "Daniel")
|
41
|
+
assert object.save
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
38
45
|
context "The object returned by a has_many association" do
|
39
46
|
setup do
|
40
47
|
setup_fixtures
|
@@ -6,12 +6,16 @@ class ActiveRecordHasManyTarget < ActiveRecord::Base
|
|
6
6
|
t_belongs_to :data_mapper_object
|
7
7
|
t_belongs_to :mongo_mapper_object
|
8
8
|
require_mongoid { t_belongs_to :mongoid_object }
|
9
|
+
require_ripple { t_belongs_to :ripple_object }
|
9
10
|
t_belongs_to :sequel_object
|
11
|
+
require_toystore { t_belongs_to :toystore_object }
|
10
12
|
|
11
13
|
t_belongs_to :active_record_has_many_target_testable, :polymorphic => true
|
12
14
|
t_belongs_to :couch_rest_has_many_target_testable, :polymorphic => true
|
13
15
|
t_belongs_to :data_mapper_has_many_target_testable, :polymorphic => true
|
14
16
|
t_belongs_to :mongo_mapper_has_many_target_testable, :polymorphic => true
|
15
17
|
require_mongoid { t_belongs_to :mongoid_has_many_target_testable, :polymorphic => true }
|
18
|
+
require_ripple { t_belongs_to :ripple_has_many_target_testable, :polymorphic => true }
|
16
19
|
t_belongs_to :sequel_has_many_target_testable, :polymorphic => true
|
20
|
+
require_toystore { t_belongs_to :toystore_has_many_target_testable, :polymorphic => true }
|
17
21
|
end
|
@@ -6,12 +6,16 @@ class ActiveRecordHasOneTarget < ActiveRecord::Base
|
|
6
6
|
t_belongs_to :data_mapper_object
|
7
7
|
t_belongs_to :mongo_mapper_object
|
8
8
|
require_mongoid { t_belongs_to :mongoid_object }
|
9
|
+
require_ripple { t_belongs_to :ripple_object }
|
9
10
|
t_belongs_to :sequel_object
|
11
|
+
require_toystore { t_belongs_to :toystore_object }
|
10
12
|
|
11
13
|
t_belongs_to :active_record_has_one_target_testable, :polymorphic => true
|
12
14
|
t_belongs_to :couch_rest_has_one_target_testable, :polymorphic => true
|
13
15
|
t_belongs_to :data_mapper_has_one_target_testable, :polymorphic => true
|
14
16
|
t_belongs_to :mongo_mapper_has_one_target_testable, :polymorphic => true
|
15
17
|
require_mongoid { t_belongs_to :mongoid_has_one_target_testable, :polymorphic => true }
|
18
|
+
require_ripple { t_belongs_to :ripple_has_one_target_testable, :polymorphic => true }
|
16
19
|
t_belongs_to :sequel_has_one_target_testable, :polymorphic => true
|
20
|
+
require_toystore { t_belongs_to :toystore_has_one_target_testable, :polymorphic => true }
|
17
21
|
end
|
@@ -6,28 +6,36 @@ class ActiveRecordObject < ActiveRecord::Base
|
|
6
6
|
t_has_one :data_mapper_has_one_target
|
7
7
|
t_has_one :mongo_mapper_has_one_target
|
8
8
|
require_mongoid { t_has_one :mongoid_has_one_target }
|
9
|
+
require_ripple { t_has_one :ripple_has_one_target }
|
9
10
|
t_has_one :sequel_has_one_target
|
11
|
+
require_toystore { t_has_one :toystore_has_one_target }
|
10
12
|
|
11
13
|
t_has_one :active_record_has_one_target, :as => :active_record_has_one_target_testable
|
12
14
|
t_has_one :couch_rest_has_one_target, :as => :couch_rest_has_one_target_testable
|
13
15
|
t_has_one :data_mapper_has_one_target, :as => :data_mapper_has_one_target_testable
|
14
16
|
t_has_one :mongo_mapper_has_one_target, :as => :mongo_mapper_has_one_target_testable
|
15
17
|
require_mongoid { t_has_one :mongoid_has_one_target, :as => :mongoid_has_one_target_testable }
|
18
|
+
require_ripple { t_has_one :ripple_has_one_target, :as => :ripple_has_one_target_testable }
|
16
19
|
t_has_one :sequel_has_one_target, :as => :sequel_has_one_target_testable
|
20
|
+
require_toystore { t_has_one :toystore_has_one_target, :as => :toystore_has_one_target_testable }
|
17
21
|
|
18
22
|
t_has_many :active_record_has_many_targets
|
19
23
|
t_has_many :couch_rest_has_many_targets
|
20
24
|
t_has_many :data_mapper_has_many_targets
|
21
25
|
t_has_many :mongo_mapper_has_many_targets
|
22
26
|
require_mongoid { t_has_many :mongoid_has_many_targets }
|
27
|
+
require_ripple { t_has_many :ripple_has_many_targets }
|
23
28
|
t_has_many :sequel_has_many_targets
|
29
|
+
require_toystore { t_has_many :toystore_has_many_targets }
|
24
30
|
|
25
31
|
t_has_many :active_record_has_many_targets, :as => :active_record_has_many_target_testable
|
26
32
|
t_has_many :couch_rest_has_many_targets, :as => :couch_rest_has_many_target_testable
|
27
33
|
t_has_many :data_mapper_has_many_targets, :as => :data_mapper_has_many_target_testable
|
28
34
|
t_has_many :mongo_mapper_has_many_targets, :as => :mongo_mapper_has_many_target_testable
|
29
35
|
require_mongoid { t_has_many :mongoid_has_many_targets, :as => :mongoid_has_many_target_testable }
|
36
|
+
require_ripple { t_has_many :ripple_has_many_targets, :as => :ripple_has_many_target_testable }
|
30
37
|
t_has_many :sequel_has_many_targets, :as => :sequel_has_many_target_testable
|
38
|
+
require_toystore { t_has_many :toystore_has_many_targets, :as => :toystore_has_many_target_testable }
|
31
39
|
|
32
40
|
t_has_one :mongo_mapper_autosave_true_has_one_target, :autosave => true
|
33
41
|
t_has_one :mongo_mapper_autosave_false_has_one_target, :autosave => false
|
@@ -7,13 +7,17 @@ class CouchRestHasManyTarget < CouchRest::Model::Base
|
|
7
7
|
t_belongs_to :data_mapper_object
|
8
8
|
t_belongs_to :mongo_mapper_object
|
9
9
|
require_mongoid { t_belongs_to :mongoid_object }
|
10
|
+
require_ripple { t_belongs_to :ripple_object }
|
10
11
|
t_belongs_to :sequel_object
|
12
|
+
require_toystore { t_belongs_to :toystore_object }
|
11
13
|
|
12
14
|
t_belongs_to :active_record_has_many_target_testable, :polymorphic => true
|
13
15
|
t_belongs_to :couch_rest_has_many_target_testable, :polymorphic => true
|
14
16
|
t_belongs_to :data_mapper_has_many_target_testable, :polymorphic => true
|
15
17
|
t_belongs_to :mongo_mapper_has_many_target_testable, :polymorphic => true
|
16
18
|
require_mongoid { t_belongs_to :mongoid_has_many_target_testable, :polymorphic => true }
|
19
|
+
require_ripple { t_belongs_to :ripple_has_many_target_testable, :polymorphic => true }
|
17
20
|
t_belongs_to :sequel_has_many_target_testable, :polymorphic => true
|
21
|
+
require_toystore { t_belongs_to :toystore_has_many_target_testable, :polymorphic => true }
|
18
22
|
end
|
19
23
|
|