dm-core 0.9.9 → 0.9.10

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.
Files changed (52) hide show
  1. data/History.txt +10 -0
  2. data/MIT-LICENSE +1 -1
  3. data/Rakefile +4 -4
  4. data/dm-core.gemspec +14 -12
  5. data/lib/dm-core.rb +1 -1
  6. data/lib/dm-core/adapters/data_objects_adapter.rb +2 -2
  7. data/lib/dm-core/adapters/mysql_adapter.rb +1 -1
  8. data/lib/dm-core/adapters/postgres_adapter.rb +1 -1
  9. data/lib/dm-core/adapters/sqlite3_adapter.rb +1 -1
  10. data/lib/dm-core/associations/many_to_one.rb +1 -1
  11. data/lib/dm-core/associations/one_to_many.rb +18 -18
  12. data/lib/dm-core/associations/relationship.rb +9 -3
  13. data/lib/dm-core/associations/relationship_chain.rb +1 -1
  14. data/lib/dm-core/collection.rb +3 -3
  15. data/lib/dm-core/model.rb +5 -4
  16. data/lib/dm-core/resource.rb +11 -5
  17. data/lib/dm-core/version.rb +1 -1
  18. data/script/all +3 -4
  19. data/spec/integration/association_spec.rb +18 -18
  20. data/spec/integration/association_through_spec.rb +4 -4
  21. data/spec/integration/associations/many_to_many_spec.rb +9 -9
  22. data/spec/integration/associations/many_to_one_spec.rb +1 -1
  23. data/spec/integration/associations/one_to_many_spec.rb +3 -3
  24. data/spec/integration/collection_spec.rb +2 -2
  25. data/spec/integration/dependency_queue_spec.rb +1 -1
  26. data/spec/integration/model_spec.rb +1 -1
  27. data/spec/integration/mysql_adapter_spec.rb +1 -1
  28. data/spec/integration/postgres_adapter_spec.rb +16 -16
  29. data/spec/integration/property_spec.rb +10 -6
  30. data/spec/integration/query_spec.rb +4 -4
  31. data/spec/integration/repository_spec.rb +1 -1
  32. data/spec/integration/sqlite3_adapter_spec.rb +7 -7
  33. data/spec/integration/sti_spec.rb +6 -6
  34. data/spec/integration/strategic_eager_loading_spec.rb +14 -11
  35. data/spec/integration/type_spec.rb +10 -6
  36. data/spec/lib/logging_helper.rb +11 -11
  37. data/spec/spec_helper.rb +8 -4
  38. data/spec/unit/adapters/data_objects_adapter_spec.rb +9 -5
  39. data/spec/unit/adapters/in_memory_adapter_spec.rb +1 -1
  40. data/spec/unit/adapters/postgres_adapter_spec.rb +5 -5
  41. data/spec/unit/associations/many_to_many_spec.rb +2 -2
  42. data/spec/unit/associations/many_to_one_spec.rb +3 -3
  43. data/spec/unit/associations/one_to_many_spec.rb +2 -2
  44. data/spec/unit/associations/relationship_spec.rb +6 -6
  45. data/spec/unit/associations_spec.rb +21 -21
  46. data/spec/unit/identity_map_spec.rb +3 -3
  47. data/spec/unit/is_spec.rb +7 -7
  48. data/spec/unit/property_spec.rb +7 -7
  49. data/spec/unit/resource_spec.rb +12 -12
  50. data/spec/unit/transaction_spec.rb +1 -1
  51. data/tasks/dm.rb +1 -1
  52. metadata +6 -6
@@ -4,7 +4,7 @@ if ADAPTER
4
4
  describe 'through-associations' do
5
5
  before :all do
6
6
  repository(ADAPTER) do
7
- class Tag
7
+ class ::Tag
8
8
  include DataMapper::Resource
9
9
  def self.default_repository_name
10
10
  ADAPTER
@@ -22,7 +22,7 @@ if ADAPTER
22
22
  has n, :posts, :through => :taggings
23
23
  end
24
24
 
25
- class Tagging
25
+ class ::Tagging
26
26
  include DataMapper::Resource
