composite_primary_keys 13.0.1 → 13.0.2

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +891 -888
  3. data/README.rdoc +181 -181
  4. data/Rakefile +37 -37
  5. data/lib/composite_primary_keys/arel/sqlserver.rb +37 -37
  6. data/lib/composite_primary_keys/arel/to_sql.rb +18 -18
  7. data/lib/composite_primary_keys/associations/association.rb +23 -23
  8. data/lib/composite_primary_keys/associations/collection_association.rb +31 -31
  9. data/lib/composite_primary_keys/associations/foreign_association.rb +15 -15
  10. data/lib/composite_primary_keys/associations/has_many_association.rb +35 -35
  11. data/lib/composite_primary_keys/associations/{join_dependency.rb → join_association.rb} +1 -1
  12. data/lib/composite_primary_keys/associations/through_association.rb +25 -25
  13. data/lib/composite_primary_keys/autosave_association.rb +60 -60
  14. data/lib/composite_primary_keys/composite_arrays.rb +86 -86
  15. data/lib/composite_primary_keys/composite_relation.rb +29 -29
  16. data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +10 -10
  17. data/lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb +26 -26
  18. data/lib/composite_primary_keys/counter_cache.rb +15 -15
  19. data/lib/composite_primary_keys/fixtures.rb +21 -21
  20. data/lib/composite_primary_keys/persistence.rb +82 -82
  21. data/lib/composite_primary_keys/relation/calculations.rb +104 -104
  22. data/lib/composite_primary_keys/sanitization.rb +42 -42
  23. data/lib/composite_primary_keys/transactions.rb +34 -34
  24. data/lib/composite_primary_keys/validations/uniqueness.rb +31 -31
  25. data/lib/composite_primary_keys/version.rb +8 -8
  26. data/lib/composite_primary_keys.rb +118 -118
  27. data/scripts/console.rb +48 -48
  28. data/scripts/txt2html +76 -76
  29. data/scripts/txt2js +65 -65
  30. data/tasks/databases/mysql.rake +40 -40
  31. data/tasks/databases/oracle.rake +41 -41
  32. data/tasks/databases/postgresql.rake +38 -38
  33. data/tasks/databases/sqlite.rake +25 -25
  34. data/tasks/databases/sqlserver.rake +43 -43
  35. data/tasks/website.rake +18 -18
  36. data/test/README_tests.rdoc +56 -56
  37. data/test/abstract_unit.rb +114 -114
  38. data/test/connections/connection_spec.rb +27 -27
  39. data/test/connections/databases.example.yml +40 -40
  40. data/test/connections/databases.yml +40 -39
  41. data/test/fixtures/article.rb +10 -10
  42. data/test/fixtures/articles.yml +7 -7
  43. data/test/fixtures/capitol.rb +3 -3
  44. data/test/fixtures/capitols.yml +16 -16
  45. data/test/fixtures/comment.rb +5 -5
  46. data/test/fixtures/comments.yml +17 -17
  47. data/test/fixtures/department.rb +16 -16
  48. data/test/fixtures/dorm.rb +2 -2
  49. data/test/fixtures/dorms.yml +4 -4
  50. data/test/fixtures/employee.rb +5 -5
  51. data/test/fixtures/group.rb +2 -2
  52. data/test/fixtures/groups.yml +6 -6
  53. data/test/fixtures/membership.rb +8 -8
  54. data/test/fixtures/membership_status.rb +2 -2
  55. data/test/fixtures/membership_statuses.yml +16 -16
  56. data/test/fixtures/memberships.yml +10 -10
  57. data/test/fixtures/product.rb +9 -9
  58. data/test/fixtures/product_tariff.rb +5 -5
  59. data/test/fixtures/product_tariffs.yml +14 -14
  60. data/test/fixtures/products.yml +11 -11
  61. data/test/fixtures/reading.rb +4 -4
  62. data/test/fixtures/readings.yml +10 -10
  63. data/test/fixtures/reference_code.rb +7 -7
  64. data/test/fixtures/reference_codes.yml +28 -28
  65. data/test/fixtures/reference_type.rb +12 -12
  66. data/test/fixtures/reference_types.yml +9 -9
  67. data/test/fixtures/restaurant.rb +9 -9
  68. data/test/fixtures/restaurants.yml +14 -14
  69. data/test/fixtures/restaurants_suburb.rb +2 -2
  70. data/test/fixtures/room.rb +11 -11
  71. data/test/fixtures/room_assignment.rb +13 -13
  72. data/test/fixtures/room_assignments.yml +24 -24
  73. data/test/fixtures/room_attribute.rb +2 -2
  74. data/test/fixtures/room_attribute_assignment.rb +4 -4
  75. data/test/fixtures/room_attribute_assignments.yml +4 -4
  76. data/test/fixtures/room_attributes.yml +2 -2
  77. data/test/fixtures/rooms.yml +12 -12
  78. data/test/fixtures/street.rb +2 -2
  79. data/test/fixtures/student.rb +3 -3
  80. data/test/fixtures/students.yml +15 -15
  81. data/test/fixtures/suburb.rb +5 -5
  82. data/test/fixtures/tariff.rb +5 -5
  83. data/test/fixtures/tariffs.yml +14 -14
  84. data/test/fixtures/topic_sources.yml +3 -3
  85. data/test/fixtures/topics.yml +8 -8
  86. data/test/fixtures/users.yml +10 -10
  87. data/test/plugins/pagination.rb +405 -405
  88. data/test/plugins/pagination_helper.rb +135 -135
  89. data/test/test_associations.rb +372 -372
  90. data/test/test_attribute_methods.rb +63 -63
  91. data/test/test_callbacks.rb +99 -99
  92. data/test/test_composite_arrays.rb +38 -38
  93. data/test/test_counter_cache.rb +30 -30
  94. data/test/test_dumpable.rb +15 -15
  95. data/test/test_dup.rb +37 -37
  96. data/test/test_equal.rb +26 -26
  97. data/test/test_habtm.rb +141 -141
  98. data/test/test_miscellaneous.rb +32 -32
  99. data/test/test_optimistic.rb +18 -18
  100. data/test/test_pagination.rb +35 -35
  101. data/test/test_polymorphic.rb +43 -43
  102. data/test/test_predicates.rb +59 -59
  103. data/test/test_preload.rb +102 -102
  104. data/test/test_santiago.rb +23 -23
  105. data/test/test_touch.rb +23 -23
  106. data/test/test_tutorial_example.rb +25 -25
  107. data/test/test_validations.rb +13 -13
  108. metadata +4 -4
