datamappify 0.70.0.beta1 → 0.70.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +55 -3
  4. data/datamappify.gemspec +4 -2
  5. data/lib/datamappify/data/criteria/active_record/limit.rb +7 -1
  6. data/lib/datamappify/data/criteria/active_record/save.rb +7 -1
  7. data/lib/datamappify/data/criteria/common.rb +4 -4
  8. data/lib/datamappify/data/criteria/relational/count.rb +4 -2
  9. data/lib/datamappify/data/criteria/sequel/limit.rb +4 -1
  10. data/lib/datamappify/data/criteria/sequel/save.rb +7 -1
  11. data/lib/datamappify/entity/association.rb +11 -0
  12. data/lib/datamappify/entity/association/validation.rb +1 -1
  13. data/lib/datamappify/entity/compatibility/active_record.rb +13 -0
  14. data/lib/datamappify/entity/compatibility/association/active_record.rb +19 -3
  15. data/lib/datamappify/entity/composable/attributes.rb +1 -1
  16. data/lib/datamappify/extensions/kaminari/collection_methods.rb +16 -0
  17. data/lib/datamappify/extensions/kaminari/criteria_processor.rb +36 -0
  18. data/lib/datamappify/lazy/attributes_handler.rb +2 -2
  19. data/lib/datamappify/repository.rb +9 -0
  20. data/lib/datamappify/repository/query_method/callbacks.rb +33 -6
  21. data/lib/datamappify/repository/query_method/count.rb +3 -1
  22. data/lib/datamappify/repository/query_method/method.rb +8 -5
  23. data/lib/datamappify/repository/query_method/method/reference_handler.rb +27 -4
  24. data/lib/datamappify/repository/query_method/method/source_attributes_walker.rb +3 -1
  25. data/lib/datamappify/repository/query_method/save.rb +1 -6
  26. data/lib/datamappify/repository/query_method/update.rb +4 -0
  27. data/lib/datamappify/repository/query_methods.rb +42 -11
  28. data/lib/datamappify/repository/unit_of_work/persistent_states/object.rb +2 -2
  29. data/lib/datamappify/version.rb +1 -1
  30. data/spec/extensions/kaminari_spec.rb +27 -0
  31. data/spec/repository/associations/has_many_spec.rb +9 -42
  32. data/spec/repository/associations/has_one_spec.rb +185 -0
  33. data/spec/repository/callbacks_spec.rb +55 -14
  34. data/spec/repository/dirty_tracking_spec.rb +0 -1
  35. data/spec/repository/finders/criteria_spec.rb +1 -0
  36. data/spec/repository/persistence_spec.rb +21 -0
  37. data/spec/repository_spec.rb +18 -2
  38. data/spec/spec_helper.rb +0 -2
  39. data/spec/support/entities/group.rb +2 -1
  40. data/spec/support/repositories/active_record/group_repository.rb +2 -1
  41. data/spec/support/repositories/hero_user_repository.rb +12 -0
  42. data/spec/support/repositories/sequel/group_repository.rb +2 -1
  43. data/spec/support/shared/contexts.rb +1 -1
  44. data/spec/support/shared/examples/data/association_data_records.rb +28 -0
  45. data/spec/unit/entity/association/reference_spec.rb +4 -4
  46. data/spec/unit/entity/compatibility/active_record_spec.rb +19 -0
  47. metadata +46 -17
  48. data/lib/datamappify/data/criteria/relational/limit.rb +0 -13
  49. data/spec/support/monkey_patches/database_cleaner.rb +0 -12
@@ -0,0 +1,28 @@
1
+ shared_examples_for "association data records" do |data_provider|
2
+ let(:data_groups) { "Datamappify::Data::Record::#{data_provider}::Group".constantize }
3
+ let(:data_super_users) { "Datamappify::Data::Record::#{data_provider}::SuperUser".constantize }
4
+ let(:data_users) { "Datamappify::Data::Record::#{data_provider}::User".constantize }
5
+ let(:data_user_driver_licenses) { "Datamappify::Data::Record::#{data_provider}::UserDriverLicense".constantize }
6
+
7
+ before do
8
+ saved_group
9
+ end
10
+
11
+ describe "data records" do
12
+ it "does not create extra primary data records" do
13
+ expect { saved_group }.to change { data_groups.count }.by(0)
14
+ end
15
+
16
+ it "does not create extra associated primary data records" do
17
+ expect { saved_group }.to change { data_super_users.count }.by(0)
18
+ end
19
+
20
+ it "does not create extra associated secondary data records" do
21
+ expect { saved_group }.to change { data_users.count }.by(0)
22
+ end
23
+
24
+ it "does not create extra secondary data records" do
25
+ expect { saved_group }.to change { data_user_driver_licenses.count }.by(0)
26
+ end
27
+ end
28
+ end
@@ -2,20 +2,20 @@ require 'spec_helper'
2
2
 