27
27
  def self.default_repository_name
28
28
  ADAPTER
@@ -35,7 +35,7 @@ if ADAPTER
35
35
  belongs_to :tag
36
36
  end
37
37
 
38
- class Post
38
+ class ::Post
39
39
  include DataMapper::Resource
40
40
  def self.default_repository_name
41
41
  ADAPTER
@@ -61,7 +61,7 @@ if ADAPTER
61
61
  Post.taggings.tag.voided => true
62
62
  end
63
63
 
64
- class Relationship
64
+ class ::Relationship
65
65
  include DataMapper::Resource
66
66
  def self.default_repository_name
67
67
  ADAPTER
@@ -2,7 +2,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_hel
2
2
 
3
3
  describe DataMapper::Associations::ManyToMany::Proxy do
4
4
  before :all do
5
- class Editor
5
+ class ::Editor
6
6
  include DataMapper::Resource
7
7
 
8
8
  def self.default_repository_name; ADAPTER end
@@ -15,7 +15,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
15
15
 
16
16
  Object.send(:remove_const, :Book) if defined?(Book)
17
17
 
18
- class Book
18
+ class ::Book
19
19
  include DataMapper::Resource
20
20
 
21
21
  def self.default_repository_name; ADAPTER end
@@ -190,7 +190,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
190
190
 
191
191
  describe "with natural keys" do
192
192
  before :all do
193
- class Author
193
+ class ::Author
194
194
  include DataMapper::Resource
195
195
 
196
196
  def self.default_repository_name; ADAPTER end
@@ -200,7 +200,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
200
200
  has n, :books, :through => Resource
201
201
  end
202
202
 
203
- class Book
203
+ class ::Book
204
204
  has n, :authors, :through => Resource
205
205
  end
206
206
  end
@@ -237,7 +237,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
237
237
 
238
238
  describe "When join model has non-serial (integer) natural keys." do
239
239
  before :all do
240
- class Tag
240
+ class ::Tag
241
241
  include DataMapper::Resource
242
242
 
243
243
  def self.default_repository_name; ADAPTER end
@@ -249,7 +249,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
249
249
  has n, :books, :through => :book_taggings
250
250
  end
251
251
 
252
- class BookTagging
252
+ class ::BookTagging
253
253
  include DataMapper::Resource
254
254
 
255
255
  def self.default_repository_name; ADAPTER end
@@ -261,7 +261,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
261
261
  belongs_to :tag
262
262
  end
263
263
 
264
- class Book
264
+ class ::Book
265
265
  has n, :book_taggings
266
266
  has n, :tags, :through => :book_taggings
267
267
  end
@@ -296,7 +296,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
296
296
 
297
297
  describe "with renamed associations" do
298
298
  before :all do
299
- class Singer
299
+ class ::Singer
300
300
  include DataMapper::Resource
301
301
 
302
302
  def self.default_repository_name; ADAPTER end
@@ -307,7 +307,7 @@ describe DataMapper::Associations::ManyToMany::Proxy do
307
307
  has n, :tunes, :through => Resource, :class_name => 'Song'
308
308
  end
309
309
 
310
- class Song
310
+ class ::Song
311
311
  include DataMapper::Resource
312
312
 
313
313
  def self.default_repository_name; ADAPTER end
@@ -58,7 +58,7 @@ if ADAPTER
58
58
  step_child = ManyToOneSpec::StepChild.first(:id => @step_child.id)
59
59
  logger do |log|
60
60
  # should retrieve from the IdentityMap
61
- child.parent.object_id.should == parent.object_id
61
+ child.parent.should equal(parent)
62
62
 
63
63
  # should retrieve from the datasource
64
64
  other = step_child.parent
@@ -2,7 +2,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_hel
2
2
  require 'pp'
3
3
  describe "OneToMany" do
4
4
  before(:all) do
5
- class Team
5
+ class ::Team
6
6
  include DataMapper::Resource
7
7
 
8
8
  def self.default_repository_name; ADAPTER end
@@ -14,10 +14,10 @@ describe "OneToMany" do
14
14
  has n, :players