@@ -1,63 +1,63 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class TestAttributeMethods < ActiveSupport::TestCase
4
- fixtures :reference_types, :reference_codes
5
-
6
- def test_read_attribute_with_single_key
7
- rt = ReferenceType.find(1)
8
- assert_equal(1, rt.reference_type_id)
9
- assert_equal('NAME_PREFIX', rt.type_label)
10
- assert_equal('Name Prefix', rt.abbreviation)
11
- end
12
-
13
- def test_read_attribute_with_composite_keys
14
- ref_code = ReferenceCode.find([1, 1])
15
- assert_equal(1, ref_code.id.first)
16
- assert_equal(1, ref_code.id.last)
17
- assert_equal('Mr', ref_code.abbreviation)
18
- end
19
-
20
- # to_key returns array even for single key
21
- def test_to_key_with_single_key
22
- rt = ReferenceType.find(1)
23
- assert_equal([1], rt.to_key)
24
- end
25
-
26
- def test_to_key_with_composite_keys
27
- ref_code = ReferenceCode.find([1, 1])
28
- assert_equal(1, ref_code.to_key.first)
29
- assert_equal(1, ref_code.to_key.last)
30
- end
31
-
32
- def test_to_key_with_single_key_unsaved
33
- rt = ReferenceType.new
34
- assert_nil(rt.to_key)
35
- end
36
-
37
- def test_to_key_with_composite_keys_unsaved
38
- ref_code = ReferenceCode.new
39
- assert_nil(ref_code.to_key)
40
- end
41
-
42
- def test_to_key_with_single_key_destroyed
43
- rt = ReferenceType.find(1)
44
- rt.destroy
45
- assert_equal([1], rt.to_key)
46
- end
47
-
48
- def test_to_key_with_composite_key_destroyed
49
- ref_code = ReferenceCode.find([1, 1])
50
- ref_code.destroy
51
- assert_equal([1,1], ref_code.to_key)
52
- end
53
-
54
- def test_id_was
55
- rt = ReferenceType.find(1)
56
- rt.id = 2
57
- assert_equal 1, rt.id_was
58
-
59
- ref_code = ReferenceCode.find([1, 1])
60
- ref_code.id = [1,2]
61
- assert_equal [1,1], ref_code.id_was
62
- end
63
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestAttributeMethods < ActiveSupport::TestCase
4
+ fixtures :reference_types, :reference_codes
5
+
6
+ def test_read_attribute_with_single_key
7
+ rt = ReferenceType.find(1)
8
+ assert_equal(1, rt.reference_type_id)
9
+ assert_equal('NAME_PREFIX', rt.type_label)
10
+ assert_equal('Name Prefix', rt.abbreviation)
11
+ end
12
+
13
+ def test_read_attribute_with_composite_keys
14
+ ref_code = ReferenceCode.find([1, 1])
15
+ assert_equal(1, ref_code.id.first)
16
+ assert_equal(1, ref_code.id.last)
17
+ assert_equal('Mr', ref_code.abbreviation)
18
+ end
19
+
20
+ # to_key returns array even for single key
21
+ def test_to_key_with_single_key
22
+ rt = ReferenceType.find(1)
23
+ assert_equal([1], rt.to_key)
24
+ end
25
+
26
+ def test_to_key_with_composite_keys
27
+ ref_code = ReferenceCode.find([1, 1])
28
+ assert_equal(1, ref_code.to_key.first)
29
+ assert_equal(1, ref_code.to_key.last)
30
+ end
31
+
32
+ def test_to_key_with_single_key_unsaved
33
+ rt = ReferenceType.new
34
+ assert_nil(rt.to_key)
35
+ end
36
+
37
+ def test_to_key_with_composite_keys_unsaved
38
+ ref_code = ReferenceCode.new
39
+ assert_nil(ref_code.to_key)
40
+ end
41
+
42
+ def test_to_key_with_single_key_destroyed
43
+ rt = ReferenceType.find(1)
44
+ rt.destroy
45
+ assert_equal([1], rt.to_key)
46
+ end
47
+
48
+ def test_to_key_with_composite_key_destroyed
49
+ ref_code = ReferenceCode.find([1, 1])
50
+ ref_code.destroy
51
+ assert_equal([1,1], ref_code.to_key)
52
+ end
53
+
54
+ def test_id_was
55
+ rt = ReferenceType.find(1)
56
+ rt.id = 2
57
+ assert_equal 1, rt.id_was
58
+
59
+ ref_code = ReferenceCode.find([1, 1])
60
+ ref_code.id = [1,2]
61
+ assert_equal [1,1], ref_code.id_was
62
+ end
63
+ end
@@ -1,99 +1,99 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class TestCallbacks < ActiveSupport::TestCase
4
- fixtures :suburbs
5
-
6
- def setup
7
- @@callbacks = OpenStruct.new
8
-
9
- Suburb.class_eval do
10
- before_create do
11
- @@callbacks.before_create = true
12
- end
13
-
14
- after_create do
15
- @@callbacks.after_create = true
16
- end
17
-
18
- around_create do |suburb, block|
19
- @@callbacks.around_create = true
20
- block.call
21
- end
22
-
23
- before_save do
24
- @@callbacks.before_save = true
25
- end
26
-
27
- after_save do
28
- @@callbacks.after_save = true
29
- end
30
-
31
- around_save do |suburb, block|
32
- @@callbacks.around_save = true
33
- block.call
34
- end
35
-
36
- before_update do
37
- @@callbacks.before_update = true
38
- end
39
-
40
- after_update do
41
- @@callbacks.after_update = true
42
- end
43
-
44
- around_update do |suburb, block|
45
- @@callbacks.around_update = true
46
- block.call
47
- end
48
- end
49
- end
50
-
51
- def teardown
52
- Suburb.reset_callbacks(:create)
53
- Suburb.reset_callbacks(:save)
54
- Suburb.reset_callbacks(:update)
55
- end
56
-
57
- def test_create
58
- refute(@@callbacks.before_save)
59
- refute(@@callbacks.after_save)
60
- refute(@@callbacks.around_save)
61
-
62
- refute(@@callbacks.before_create)
63
- refute(@@callbacks.after_create)
64
- refute(@@callbacks.around_create)
65
-
66
- suburb = Suburb.new(:city_id => 3, :suburb_id => 3, :name => 'created')
67
- suburb.save!
68
-
69
- assert(@@callbacks.before_save)
70
- assert(@@callbacks.after_save)
71
- assert(@@callbacks.around_save)
72
-
73
- assert(@@callbacks.before_create)
74
- assert(@@callbacks.after_create)
75
- assert(@@callbacks.around_create)
76
- end
77
-
78
- def test_update
79
- refute(@@callbacks.before_save)
80
- refute(@@callbacks.after_save)
81
- refute(@@callbacks.around_save)
82
-
83
- refute(@@callbacks.before_create)
84
- refute(@@callbacks.after_create)
85
- refute(@@callbacks.around_create)
86
-
87
- suburb = suburbs(:first)
88
- suburb.name = 'Updated'
89
- suburb.save
90
-
91
- assert(@@callbacks.before_update)
92
- assert(@@callbacks.after_update)
93
- assert(@@callbacks.around_update)
94
-
95
- assert(@@callbacks.before_save)
96
- assert(@@callbacks.after_save)
97
- assert(@@callbacks.around_save)
98
- end
99
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestCallbacks < ActiveSupport::TestCase
4
+ fixtures :suburbs
5
+
6
+ def setup
7
+ @@callbacks = OpenStruct.new
8
+
9
+ Suburb.class_eval do
10
+ before_create do
11
+ @@callbacks.before_create = true
12
+ end
13
+
14
+ after_create do
15
+ @@callbacks.after_create = true
16
+ end
17
+
18
+ around_create do |suburb, block|
19
+ @@callbacks.around_create = true
20
+ block.call
21
+ end
22
+
23
+ before_save do
24
+ @@callbacks.before_save = true
25
+ end
26
+
27
+ after_save do
28
+ @@callbacks.after_save = true
29
+ end
30
+
31
+ around_save do |suburb, block|
32
+ @@callbacks.around_save = true
33
+ block.call
34
+ end
35
+
36
+ before_update do
37
+ @@callbacks.before_update = true
38
+ end
39
+
40
+ after_update do
41
+ @@callbacks.after_update = true
42
+ end
43
+
44
+ around_update do |suburb, block|
45
+ @@callbacks.around_update = true
46
+ block.call
47
+ end
48
+ end
49
+ end
50
+
51
+ def teardown
52
+ Suburb.reset_callbacks(:create)
53
+ Suburb.reset_callbacks(:save)
54
+ Suburb.reset_callbacks(:update)
55
+ end
56
+
57
+ def test_create
58
+ refute(@@callbacks.before_save)
59
+ refute(@@callbacks.after_save)
60
+ refute(@@callbacks.around_save)
61
+
62
+ refute(@@callbacks.before_create)
63
+ refute(@@callbacks.after_create)
64
+ refute(@@callbacks.around_create)
65
+
66
+ suburb = Suburb.new(:city_id => 3, :suburb_id => 3, :name => 'created')
67
+ suburb.save!
68
+
69
+ assert(@@callbacks.before_save)
70
+ assert(@@callbacks.after_save)
71
+ assert(@@callbacks.around_save)
72
+
73
+ assert(@@callbacks.before_create)
74
+ assert(@@callbacks.after_create)
75
+ assert(@@callbacks.around_create)
76
+ end
77
+
78
+ def test_update
79
+ refute(@@callbacks.before_save)
80
+ refute(@@callbacks.after_save)
81
+ refute(@@callbacks.around_save)
82
+
83
+ refute(@@callbacks.before_create)
84
+ refute(@@callbacks.after_create)
85
+ refute(@@callbacks.around_create)
86
+
87
+ suburb = suburbs(:first)
88
+ suburb.name = 'Updated'
89
+ suburb.save
90
+
91
+ assert(@@callbacks.before_update)
92
+ assert(@@callbacks.after_update)
93
+ assert(@@callbacks.around_update)
94
+
95
+ assert(@@callbacks.before_save)
96
+ assert(@@callbacks.after_save)
97
+ assert(@@callbacks.around_save)
98
+ end
99
+ end
@@ -1,38 +1,38 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class CompositeArraysTest < ActiveSupport::TestCase
4
-
5
- def test_new_primary_keys
6
- keys = CompositePrimaryKeys::CompositeKeys.new
7
- assert_not_nil keys
8
- assert_equal '', keys.to_s
9
- assert_equal '', "#{keys}"
10
- end
11
-
12
- def test_initialize_primary_keys
13
- keys = CompositePrimaryKeys::CompositeKeys.new([1,2,3])
14
- assert_not_nil keys
15
- assert_equal '1,2,3', keys.to_s
16
- assert_equal '1,2,3', "#{keys}"
17
- end
18
-
19
- def test_to_composite_keys
20
- keys = [1,2,3].to_composite_keys
21
- assert_equal CompositePrimaryKeys::CompositeKeys, keys.class
22
- assert_equal '1,2,3', keys.to_s
23
- end
24
-
25
- def test_parse
26
- assert_equal ['1', '2'], CompositePrimaryKeys::CompositeKeys.parse('1,2')
27
- assert_equal ['The USA', '^Washington, D.C.'],
28
- CompositePrimaryKeys::CompositeKeys.parse('The USA,^5EWashington^2C D.C.')
29
- assert_equal ['The USA', '^Washington, D.C.'],
30
- CompositePrimaryKeys::CompositeKeys.parse(['The USA', '^Washington, D.C.'])
31
- end
32
-
33
- def test_to_s
34
- assert_equal '1,2', CompositePrimaryKeys::CompositeKeys.new([1, 2]).to_s
35
- assert_equal 'The USA,^5EWashington^2C D.C.',
36
- CompositePrimaryKeys::CompositeKeys.new(['The USA', '^Washington, D.C.']).to_s
37
- end
38
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class CompositeArraysTest < ActiveSupport::TestCase
4
+
5
+ def test_new_primary_keys
6
+ keys = CompositePrimaryKeys::CompositeKeys.new
7
+ assert_not_nil keys
8
+ assert_equal '', keys.to_s
9
+ assert_equal '', "#{keys}"
10
+ end
11
+
12
+ def test_initialize_primary_keys
13
+ keys = CompositePrimaryKeys::CompositeKeys.new([1,2,3])
14
+ assert_not_nil keys
15
+ assert_equal '1,2,3', keys.to_s
16
+ assert_equal '1,2,3', "#{keys}"
17
+ end
18
+
19
+ def test_to_composite_keys
20
+ keys = [1,2,3].to_composite_keys
21
+ assert_equal CompositePrimaryKeys::CompositeKeys, keys.class
22
+ assert_equal '1,2,3', keys.to_s
23
+ end
24
+
25
+ def test_parse
26
+ assert_equal ['1', '2'], CompositePrimaryKeys::CompositeKeys.parse('1,2')
27
+ assert_equal ['The USA', '^Washington, D.C.'],
28
+ CompositePrimaryKeys::CompositeKeys.parse('The USA,^5EWashington^2C D.C.')
29
+ assert_equal ['The USA', '^Washington, D.C.'],
30
+ CompositePrimaryKeys::CompositeKeys.parse(['The USA', '^Washington, D.C.'])
31
+ end
32
+
33
+ def test_to_s
34
+ assert_equal '1,2', CompositePrimaryKeys::CompositeKeys.new([1, 2]).to_s
35
+ assert_equal 'The USA,^5EWashington^2C D.C.',
36
+ CompositePrimaryKeys::CompositeKeys.new(['The USA', '^Washington, D.C.']).to_s
37
+ end
38
+ end
@@ -1,31 +1,31 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class TestCounterCache < ActiveSupport::TestCase
4
- fixtures :dorms, :rooms, :tariffs
5
-
6
- def test_update_counter
7
- tariff = tariffs(:flat)
8
- assert_equal(50, tariff.amount)
9
- Tariff.update_counters(tariff.id, :amount => 1)
10
- tariff.reload
11
- assert_equal(51, tariff.amount)
12
- end
13
-
14
- def test_increment_counter
15
- tariff = tariffs(:flat)
16
- assert_equal(50, tariff.amount)
17
- Tariff.increment_counter(:amount, tariff.id)
18
-
19
- tariff.reload
20
- assert_equal(51, tariff.amount)
21
- end
22
-
23
- def test_decrement_counter
24
- tariff = tariffs(:flat)
25
- assert_equal(50, tariff.amount)
26
- Tariff.decrement_counter(:amount, tariff.id)
27
-
28
- tariff.reload
29
- assert_equal(49, tariff.amount)
30
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestCounterCache < ActiveSupport::TestCase
4
+ fixtures :dorms, :rooms, :tariffs
5
+
6
+ def test_update_counter
7
+ tariff = tariffs(:flat)
8
+ assert_equal(50, tariff.amount)
9
+ Tariff.update_counters(tariff.id, :amount => 1)
10
+ tariff.reload
11
+ assert_equal(51, tariff.amount)
12
+ end
13
+
14
+ def test_increment_counter
15
+ tariff = tariffs(:flat)
16
+ assert_equal(50, tariff.amount)
17
+ Tariff.increment_counter(:amount, tariff.id)
18
+
19
+ tariff.reload
20
+ assert_equal(51, tariff.amount)
21
+ end
22
+
23
+ def test_decrement_counter
24
+ tariff = tariffs(:flat)
25
+ assert_equal(50, tariff.amount)
26
+ Tariff.decrement_counter(:amount, tariff.id)
27
+
28
+ tariff.reload
29
+ assert_equal(49, tariff.amount)
30
+ end
31
31
  end
