datamapper-dm-core 0.9.11 → 0.10.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/.autotest +17 -14
- data/.gitignore +3 -1
- data/FAQ +6 -5
- data/History.txt +5 -39
- data/Manifest.txt +67 -76
- data/QUICKLINKS +1 -1
- data/README.txt +21 -15
- data/Rakefile +16 -15
- data/SPECS +2 -29
- data/TODO +1 -1
- data/dm-core.gemspec +11 -15
- data/lib/dm-core/adapters/abstract_adapter.rb +182 -185
- data/lib/dm-core/adapters/data_objects_adapter.rb +482 -534
- data/lib/dm-core/adapters/in_memory_adapter.rb +90 -69
- data/lib/dm-core/adapters/mysql_adapter.rb +22 -115
- data/lib/dm-core/adapters/oracle_adapter.rb +249 -0
- data/lib/dm-core/adapters/postgres_adapter.rb +7 -173
- data/lib/dm-core/adapters/sqlite3_adapter.rb +4 -97
- data/lib/dm-core/adapters/yaml_adapter.rb +116 -0
- data/lib/dm-core/adapters.rb +135 -16
- data/lib/dm-core/associations/many_to_many.rb +372 -90
- data/lib/dm-core/associations/many_to_one.rb +220 -73
- data/lib/dm-core/associations/one_to_many.rb +319 -255
- data/lib/dm-core/associations/one_to_one.rb +66 -53
- data/lib/dm-core/associations/relationship.rb +560 -158
- data/lib/dm-core/collection.rb +1104 -381
- data/lib/dm-core/core_ext/kernel.rb +12 -0
- data/lib/dm-core/core_ext/symbol.rb +10 -0
- data/lib/dm-core/identity_map.rb +4 -34
- data/lib/dm-core/migrations.rb +1283 -0
- data/lib/dm-core/model/descendant_set.rb +81 -0
- data/lib/dm-core/model/hook.rb +45 -0
- data/lib/dm-core/model/is.rb +32 -0
- data/lib/dm-core/model/property.rb +248 -0
- data/lib/dm-core/model/relationship.rb +335 -0
- data/lib/dm-core/model/scope.rb +90 -0
- data/lib/dm-core/model.rb +570 -369
- data/lib/dm-core/property.rb +753 -280
- data/lib/dm-core/property_set.rb +141 -98
- data/lib/dm-core/query/conditions/comparison.rb +814 -0
- data/lib/dm-core/query/conditions/operation.rb +247 -0
- data/lib/dm-core/query/direction.rb +43 -0
- data/lib/dm-core/query/operator.rb +42 -0
- data/lib/dm-core/query/path.rb +102 -0
- data/lib/dm-core/query/sort.rb +45 -0
- data/lib/dm-core/query.rb +974 -492
- data/lib/dm-core/repository.rb +147 -107
- data/lib/dm-core/resource.rb +644 -429
- data/lib/dm-core/spec/adapter_shared_spec.rb +294 -0
- data/lib/dm-core/spec/data_objects_adapter_shared_spec.rb +106 -0
- data/lib/dm-core/support/chainable.rb +20 -0
- data/lib/dm-core/support/deprecate.rb +12 -0
- data/lib/dm-core/support/equalizer.rb +23 -0
- data/lib/dm-core/support/logger.rb +13 -0
- data/lib/dm-core/{naming_conventions.rb → support/naming_conventions.rb} +6 -6
- data/lib/dm-core/transaction.rb +333 -92
- data/lib/dm-core/type.rb +98 -60
- data/lib/dm-core/types/boolean.rb +1 -1
- data/lib/dm-core/types/discriminator.rb +34 -20
- data/lib/dm-core/types/object.rb +7 -4
- data/lib/dm-core/types/paranoid_boolean.rb +11 -9
- data/lib/dm-core/types/paranoid_datetime.rb +11 -9
- data/lib/dm-core/types/serial.rb +3 -3
- data/lib/dm-core/types/text.rb +3 -4
- data/lib/dm-core/version.rb +1 -1
- data/lib/dm-core.rb +106 -110
- data/script/performance.rb +102 -109
- data/script/profile.rb +169 -38
- data/spec/lib/adapter_helpers.rb +105 -0
- data/spec/lib/collection_helpers.rb +18 -0
- data/spec/lib/counter_adapter.rb +34 -0
- data/spec/lib/pending_helpers.rb +27 -0
- data/spec/lib/rspec_immediate_feedback_formatter.rb +53 -0
- data/spec/public/associations/many_to_many_spec.rb +193 -0
- data/spec/public/associations/many_to_one_spec.rb +73 -0
- data/spec/public/associations/one_to_many_spec.rb +77 -0
- data/spec/public/associations/one_to_one_spec.rb +156 -0
- data/spec/public/collection_spec.rb +65 -0
- data/spec/public/model/relationship_spec.rb +924 -0
- data/spec/public/model_spec.rb +159 -0
- data/spec/public/property_spec.rb +829 -0
- data/spec/public/resource_spec.rb +71 -0
- data/spec/public/sel_spec.rb +44 -0
- data/spec/public/setup_spec.rb +145 -0
- data/spec/public/shared/association_collection_shared_spec.rb +317 -0
- data/spec/public/shared/collection_shared_spec.rb +1723 -0
- data/spec/public/shared/finder_shared_spec.rb +1619 -0
- data/spec/public/shared/resource_shared_spec.rb +924 -0
- data/spec/public/shared/sel_shared_spec.rb +112 -0
- data/spec/public/transaction_spec.rb +129 -0
- data/spec/public/types/discriminator_spec.rb +130 -0
- data/spec/semipublic/adapters/abstract_adapter_spec.rb +30 -0
- data/spec/semipublic/adapters/in_memory_adapter_spec.rb +12 -0
- data/spec/semipublic/adapters/mysql_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/oracle_adapter_spec.rb +194 -0
- data/spec/semipublic/adapters/postgres_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/sqlite3_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/yaml_adapter_spec.rb +12 -0
- data/spec/semipublic/associations/many_to_one_spec.rb +53 -0
- data/spec/semipublic/associations/relationship_spec.rb +194 -0
- data/spec/semipublic/associations_spec.rb +177 -0
- data/spec/semipublic/collection_spec.rb +142 -0
- data/spec/semipublic/property_spec.rb +61 -0
- data/spec/semipublic/query/conditions_spec.rb +528 -0
- data/spec/semipublic/query/path_spec.rb +443 -0
- data/spec/semipublic/query_spec.rb +2626 -0
- data/spec/semipublic/resource_spec.rb +47 -0
- data/spec/semipublic/shared/resource_shared_spec.rb +126 -0
- data/spec/spec.opts +3 -1
- data/spec/spec_helper.rb +80 -57
- data/tasks/ci.rb +19 -31
- data/tasks/dm.rb +43 -48
- data/tasks/doc.rb +8 -11
- data/tasks/gemspec.rb +5 -5
- data/tasks/hoe.rb +15 -16
- data/tasks/install.rb +8 -10
- metadata +72 -93
- data/lib/dm-core/associations/relationship_chain.rb +0 -81
- data/lib/dm-core/associations.rb +0 -207
- data/lib/dm-core/auto_migrations.rb +0 -105
- data/lib/dm-core/dependency_queue.rb +0 -32
- data/lib/dm-core/hook.rb +0 -11
- data/lib/dm-core/is.rb +0 -16
- data/lib/dm-core/logger.rb +0 -232
- data/lib/dm-core/migrations/destructive_migrations.rb +0 -17
- data/lib/dm-core/migrator.rb +0 -29
- data/lib/dm-core/scope.rb +0 -58
- data/lib/dm-core/support/array.rb +0 -13
- data/lib/dm-core/support/assertions.rb +0 -8
- data/lib/dm-core/support/errors.rb +0 -23
- data/lib/dm-core/support/kernel.rb +0 -11
- data/lib/dm-core/support/symbol.rb +0 -41
- data/lib/dm-core/support.rb +0 -7
- data/lib/dm-core/type_map.rb +0 -80
- data/lib/dm-core/types.rb +0 -19
- data/script/all +0 -4
- data/spec/integration/association_spec.rb +0 -1382
- data/spec/integration/association_through_spec.rb +0 -203
- data/spec/integration/associations/many_to_many_spec.rb +0 -449
- data/spec/integration/associations/many_to_one_spec.rb +0 -163
- data/spec/integration/associations/one_to_many_spec.rb +0 -188
- data/spec/integration/auto_migrations_spec.rb +0 -413
- data/spec/integration/collection_spec.rb +0 -1073
- data/spec/integration/data_objects_adapter_spec.rb +0 -32
- data/spec/integration/dependency_queue_spec.rb +0 -46
- data/spec/integration/model_spec.rb +0 -197
- data/spec/integration/mysql_adapter_spec.rb +0 -85
- data/spec/integration/postgres_adapter_spec.rb +0 -731
- data/spec/integration/property_spec.rb +0 -253
- data/spec/integration/query_spec.rb +0 -514
- data/spec/integration/repository_spec.rb +0 -61
- data/spec/integration/resource_spec.rb +0 -513
- data/spec/integration/sqlite3_adapter_spec.rb +0 -352
- data/spec/integration/sti_spec.rb +0 -273
- data/spec/integration/strategic_eager_loading_spec.rb +0 -156
- data/spec/integration/transaction_spec.rb +0 -75
- data/spec/integration/type_spec.rb +0 -275
- data/spec/lib/logging_helper.rb +0 -18
- data/spec/lib/mock_adapter.rb +0 -27
- data/spec/lib/model_loader.rb +0 -100
- data/spec/lib/publicize_methods.rb +0 -28
- data/spec/models/content.rb +0 -16
- data/spec/models/vehicles.rb +0 -34
- data/spec/models/zoo.rb +0 -48
- data/spec/unit/adapters/abstract_adapter_spec.rb +0 -133
- data/spec/unit/adapters/adapter_shared_spec.rb +0 -15
- data/spec/unit/adapters/data_objects_adapter_spec.rb +0 -632
- data/spec/unit/adapters/in_memory_adapter_spec.rb +0 -98
- data/spec/unit/adapters/postgres_adapter_spec.rb +0 -133
- data/spec/unit/associations/many_to_many_spec.rb +0 -32
- data/spec/unit/associations/many_to_one_spec.rb +0 -159
- data/spec/unit/associations/one_to_many_spec.rb +0 -393
- data/spec/unit/associations/one_to_one_spec.rb +0 -7
- data/spec/unit/associations/relationship_spec.rb +0 -71
- data/spec/unit/associations_spec.rb +0 -242
- data/spec/unit/auto_migrations_spec.rb +0 -111
- data/spec/unit/collection_spec.rb +0 -182
- data/spec/unit/data_mapper_spec.rb +0 -35
- data/spec/unit/identity_map_spec.rb +0 -126
- data/spec/unit/is_spec.rb +0 -80
- data/spec/unit/migrator_spec.rb +0 -33
- data/spec/unit/model_spec.rb +0 -321
- data/spec/unit/naming_conventions_spec.rb +0 -36
- data/spec/unit/property_set_spec.rb +0 -90
- data/spec/unit/property_spec.rb +0 -753
- data/spec/unit/query_spec.rb +0 -571
- data/spec/unit/repository_spec.rb +0 -93
- data/spec/unit/resource_spec.rb +0 -649
- data/spec/unit/scope_spec.rb +0 -142
- data/spec/unit/transaction_spec.rb +0 -493
- data/spec/unit/type_map_spec.rb +0 -114
- data/spec/unit/type_spec.rb +0 -119
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
|
2
|
-
|
|
3
|
-
if ADAPTER
|
|
4
|
-
module ManyToOneSpec
|
|
5
|
-
class Parent
|
|
6
|
-
include DataMapper::Resource
|
|
7
|
-
|
|
8
|
-
def self.default_repository_name
|
|
9
|
-
ADAPTER
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
property :id, Serial
|
|
13
|
-
property :name, String
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
class Child
|
|
17
|
-
include DataMapper::Resource
|
|
18
|
-
|
|
19
|
-
def self.default_repository_name
|
|
20
|
-
ADAPTER
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
property :id, Serial
|
|
24
|
-
property :name, String
|
|
25
|
-
property :type, Discriminator
|
|
26
|
-
|
|
27
|
-
belongs_to :parent
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
class StepChild < Child
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
describe DataMapper::Associations::ManyToOne::Proxy do
|
|
35
|
-
before do
|
|
36
|
-
[ ManyToOneSpec::Parent, ManyToOneSpec::Child ].each { |model| model.auto_migrate! }
|
|
37
|
-
|
|
38
|
-
repository(ADAPTER) do
|
|
39
|
-
@parent = ManyToOneSpec::Parent.create(:name => 'parent')
|
|
40
|
-
@child = ManyToOneSpec::Child.create(:name => 'child', :parent => @parent)
|
|
41
|
-
@other = ManyToOneSpec::Parent.create(:name => 'other parent')
|
|
42
|
-
@step_child = ManyToOneSpec::StepChild.create(:name => 'step child', :parent => @other)
|
|
43
|
-
@association = @child.parent
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
describe "#association_accessor (STI)" do
|
|
48
|
-
include LoggingHelper
|
|
49
|
-
|
|
50
|
-
it "should set parent" do
|
|
51
|
-
ManyToOneSpec::StepChild.first(:id => @step_child.id).parent.should == @other
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "should use the identity map for STI" do
|
|
55
|
-
repository(ADAPTER) do |r|
|
|
56
|
-
parent = ManyToOneSpec::Parent.first(:id => @parent.id)
|
|
57
|
-
child = ManyToOneSpec::Child.first(:id => @child.id)
|
|
58
|
-
step_child = ManyToOneSpec::StepChild.first(:id => @step_child.id)
|
|
59
|
-
logger do |log|
|
|
60
|
-
# should retrieve from the IdentityMap
|
|
61
|
-
child.parent.should equal(parent)
|
|
62
|
-
|
|
63
|
-
# should retrieve from the datasource
|
|
64
|
-
other = step_child.parent
|
|
65
|
-
|
|
66
|
-
# should retrieve from the IdentityMap
|
|
67
|
-
step_child.parent.should == @other
|
|
68
|
-
step_child.parent.object_id.should == other.object_id
|
|
69
|
-
|
|
70
|
-
log.readlines.size.should == 1
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
describe '#replace' do
|
|
77
|
-
it 'should remove the resource from the collection' do
|
|
78
|
-
@association.should == @parent
|
|
79
|
-
@association.replace(@other)
|
|
80
|
-
@association.should == @other
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it 'should not automatically save that the resource was removed from the association' do
|
|
84
|
-
@association.replace(@other)
|
|
85
|
-
@child.reload.parent.should == @parent
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'should return the association' do
|
|
89
|
-
@association.replace(@other).object_id.should == @association.object_id
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
describe '#save' do
|
|
94
|
-
describe 'when the parent is nil' do
|
|
95
|
-
before do
|
|
96
|
-
@association.replace(nil)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it 'should not save the parent' do
|
|
100
|
-
@association.save
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it 'should return false' do
|
|
104
|
-
@association.save.should == false
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
describe 'when the parent is not a new record' do
|
|
109
|
-
before do
|
|
110
|
-
@parent.should_not be_new_record
|
|
111
|
-
@child.should_not be_new_record
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
it 'should not save the parent' do
|
|
115
|
-
@parent.should_not_receive(:save)
|
|
116
|
-
@association.save
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it 'should return true' do
|
|
120
|
-
@association.save.should == true
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "should return true to the child" do
|
|
124
|
-
@child.save.should == true
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe 'when the parent is a new record' do
|
|
129
|
-
before do
|
|
130
|
-
@parent = ManyToOneSpec::Parent.new(:name => 'unsaved parent')
|
|
131
|
-
@parent.should be_new_record
|
|
132
|
-
@association.replace(@parent)
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
it 'should save the parent' do
|
|
136
|
-
@association.save
|
|
137
|
-
@parent.should_not be_new_record
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
it 'should return the result of the save' do
|
|
141
|
-
@association.save.should == true
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
describe '#reload' do
|
|
147
|
-
before do
|
|
148
|
-
@child.parent_id.should == @parent.id
|
|
149
|
-
@association.replace(@other)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it 'should not change the foreign key in the child' do
|
|
153
|
-
@child.parent_id.should == @other.id
|
|
154
|
-
@association.reload
|
|
155
|
-
@child.parent_id.should == @other.id
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it 'should return self' do
|
|
159
|
-
@association.reload.object_id.should == @association.object_id
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
|
2
|
-
require 'pp'
|
|
3
|
-
describe "OneToMany" do
|
|
4
|
-
before(:all) do
|
|
5
|
-
class ::Team
|
|
6
|
-
include DataMapper::Resource
|
|
7
|
-
|
|
8
|
-
def self.default_repository_name; ADAPTER end
|
|
9
|
-
|
|
10
|
-
property :id, Serial
|
|
11
|
-
property :name, String
|
|
12
|
-
property :class_type, Discriminator
|
|
13
|
-
|
|
14
|
-
has n, :players
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
class ::BaseballTeam < Team
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
class ::Player
|
|
21
|
-
include DataMapper::Resource
|
|
22
|
-
|
|
23
|
-
def self.default_repository_name; ADAPTER end
|
|
24
|
-
|
|
25
|
-
property :id, Serial
|
|
26
|
-
property :name, String
|
|
27
|
-
|
|
28
|
-
belongs_to :team
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
[Team, Player].each { |k| k.auto_migrate!(ADAPTER) }
|
|
32
|
-
|
|
33
|
-
Team.create(:name => "Cowboys")
|
|
34
|
-
BaseballTeam.create(:name => "Giants")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
describe "(saved parent, saved child)" do
|
|
38
|
-
before(:each) do
|
|
39
|
-
@dc_united = Team.create
|
|
40
|
-
@emilio = Player.create(:team => @dc_united)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "child association should return parent" do
|
|
44
|
-
@emilio.team.should == @dc_united
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "parent association should return children" do
|
|
48
|
-
@dc_united.players.should == [@emilio]
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
describe "(saved parent, unsaved child)" do
|
|
53
|
-
before(:each) do
|
|
54
|
-
@dc_united = Team.create
|
|
55
|
-
@emilio = Player.new(:team => @dc_united)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "child association should return parent" do
|
|
59
|
-
@emilio.team.should == @dc_united
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "parent association should return children" do
|
|
63
|
-
pending("DataMapper does not yet support in-memory associations") do
|
|
64
|
-
@dc_united.players.should == [@emilio]
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe "(unsaved parent, saved child)" do
|
|
70
|
-
before(:each) do
|
|
71
|
-
@dc_united = Team.new
|
|
72
|
-
@emilio = Player.create(:team => @dc_united)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "child association should return parent" do
|
|
76
|
-
@emilio.team.should == @dc_united
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "parent association should return children" do
|
|
80
|
-
@dc_united.players.should == [@emilio]
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "should return true to child.save" do
|
|
84
|
-
@emilio.should_not be_a_new_record
|
|
85
|
-
@emilio.save.should be_true
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
describe "(unsaved parent, unsaved child)" do
|
|
90
|
-
before(:each) do
|
|
91
|
-
@dc_united = Team.new
|
|
92
|
-
@emilio = Player.new(:team => @dc_united)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it "child association should return parent" do
|
|
96
|
-
@emilio.team.should == @dc_united
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "parent association should return children" do
|
|
100
|
-
pending("DataMapper does not yet support in-memory associations") do
|
|
101
|
-
@dc_united.players.should == [@emilio]
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
describe "parent initialized child" do
|
|
107
|
-
before(:each) do
|
|
108
|
-
@ajax = Team.create
|
|
109
|
-
@vandesar = @ajax.players.new
|
|
110
|
-
@vandesar.save
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
it "child association should return parent" do
|
|
114
|
-
@vandesar.team.should == @ajax
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "parent association should return children" do
|
|
118
|
-
@ajax.players.should == [@vandesar]
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it "unsaved parent model should accept array of hashes for association" do
|
|
123
|
-
players = [{ :name => "Brett Favre" }, { :name => "Reggie White" }]
|
|
124
|
-
|
|
125
|
-
team = Team.new(:name => "Packers", :players => players)
|
|
126
|
-
team.players.zip(players) do |player, values|
|
|
127
|
-
player.should be_an_instance_of(Player)
|
|
128
|
-
values.each { |k, v| player.send(k).should == v }
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
players = team.players
|
|
132
|
-
team.save
|
|
133
|
-
|
|
134
|
-
repository(ADAPTER) do
|
|
135
|
-
Team.get(3).players.should == players
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
it "saved parent model should accept array of hashes for association" do
|
|
140
|
-
players = [{ :name => "Troy Aikman" }, { :name => "Chad Hennings" }]
|
|
141
|
-
|
|
142
|
-
team = Team.get(1)
|
|
143
|
-
team.players = players
|
|
144
|
-
team.players.zip(players) do |player, values|
|
|
145
|
-
player.should be_an_instance_of(Player)
|
|
146
|
-
values.each { |k, v| player.send(k).should == v }
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
players = team.players
|
|
150
|
-
team.save
|
|
151
|
-
|
|
152
|
-
repository(ADAPTER) do
|
|
153
|
-
Team.get(1).players.should == players
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
describe "STI" do
|
|
158
|
-
before(:all) do
|
|
159
|
-
repository(ADAPTER) do
|
|
160
|
-
@player = Player.create(:name => "Barry Bonds", :team => BaseballTeam.first)
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
it "should work for child.parent" do
|
|
165
|
-
repository(ADAPTER) do
|
|
166
|
-
@player.team.should == BaseballTeam.first
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it "should work for parent.children" do
|
|
171
|
-
repository(ADAPTER) do
|
|
172
|
-
team = BaseballTeam.first
|
|
173
|
-
|
|
174
|
-
team.players.size.should > 0
|
|
175
|
-
team.players.each{|p| p.should be_an_instance_of(Player)}
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
describe "alone" do
|
|
181
|
-
it "should work for parent.children without any parents in IM" do
|
|
182
|
-
repository(ADAPTER) do
|
|
183
|
-
team = BaseballTeam.first
|
|
184
|
-
team.players.each{|p| p.should be_an_instance_of(Player)}
|
|
185
|
-
end
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
end
|