3
3
  module Datamappify::Entity
4
4
  describe Datamappify::Entity::Association::Reference do
5
- class DummyEntityA
5
+ class DummyEntityAssociationReferenceA
6
6
  include Datamappify::Entity
7
7
 
8
8
  references :another_entity
9
9
  end
10
10
 
11
- class DummyEntityB
11
+ class DummyEntityAssociationReferenceB
12
12
  include Datamappify::Entity
13
13
  end
14
14
 
15
- subject { DummyEntityA.new }
15
+ subject { DummyEntityAssociationReferenceA.new }
16
16
 
17
17
  describe "#references" do
18
- let(:another_entity) { DummyEntityB.new.tap { |e| e.id = 42 } }
18
+ let(:another_entity) { DummyEntityAssociationReferenceB.new.tap { |e| e.id = 42 } }
19
19
 
20
20
  it { should respond_to(:another_entity_id) }
21
21
  it { should respond_to(:another_entity_id=) }
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module Datamappify::Entity
4
+ describe Datamappify::Entity::Compatibility::ActiveRecord do
5
+ class DummyEntityCompatibilityActiveRecordA
6
+ include Datamappify::Entity
7
+ end
8
+
9
+ class DummyEntityCompatibilityActiveRecordB
10
+ include Datamappify::Entity
11
+
12
+ has_many :other_dummies, :via => DummyEntityCompatibilityActiveRecordA
13
+ end
14
+
15
+ subject { DummyEntityCompatibilityActiveRecordB.reflect_on_association(:other_dummies) }
16
+
17
+ its(:klass) { should == DummyEntityCompatibilityActiveRecordA }
18
+ end
19
+ end
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datamappify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.70.0.beta1
4
+ version: 0.70.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Wu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
11
+ date: 2013-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: 1.0.0.beta6
20
- - - <
17
+ - - ~>
21
18
  - !ruby/object:Gem::Version
22
- version: '2.0'
19
+ version: 1.0.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - '>='
28
- - !ruby/object:Gem::Version
29
- version: 1.0.0.beta6
30
- - - <
24
+ - - ~>
31
25
  - !ruby/object:Gem::Version
32
- version: '2.0'
26
+ version: 1.0.0
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: activemodel
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -142,6 +136,20 @@ dependencies:
142
136
  - - '>='
143
137
  - !ruby/object:Gem::Version
144
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry-stack_explorer
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
145
153
  - !ruby/object:Gem::Dependency
146
154
  name: simplecov
147
155
  requirement: !ruby/object:Gem::Requirement
@@ -226,20 +234,34 @@ dependencies:
226
234
  - - ~>
227
235
  - !ruby/object:Gem::Version
228
236
  version: 4.0.0
237
+ - !ruby/object:Gem::Dependency
238
+ name: kaminari
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
229
251
  - !ruby/object:Gem::Dependency
230
252
  name: database_cleaner
231
253
  requirement: !ruby/object:Gem::Requirement
232
254
  requirements:
233
255
  - - ~>
234
256
  - !ruby/object:Gem::Version
235
- version: 1.0.1
257
+ version: 1.2.0
236
258
  type: :development
237
259
  prerelease: false
238
260
  version_requirements: !ruby/object:Gem::Requirement
239
261
  requirements:
240
262
  - - ~>
241
263
  - !ruby/object:Gem::Version
242
- version: 1.0.1
264
+ version: 1.2.0
243
265
  description: Compose, decouple and manage domain logic and data persistence separately.
244
266
  Works particularly great for composing form objects!
245
267
  email:
@@ -285,7 +307,6 @@ files:
285
307
  - lib/datamappify/data/criteria/relational/criteria.rb
286
308
  - lib/datamappify/data/criteria/relational/criteria_base_method.rb
287
309
  - lib/datamappify/data/criteria/relational/criteria_method.rb
288
- - lib/datamappify/data/criteria/relational/limit.rb
289
310
  - lib/datamappify/data/criteria/relational/save.rb
290
311
  - lib/datamappify/data/criteria/relational/save_by_key.rb
291
312
  - lib/datamappify/data/criteria/sequel/count.rb
@@ -324,6 +345,8 @@ files:
324
345
  - lib/datamappify/entity/composable/validators.rb
325
346
  - lib/datamappify/entity/inspectable.rb
326
347
  - lib/datamappify/entity/lazy_checking.rb