@@ -1,15 +1,15 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class TestDumpable < ActiveSupport::TestCase
4
- fixtures :articles, :readings, :users
5
-
6
- def test_marshal_with_simple_preload
7
- articles = Article.preload(:readings).where(id: 1).to_a
8
- assert_equal(Marshal.load(Marshal.dump(articles)), articles)
9
- end
10
-
11
- def test_marshal_with_comples_preload
12
- articles = Article.preload({ readings: :user }).where(id: 1).to_a
13
- assert_equal(Marshal.load(Marshal.dump(articles)), articles)
14
- end
15
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestDumpable < ActiveSupport::TestCase
4
+ fixtures :articles, :readings, :users
5
+
6
+ def test_marshal_with_simple_preload
7
+ articles = Article.preload(:readings).where(id: 1).to_a
8
+ assert_equal(Marshal.load(Marshal.dump(articles)), articles)
9
+ end
10
+
11
+ def test_marshal_with_comples_preload
12
+ articles = Article.preload({ readings: :user }).where(id: 1).to_a
13
+ assert_equal(Marshal.load(Marshal.dump(articles)), articles)
14
+ end
15
+ end
data/test/test_dup.rb CHANGED
@@ -1,38 +1,38 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class TestClone < ActiveSupport::TestCase
4
- fixtures :reference_types, :reference_codes
5
-
6
- CLASSES = {
7
- :single => {
8
- :class => ReferenceType,
9
- :primary_keys => :reference_type_id,
10
- },
11
- :dual => {
12
- :class => ReferenceCode,
13
- :primary_keys => [:reference_type_id, :reference_code],
14
- },
15
- }
16
-
17
- def setup
18
- self.class.classes = CLASSES
19
- end
20
-
21
- def test_dup
22
- testing_with do
23
- clone = @first.dup
24
-
25
- remove_keys = Array(@klass.primary_key).map(&:to_s)
26
- remove_keys << Array(@klass.primary_key) # Rails 4 adds the PK to the attributes, so we want to remove it as well
27
- assert_equal(@first.attributes.except(*remove_keys), clone.attributes.except(*remove_keys))
28
-
29
- if composite?
30
- @klass.primary_key.each do |key|
31
- assert_nil(clone[key], "Primary key '#{key}' should be nil")
32
- end
33
- else
34
- assert_nil(clone[@klass.primary_key], "Sole primary key should be nil")
35
- end
36
- end
37
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestClone < ActiveSupport::TestCase
4
+ fixtures :reference_types, :reference_codes
5
+
6
+ CLASSES = {
7
+ :single => {
8
+ :class => ReferenceType,
9
+ :primary_keys => :reference_type_id,
10
+ },
11
+ :dual => {
12
+ :class => ReferenceCode,
13
+ :primary_keys => [:reference_type_id, :reference_code],
14
+ },
15
+ }
16
+
17
+ def setup
18
+ self.class.classes = CLASSES
19
+ end
20
+
21
+ def test_dup
22
+ testing_with do
23
+ clone = @first.dup
24
+
25
+ remove_keys = Array(@klass.primary_key).map(&:to_s)
26
+ remove_keys << Array(@klass.primary_key) # Rails 4 adds the PK to the attributes, so we want to remove it as well
27
+ assert_equal(@first.attributes.except(*remove_keys), clone.attributes.except(*remove_keys))
28
+
29
+ if composite?
30
+ @klass.primary_key.each do |key|
31
+ assert_nil(clone[key], "Primary key '#{key}' should be nil")
32
+ end
33
+ else
34
+ assert_nil(clone[@klass.primary_key], "Sole primary key should be nil")
35
+ end
36
+ end
37
+ end
38
38
  end