15
15
  end
16
16
 
17
- class BaseballTeam < Team
17
+ class ::BaseballTeam < Team
18
18
  end
19
19
 
20
- class Player
20
+ class ::Player
21
21
  include DataMapper::Resource
22
22
 
23
23
  def self.default_repository_name; ADAPTER end
@@ -561,7 +561,7 @@ if ADAPTER
561
561
  end
562
562
 
563
563
  it "should find a resource in a collection by typecasting the key" do
564
- resource = @collection.get(@nancy.key.to_s)
564
+ resource = @collection.get(*@nancy.key)
565
565
  resource.should be_kind_of(DataMapper::Resource)
566
566
  resource.id.should == @nancy.id
567
567
  end
@@ -569,7 +569,7 @@ if ADAPTER
569
569
  it 'should not find a resource not in the collection' do
570
570
  @query.update(:offset => 0, :limit => 3)
571
571
  @david = Zebra.create(:name => 'David', :age => 15, :notes => 'Albino')
572
- @collection.get(@david.key).should be_nil
572
+ @collection.get(*@david.key).should be_nil
573
573
  end
574
574
  end
575
575
 
@@ -27,7 +27,7 @@ describe "DataMapper::DependencyQueue" do
27
27
  before :each do
28
28
  @q.add('MissingConstant') { |klass| klass.instance_variable_set("@resolved", true) } # add before MissingConstant is loaded
29
29
 
30
- class MissingConstant
30
+ class ::MissingConstant
31
31
  end
32
32
  end
33
33
 
@@ -1,7 +1,7 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
2
 
3
3
  if ADAPTER
4
- module ModelSpec
4
+ module ::ModelSpec
5
5
  class STI
6
6
  include DataMapper::Resource
7
7
 
@@ -7,7 +7,7 @@ if HAS_MYSQL
7
7
  end
8
8
 
9
9
  before :all do
10
- class Sputnik
10
+ class ::Sputnik
11
11
  include DataMapper::Resource
12
12
 
13
13
  property :id, Serial
@@ -8,7 +8,7 @@ if HAS_POSTGRES
8
8
 
9
9
  describe "auto migrating" do
10
10
  before :all do
11
- class Sputnik
11
+ class ::Sputnik
12
12
  include DataMapper::Resource
13
13
 
14
14
  property :id, Serial
@@ -32,7 +32,7 @@ if HAS_POSTGRES
32
32
  describe '#312' do
33
33
  it "should behave sanely for time fields" do
34
34
 
35
- class Thing
35
+ class ::Thing
36
36
  include DataMapper::Resource
37
37
  property :id, Integer, :serial => true
38
38
  property :created_at, Time
@@ -57,7 +57,7 @@ if HAS_POSTGRES
57
57
 
58
58
  describe "querying metadata" do
59
59
  before :all do
60
- class Sputnik
60
+ class ::Sputnik
61
61
  include DataMapper::Resource
62
62
 
63
63
  property :id, Serial
@@ -86,7 +86,7 @@ if HAS_POSTGRES
86
86
 
87
87
  describe "handling transactions" do
88
88
  before :all do
89
- class Sputnik
89
+ class ::Sputnik
90
90
  include DataMapper::Resource
91
91
 
92
92
  property :id, Serial
@@ -118,14 +118,14 @@ if HAS_POSTGRES
118
118
 
119
119
  describe "reading & writing a database" do
120
120
  before :all do
121
- class User
121
+ class ::User
122
122
  include DataMapper::Resource
123
123
 
124
124
  property :id, Serial
125
125
  property :name, DM::Text
126
126
  end
127
127
 
128
- class Voyager
128
+ class ::Voyager
129
129
  include DataMapper::Resource
130
130
  storage_names[:postgres] = 'voyagers'
131
131
 
@@ -163,7 +163,7 @@ if HAS_POSTGRES
163
163
  result.should be_kind_of(Array)
164
164
  row = result.first
165
165
  row.should be_kind_of(Struct)
166
- row.members.should == %w{id name}
166
+ row.members.map { |m| m.to_s }.should == %w{id name}
167
167
 