348
+ - lib/datamappify/extensions/kaminari/collection_methods.rb
349
+ - lib/datamappify/extensions/kaminari/criteria_processor.rb
327
350
  - lib/datamappify/lazy.rb
328
351
  - lib/datamappify/lazy/attributes_handler.rb
329
352
  - lib/datamappify/lazy/source_attributes_walker.rb
@@ -357,8 +380,10 @@ files:
357
380
  - spec/entity/composable_spec.rb
358
381
  - spec/entity/inheritance_spec.rb
359
382
  - spec/entity_spec.rb
383
+ - spec/extensions/kaminari_spec.rb
360
384
  - spec/lazy_spec.rb
361
385
  - spec/repository/associations/has_many_spec.rb
386
+ - spec/repository/associations/has_one_spec.rb
362
387
  - spec/repository/callbacks_spec.rb
363
388
  - spec/repository/dirty_persistence_spec.rb
364
389
  - spec/repository/dirty_tracking_spec.rb
@@ -388,7 +413,6 @@ files:
388
413
  - spec/support/entities/super_user.rb
389
414
  - spec/support/entities/user.rb
390
415
  - spec/support/entities/user_info.rb
391
- - spec/support/monkey_patches/database_cleaner.rb
392
416
  - spec/support/repositories/active_record/admin_user_repository.rb
393
417
  - spec/support/repositories/active_record/comment_repository.rb
394
418
  - spec/support/repositories/active_record/computer_repository.rb
@@ -410,10 +434,12 @@ files:
410
434
  - spec/support/repositories/sequel/super_user_repository.rb
411
435
  - spec/support/repositories/sequel/user_repository.rb
412
436
  - spec/support/shared/contexts.rb
437
+ - spec/support/shared/examples/data/association_data_records.rb
413
438
  - spec/support/shared/examples/repository/finders/where_or_match.rb
414
439
  - spec/support/tables/active_record.rb
415
440
  - spec/support/tables/sequel.rb
416
441
  - spec/unit/entity/association/reference_spec.rb
442
+ - spec/unit/entity/compatibility/active_record_spec.rb
417
443
  - spec/unit/entity/composable_spec.rb
418
444
  - spec/unit/repository/query_method_spec.rb
419
445
  homepage: https://github.com/fredwu/datamappify
@@ -447,8 +473,10 @@ test_files:
447
473
  - spec/entity/composable_spec.rb
448
474
  - spec/entity/inheritance_spec.rb
449
475
  - spec/entity_spec.rb
476
+ - spec/extensions/kaminari_spec.rb
450
477
  - spec/lazy_spec.rb
451
478
  - spec/repository/associations/has_many_spec.rb
479
+ - spec/repository/associations/has_one_spec.rb
452
480
  - spec/repository/callbacks_spec.rb
453
481
  - spec/repository/dirty_persistence_spec.rb
454
482
  - spec/repository/dirty_tracking_spec.rb
@@ -478,7 +506,6 @@ test_files:
478
506
  - spec/support/entities/super_user.rb
479
507
  - spec/support/entities/user.rb
480
508
  - spec/support/entities/user_info.rb
481
- - spec/support/monkey_patches/database_cleaner.rb
482
509
  - spec/support/repositories/active_record/admin_user_repository.rb
483
510
  - spec/support/repositories/active_record/comment_repository.rb
484
511
  - spec/support/repositories/active_record/computer_repository.rb
@@ -500,10 +527,12 @@ test_files:
500
527
  - spec/support/repositories/sequel/super_user_repository.rb
501
528
  - spec/support/repositories/sequel/user_repository.rb
502
529
  - spec/support/shared/contexts.rb
530
+ - spec/support/shared/examples/data/association_data_records.rb
503
531
  - spec/support/shared/examples/repository/finders/where_or_match.rb
504
532
  - spec/support/tables/active_record.rb
505
533
  - spec/support/tables/sequel.rb
506
534
  - spec/unit/entity/association/reference_spec.rb
535
+ - spec/unit/entity/compatibility/active_record_spec.rb
507
536
  - spec/unit/entity/composable_spec.rb
508
537
  - spec/unit/repository/query_method_spec.rb
509
538
  has_rdoc:
@@ -1,13 +0,0 @@
1
- module Datamappify
2
- module Data
3
- module Criteria
4
- module Relational
5
- class Limit < Common
6
- def records(scope = nil)
7
- (scope || source_class).limit(criteria)
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,12 +0,0 @@
1
- # @see https://github.com/bmabey/database_cleaner/pull/211
2
- module DatabaseCleaner
3
- module Sequel
4
- class Truncation
5
- def each_table
6
- tables_to_truncate(db).each do |table|
7
- yield db, table.to_sym
8
- end
9
- end
10
- end
11
- end
12
- end