data/test/test_equal.rb CHANGED
@@ -1,26 +1,26 @@
1
- require File.expand_path('../abstract_unit', __FILE__)
2
-
3
- class TestEqual < ActiveSupport::TestCase
4
- fixtures :capitols
5
-
6
- def test_new
7
- assert_equal(Capitol.new, Capitol.new)
8
- end
9
-
10
- def test_same_new
11
- it = Capitol.new
12
- assert_equal(it, it)
13
- end
14
-
15
- def test_same
16
- first = Capitol.find(['Canada', 'Ottawa'])
17
- second = Capitol.find(['Canada', 'Ottawa'])
18
- assert_equal(first, second)
19
- end
20
-
21
- def test_different
22
- first = Capitol.find(['Mexico', 'Mexico City'])
23
- second = Capitol.find(['Canada', 'Ottawa'])
24
- assert_not_equal(first, second)
25
- end
26
- end
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestEqual < ActiveSupport::TestCase
4
+ fixtures :capitols
5
+
6
+ def test_new
7
+ assert_equal(Capitol.new, Capitol.new)
8
+ end
9
+
10
+ def test_same_new
11
+ it = Capitol.new
12
+ assert_equal(it, it)
13
+ end
14
+
15
+ def test_same
16
+ first = Capitol.find(['Canada', 'Ottawa'])
17
+ second = Capitol.find(['Canada', 'Ottawa'])
18
+ assert_equal(first, second)
19
+ end
20
+
21
+ def test_different
22
+ first = Capitol.find(['Mexico', 'Mexico City'])
23
+ second = Capitol.find(['Canada', 'Ottawa'])
24
+ assert_not_equal(first, second)
25
+ end
26
+ end