168
168
  row.id.should == 1
169
169
  row.name.should == 'Paul'
@@ -182,7 +182,7 @@ if HAS_POSTGRES
182
182
 
183
183
  describe "CRUD for serial Key" do
184
184
  before :all do
185
- class VideoGame
185
+ class ::VideoGame
186
186
  include DataMapper::Resource
187
187
 
188
188
  property :id, Serial
@@ -282,7 +282,7 @@ if HAS_POSTGRES
282
282
 
283
283
  describe "CRUD for Composite Key" do
284
284
  before :all do
285
- class BankCustomer
285
+ class ::BankCustomer
286
286
  include DataMapper::Resource
287
287
 
288
288
  property :bank, String, :key => true
@@ -376,7 +376,7 @@ if HAS_POSTGRES
376
376
 
377
377
  describe "Ordering a Query" do
378
378
  before :all do
379
- class SailBoat
379
+ class ::SailBoat
380
380
  include DataMapper::Resource
381
381
  property :id, Serial
382
382
  property :name, String
@@ -423,7 +423,7 @@ if HAS_POSTGRES
423
423
 
424
424
  describe "Lazy Loaded Properties" do
425
425
  before :all do
426
- class SailBoat
426
+ class ::SailBoat
427
427
  include DataMapper::Resource
428
428
  property :id, Serial
429
429
  property :notes, String, :lazy => [:notes]
@@ -467,7 +467,7 @@ if HAS_POSTGRES
467
467
 
468
468
  describe "finders" do
469
469
  before :all do
470
- class SerialFinderSpec
470
+ class ::SerialFinderSpec
471
471
  include DataMapper::Resource
472
472
 
473
473
  property :id, Serial
@@ -528,7 +528,7 @@ if HAS_POSTGRES
528
528
 
529
529
  describe "belongs_to associations" do
530
530
  before :all do
531
- class Engine
531
+ class ::Engine
532
532
  include DataMapper::Resource
533
533
  def self.default_repository_name; :postgres end
534
534
 
@@ -536,7 +536,7 @@ if HAS_POSTGRES
536
536
  property :name, String
537
537
  end
538
538
 
539
- class Yard
539
+ class ::Yard
540
540
  include DataMapper::Resource
541
541
  def self.default_repository_name; :postgres end
542
542
 
@@ -617,7 +617,7 @@ if HAS_POSTGRES
617
617
 
618
618
  describe "has n associations" do
619
619
  before :all do
620
- class Host
620
+ class ::Host
621
621
  include DataMapper::Resource
622
622
  def self.default_repository_name; :postgres end
623
623
 
@@ -627,7 +627,7 @@ if HAS_POSTGRES
627
627
  has n, :slices
628
628
  end
629
629
 
630
- class Slice
630
+ class ::Slice
631
631
  include DataMapper::Resource
632
632
  def self.default_repository_name; :postgres end
633
633
 
@@ -1,11 +1,15 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
2
 
3
- gem 'fastercsv', '~>1.4.0'
4
- require 'fastercsv'
3
+ if RUBY_VERSION >= '1.9.0'
4
+ require 'csv'
5
+ else
6
+ gem 'fastercsv', '~>1.4.0'
7
+ require 'fastercsv'
8
+ end
5
9
 
6
10
  describe DataMapper::Property do
7
11
  before do
8
- module PropertySpec
12
+ module ::PropertySpec
9
13
  class Resource
10
14
  include DataMapper::Resource
11
15
  end
@@ -23,7 +27,7 @@ if ADAPTER
23
27
  describe DataMapper::Property, "with #{ADAPTER}" do
24
28
  describe " tracking strategies" do
25
29
  before :all do
26
- class Actor
30
+ class ::Actor
27
31
  include DataMapper::Resource
28
32
 
29
33
  property :id, Serial
@@ -145,7 +149,7 @@ if ADAPTER
145
149
 
146
150
  describe "lazy loading" do
147
151
  before :all do
148
- class RowBoat
152
+ class ::RowBoat
149
153
  include DataMapper::Resource
