datamappify 0.70.0.beta1 → 0.70.0.beta2

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 (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