composite_primary_keys 12.0.9 → 14.0.1
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.
- checksums.yaml +4 -4
- data/History.rdoc +894 -877
- data/README.rdoc +182 -180
- data/Rakefile +37 -37
- data/lib/composite_primary_keys/active_model/attribute_assignment.rb +19 -19
- data/lib/composite_primary_keys/arel/sqlserver.rb +37 -37
- data/lib/composite_primary_keys/arel/to_sql.rb +18 -18
- data/lib/composite_primary_keys/associations/association.rb +23 -23
- data/lib/composite_primary_keys/associations/association_scope.rb +66 -68
- data/lib/composite_primary_keys/associations/collection_association.rb +31 -31
- data/lib/composite_primary_keys/associations/foreign_association.rb +15 -15
- data/lib/composite_primary_keys/associations/has_many_association.rb +35 -35
- data/lib/composite_primary_keys/associations/join_dependency.rb +137 -103
- data/lib/composite_primary_keys/associations/preloader/association.rb +68 -53
- data/lib/composite_primary_keys/associations/through_association.rb +25 -25
- data/lib/composite_primary_keys/attribute_methods/primary_key.rb +0 -2
- data/lib/composite_primary_keys/attribute_methods/read.rb +30 -30
- data/lib/composite_primary_keys/attribute_methods/write.rb +35 -35
- data/lib/composite_primary_keys/attribute_methods.rb +21 -9
- data/lib/composite_primary_keys/autosave_association.rb +60 -60
- data/lib/composite_primary_keys/base.rb +141 -141
- data/lib/composite_primary_keys/composite_arrays.rb +86 -86
- data/lib/composite_primary_keys/composite_predicates.rb +71 -69
- data/lib/composite_primary_keys/composite_relation.rb +29 -29
- data/lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb +37 -37
- data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +10 -10
- data/lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb +26 -26
- data/lib/composite_primary_keys/connection_adapters/sqlserver/database_statements.rb +44 -44
- data/lib/composite_primary_keys/core.rb +48 -48
- data/lib/composite_primary_keys/counter_cache.rb +15 -15
- data/lib/composite_primary_keys/fixtures.rb +21 -21
- data/lib/composite_primary_keys/nested_attributes.rb +1 -1
- data/lib/composite_primary_keys/persistence.rb +96 -81
- data/lib/composite_primary_keys/reflection.rb +91 -29
- data/lib/composite_primary_keys/relation/batches.rb +15 -7
- data/lib/composite_primary_keys/relation/calculations.rb +110 -81
- data/lib/composite_primary_keys/relation/finder_methods.rb +235 -235
- data/lib/composite_primary_keys/relation/predicate_builder/association_query_value.rb +39 -20
- data/lib/composite_primary_keys/relation/query_methods.rb +42 -42
- data/lib/composite_primary_keys/relation/where_clause.rb +18 -23
- data/lib/composite_primary_keys/relation.rb +197 -193
- data/lib/composite_primary_keys/sanitization.rb +42 -42
- data/lib/composite_primary_keys/table_metadata.rb +11 -0
- data/lib/composite_primary_keys/transactions.rb +34 -34
- data/lib/composite_primary_keys/validations/uniqueness.rb +31 -31
- data/lib/composite_primary_keys/version.rb +8 -8
- data/lib/composite_primary_keys.rb +119 -117
- data/scripts/console.rb +48 -48
- data/scripts/txt2html +76 -76
- data/scripts/txt2js +65 -65
- data/tasks/databases/mysql.rake +40 -40
- data/tasks/databases/oracle.rake +41 -41
- data/tasks/databases/postgresql.rake +38 -38
- data/tasks/databases/sqlite.rake +25 -25
- data/tasks/databases/sqlserver.rake +43 -43
- data/tasks/website.rake +18 -18
- data/test/README_tests.rdoc +56 -56
- data/test/abstract_unit.rb +118 -114
- data/test/connections/connection_spec.rb +27 -27
- data/test/connections/databases.ci.yml +22 -22
- data/test/connections/databases.example.yml +40 -40
- data/test/connections/databases.yml +40 -39
- data/test/fixtures/article.rb +10 -10
- data/test/fixtures/articles.yml +7 -7
- data/test/fixtures/capitol.rb +3 -3
- data/test/fixtures/capitols.yml +16 -16
- data/test/fixtures/comment.rb +5 -5
- data/test/fixtures/comments.yml +17 -17
- data/test/fixtures/db_definitions/db2-create-tables.sql +112 -112
- data/test/fixtures/db_definitions/db2-drop-tables.sql +16 -16
- data/test/fixtures/db_definitions/mysql.sql +180 -180
- data/test/fixtures/db_definitions/oracle.drop.sql +41 -41
- data/test/fixtures/db_definitions/oracle.sql +199 -199
- data/test/fixtures/db_definitions/postgresql.sql +182 -182
- data/test/fixtures/db_definitions/sqlite.sql +169 -169
- data/test/fixtures/db_definitions/sqlserver.sql +176 -176
- data/test/fixtures/department.rb +16 -16
- data/test/fixtures/departments.yml +19 -15
- data/test/fixtures/dorm.rb +2 -2
- data/test/fixtures/dorms.yml +4 -4
- data/test/fixtures/employee.rb +5 -5
- data/test/fixtures/employees.yml +33 -28
- data/test/fixtures/group.rb +2 -2
- data/test/fixtures/groups.yml +6 -6
- data/test/fixtures/membership.rb +8 -6
- data/test/fixtures/membership_status.rb +2 -2
- data/test/fixtures/membership_statuses.yml +16 -16
- data/test/fixtures/memberships.yml +10 -10
- data/test/fixtures/product.rb +9 -9
- data/test/fixtures/product_tariff.rb +5 -5
- data/test/fixtures/product_tariffs.yml +14 -14
- data/test/fixtures/products.yml +11 -11
- data/test/fixtures/reading.rb +4 -4
- data/test/fixtures/readings.yml +10 -10
- data/test/fixtures/reference_code.rb +7 -7
- data/test/fixtures/reference_codes.yml +28 -28
- data/test/fixtures/reference_type.rb +12 -12
- data/test/fixtures/reference_types.yml +9 -9
- data/test/fixtures/restaurant.rb +9 -9
- data/test/fixtures/restaurants.yml +14 -14
- data/test/fixtures/restaurants_suburb.rb +2 -2
- data/test/fixtures/restaurants_suburbs.yml +10 -10
- data/test/fixtures/room.rb +11 -11
- data/test/fixtures/room_assignment.rb +13 -13
- data/test/fixtures/room_assignments.yml +24 -24
- data/test/fixtures/room_attribute.rb +2 -2
- data/test/fixtures/room_attribute_assignment.rb +4 -4
- data/test/fixtures/room_attribute_assignments.yml +4 -4
- data/test/fixtures/room_attributes.yml +2 -2
- data/test/fixtures/rooms.yml +12 -12
- data/test/fixtures/street.rb +2 -2
- data/test/fixtures/streets.yml +16 -16
- data/test/fixtures/student.rb +3 -3
- data/test/fixtures/students.yml +15 -15
- data/test/fixtures/suburb.rb +5 -5
- data/test/fixtures/suburbs.yml +14 -14
- data/test/fixtures/tariff.rb +5 -5
- data/test/fixtures/tariffs.yml +14 -14
- data/test/fixtures/topic_sources.yml +3 -3
- data/test/fixtures/topics.yml +8 -8
- data/test/fixtures/user.rb +11 -11
- data/test/fixtures/users.yml +10 -10
- data/test/plugins/pagination.rb +405 -405
- data/test/plugins/pagination_helper.rb +135 -135
- data/test/test_associations.rb +372 -358
- data/test/test_attribute_methods.rb +63 -63
- data/test/test_attributes.rb +75 -60
- data/test/test_calculations.rb +49 -42
- data/test/test_callbacks.rb +99 -99
- data/test/test_composite_arrays.rb +38 -38
- data/test/test_counter_cache.rb +30 -30
- data/test/test_create.rb +218 -206
- data/test/test_delete.rb +188 -179
- data/test/test_dumpable.rb +15 -15
- data/test/test_dup.rb +37 -37
- data/test/test_equal.rb +26 -26
- data/test/test_exists.rb +39 -39
- data/test/test_find.rb +170 -164
- data/test/test_habtm.rb +141 -141
- data/test/test_ids.rb +112 -112
- data/test/test_miscellaneous.rb +32 -32
- data/test/test_nested_attributes.rb +67 -67
- data/test/test_optimistic.rb +18 -18
- data/test/test_pagination.rb +35 -35
- data/test/test_polymorphic.rb +43 -43
- data/test/test_predicates.rb +59 -59
- data/test/test_preload.rb +102 -102
- data/test/test_santiago.rb +23 -23
- data/test/test_touch.rb +23 -23
- data/test/test_tutorial_example.rb +25 -25
- data/test/test_update.rb +102 -96
- data/test/test_validations.rb +13 -13
- metadata +7 -6
|
@@ -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
|
data/test/test_attributes.rb
CHANGED
|
@@ -1,61 +1,76 @@
|
|
|
1
|
-
require File.expand_path('../abstract_unit', __FILE__)
|
|
2
|
-
|
|
3
|
-
class TestAttributes < ActiveSupport::TestCase
|
|
4
|
-
fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
|
|
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_brackets
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
end
|
|
1
|
+
require File.expand_path('../abstract_unit', __FILE__)
|
|
2
|
+
|
|
3
|
+
class TestAttributes < ActiveSupport::TestCase
|
|
4
|
+
fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
|
|
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_brackets
|
|
22
|
+
tested_at_least_on_attribute = false
|
|
23
|
+
testing_with do
|
|
24
|
+
@first.attributes.each_pair do |attr_name, value|
|
|
25
|
+
next if value.nil?
|
|
26
|
+
assert_equal value, @first[attr_name]
|
|
27
|
+
tested_at_least_on_attribute = true
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
assert tested_at_least_on_attribute
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_brackets_primary_key
|
|
34
|
+
testing_with do
|
|
35
|
+
assert_equal(@first.id, @first[@primary_keys])
|
|
36
|
+
assert_equal(@first.id, @first[@first.class.primary_key])
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_brackets_assignment
|
|
41
|
+
testing_with do
|
|
42
|
+
@first.attributes.each_pair do |attr_name, value|
|
|
43
|
+
next if attr_name == @first.class.primary_key
|
|
44
|
+
@first[attr_name]= !value.nil? ? value * 2 : '1'
|
|
45
|
+
assert_equal !value.nil? ? value * 2 : '1', @first[attr_name]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_brackets_foreign_key_assignment
|
|
51
|
+
tarrif = tariffs(:flat)
|
|
52
|
+
product_tariff = product_tariffs(:first_flat)
|
|
53
|
+
compare_indexes(tarrif, tarrif.class.primary_key, product_tariff, [:tariff_id, :tariff_start_date])
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_has_attribute
|
|
57
|
+
tariff = tariffs(:flat)
|
|
58
|
+
assert(tariff.has_attribute?([:tariff_id, :start_date]))
|
|
59
|
+
assert(tariff.has_attribute?(['tariff_id', 'start_date']))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_has__attribute
|
|
63
|
+
tariff = tariffs(:flat)
|
|
64
|
+
assert(tariff._has_attribute?(['tariff_id', 'start_date']))
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def compare_indexes(obj1, indexes1, obj2, indexes2)
|
|
70
|
+
indexes1.length.times do |key_index|
|
|
71
|
+
key1 = indexes1[key_index]
|
|
72
|
+
key2 = indexes2[key_index]
|
|
73
|
+
assert_equal(obj1[key1], obj2[key2])
|
|
74
|
+
end
|
|
75
|
+
end
|
|
61
76
|
end
|
data/test/test_calculations.rb
CHANGED
|
@@ -1,42 +1,49 @@
|
|
|
1
|
-
require File.expand_path('../abstract_unit', __FILE__)
|
|
2
|
-
|
|
3
|
-
class TestCalculations < ActiveSupport::TestCase
|
|
4
|
-
fixtures :articles, :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants,
|
|
5
|
-
:dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users, :readings,
|
|
6
|
-
:departments, :employees, :memberships, :membership_statuses
|
|
7
|
-
|
|
8
|
-
def test_count
|
|
9
|
-
assert_equal(3, Product.includes(:product_tariffs).count)
|
|
10
|
-
assert_equal(3, Tariff.includes(:product_tariffs).count)
|
|
11
|
-
|
|
12
|
-
expected = {Date.today => 2,
|
|
13
|
-
Date.today.next => 1}
|
|
14
|
-
|
|
15
|
-
assert_equal(expected, Tariff.group(:start_date).count)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_count_distinct
|
|
19
|
-
product = products(:first_product)
|
|
20
|
-
assert_equal(1, product.product_tariffs.select('tariff_start_date').distinct.count)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
1
|
+
require File.expand_path('../abstract_unit', __FILE__)
|
|
2
|
+
|
|
3
|
+
class TestCalculations < ActiveSupport::TestCase
|
|
4
|
+
fixtures :articles, :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants,
|
|
5
|
+
:dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users, :readings,
|
|
6
|
+
:departments, :employees, :memberships, :membership_statuses, :reference_codes, :reference_types
|
|
7
|
+
|
|
8
|
+
def test_count
|
|
9
|
+
assert_equal(3, Product.includes(:product_tariffs).count)
|
|
10
|
+
assert_equal(3, Tariff.includes(:product_tariffs).count)
|
|
11
|
+
|
|
12
|
+
expected = {Date.today => 2,
|
|
13
|
+
Date.today.next => 1}
|
|
14
|
+
|
|
15
|
+
assert_equal(expected, Tariff.group(:start_date).count)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_count_distinct
|
|
19
|
+
product = products(:first_product)
|
|
20
|
+
assert_equal(1, product.product_tariffs.select('tariff_start_date').distinct.count)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_count_on_joined_relations_that_have_column_names_in_common
|
|
24
|
+
count_without_includes = ReferenceCode.count
|
|
25
|
+
count_with_includes = ReferenceCode.includes(:reference_type).references(:reference_type).count
|
|
26
|
+
assert_equal(count_without_includes, count_with_includes)
|
|
27
|
+
assert_equal(5, count_with_includes)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_count_not_distinct
|
|
31
|
+
product = products(:first_product)
|
|
32
|
+
assert_equal(2, product.product_tariffs.select('tariff_start_date').count)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_count_includes
|
|
36
|
+
count = Dorm.where("rooms.room_id = ?", 2).includes(:rooms).references(:rooms).count
|
|
37
|
+
assert_equal(1, count)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_count_includes_dup_columns
|
|
41
|
+
count = Tariff.includes(:product_tariffs).references(:product_tariffs).where("product_tariffs.tariff_id = ?", 2).count
|
|
42
|
+
assert_equal(1, count)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_average
|
|
46
|
+
average = Tariff.average(:amount)
|
|
47
|
+
assert_equal(50, average)
|
|
48
|
+
end
|
|
49
|
+
end
|
data/test/test_callbacks.rb
CHANGED
|
@@ -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
|