150
154
  property :id, Serial
151
155
  property :notes, String, :lazy => [:notes]
@@ -198,7 +202,7 @@ if ADAPTER
198
202
 
199
203
  describe 'defaults' do
200
204
  before :all do
201
- class Catamaran
205
+ class ::Catamaran
202
206
  include DataMapper::Resource
203
207
  property :id, Serial
204
208
  property :name, String
@@ -424,8 +424,8 @@ if ADAPTER
424
424
  factory = DataMapper::Associations::Relationship.new(
425
425
  :factory,
426
426
  ADAPTER,
427
- 'QuerySpec::Vehicle',
428
- 'QuerySpec::Factory',
427
+ QuerySpec::Vehicle,
428
+ QuerySpec::Factory,
429
429
  { :child_key => [ :factory_id ], :parent_key => [ :id ] }
430
430
  )
431
431
  results = repository(ADAPTER) { QuerySpec::Vehicle.all(:links => [ factory ]) }
@@ -446,8 +446,8 @@ if ADAPTER
446
446
  region = DataMapper::Associations::Relationship.new(
447
447
  :region,
448
448
  ADAPTER,
449
- 'QuerySpec::Factory',
450
- 'QuerySpec::Region',
449
+ QuerySpec::Factory,
450
+ QuerySpec::Region,
451
451
  { :child_key => [ :region_id ], :parent_key => [ :id ] }
452
452
  )
453
453
  results = repository(ADAPTER) { QuerySpec::Vehicle.all(:links => [ 'factory', region ]) }
@@ -3,7 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
3
3
  if ADAPTER
4
4
  describe DataMapper::Repository, "with #{ADAPTER}" do
5
5
  before :all do
6
- class SerialFinderSpec
6
+ class ::SerialFinderSpec
7
7
  include DataMapper::Resource
8
8
 
9
9
  property :id, Serial
@@ -8,7 +8,7 @@ if HAS_SQLITE3
8
8
 
9
9
  describe "auto migrating" do
10
10
  before :all do
11
- class Sputnik
11
+ class ::Sputnik
12
12
  include DataMapper::Resource
13
13
 
14
14
  property :id, Serial
@@ -30,7 +30,7 @@ if HAS_SQLITE3
30
30
 
31
31
  describe "querying metadata" do
32
32
  before :all do
33
- class Sputnik
33
+ class ::Sputnik
34
34
  include DataMapper::Resource
35
35
 
36
36
  property :id, Serial
@@ -76,7 +76,7 @@ if HAS_SQLITE3
76
76
 
77
77
  describe "handling transactions" do
78
78
  before :all do
79
- class Sputnik
79
+ class ::Sputnik
80
80
  include DataMapper::Resource
81
81
 
82
82
  property :id, Serial
@@ -108,7 +108,7 @@ if HAS_SQLITE3
108
108
 
109
109
  describe "reading & writing a database" do
110
110
  before :all do
111
- class User
111
+ class ::User
112
112
  include DataMapper::Resource
113
113
 
114
114
  property :id, Serial
@@ -134,7 +134,7 @@ if HAS_SQLITE3
134
134
  result.should be_kind_of(Array)
135
135
  row = result.first
136
136
  row.should be_kind_of(Struct)
137
- row.members.should == %w{id name}
137
+ row.members.map { |m| m.to_s }.should == %w{id name}
138
138
 
139
139
  row.id.should == 1
140
140
  row.name.should == 'Paul'
@@ -153,7 +153,7 @@ if HAS_SQLITE3
153
153
 
154
154
  describe "CRUD for serial Key" do
155
155
  before :all do
156
- class VideoGame
156
+ class ::VideoGame
157
157
  include DataMapper::Resource
158
158
 
159
159
  property :id, Serial
@@ -255,7 +255,7 @@ if HAS_SQLITE3
255
255
 
256
256
  describe "CRUD for Composite Key" do
257
257
  before :all do
258
- class BankCustomer
258
+ class ::BankCustomer
259
259
  include DataMapper::Resource
260
260
 
261
261
  property :bank, String, :key => true