composite_primary_keys 7.0.15 → 7.0.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.rdoc +4 -0
- data/lib/composite_primary_keys.rb +5 -0
- data/lib/composite_primary_keys/arel/visitors/to_sql.rb +20 -0
- data/lib/composite_primary_keys/associations/join_dependency/join_association.rb +22 -22
- data/lib/composite_primary_keys/associations/preloader/belongs_to.rb +19 -19
- data/lib/composite_primary_keys/composite_predicates.rb +50 -50
- data/lib/composite_primary_keys/composite_relation.rb +48 -48
- data/lib/composite_primary_keys/connection_adapters/postgresql_adapter.rb +60 -46
- data/lib/composite_primary_keys/fixtures.rb +22 -22
- data/lib/composite_primary_keys/locking/optimistic.rb +55 -55
- data/lib/composite_primary_keys/relation/query_methods.rb +40 -40
- data/lib/composite_primary_keys/version.rb +1 -1
- data/tasks/databases/oracle.rake +25 -25
- data/test/connections/databases.ci.yml +15 -15
- data/test/connections/native_oracle/connection.rb +11 -11
- data/test/connections/native_oracle_enhanced/connection.rb +16 -16
- data/test/fixtures/comment.rb +7 -7
- data/test/fixtures/db_definitions/db2-create-tables.sql +126 -126
- data/test/fixtures/db_definitions/db2-drop-tables.sql +18 -18
- data/test/fixtures/db_definitions/oracle.drop.sql +45 -45
- data/test/fixtures/db_definitions/oracle.sql +223 -223
- data/test/fixtures/dorm.rb +2 -2
- data/test/fixtures/membership.rb +6 -6
- data/test/fixtures/membership_statuses.yml +16 -16
- data/test/fixtures/memberships.yml +10 -10
- data/test/fixtures/product_tariffs.yml +14 -14
- data/test/fixtures/reference_code.rb +7 -7
- data/test/fixtures/restaurants_suburb.rb +2 -2
- data/test/fixtures/suburb.rb +5 -5
- data/test/fixtures/topic.rb +5 -5
- data/test/fixtures/topic_source.rb +6 -6
- data/test/fixtures/topic_sources.yml +3 -3
- data/test/fixtures/topics.yml +8 -8
- data/test/fixtures/users.yml +10 -10
- data/test/test_attribute_methods.rb +63 -63
- data/test/test_calculations.rb +42 -42
- data/test/test_callbacks.rb +99 -99
- data/test/test_delete_all.rb +5 -0
- data/test/test_dumpable.rb +15 -15
- data/test/test_nested_attributes.rb +124 -124
- data/test/test_optimistic.rb +18 -18
- data/test/test_predicates.rb +40 -40
- data/test/test_santiago.rb +23 -23
- data/test/test_suite.rb +34 -34
- data/test/test_touch.rb +23 -23
- data/test/test_update.rb +71 -71
- metadata +4 -3
data/test/fixtures/dorm.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
class Dorm < ActiveRecord::Base
|
2
|
-
has_many :rooms, -> {includes(:room_attributes)}, :primary_key => [:id]
|
1
|
+
class Dorm < ActiveRecord::Base
|
2
|
+
has_many :rooms, -> {includes(:room_attributes)}, :primary_key => [:id]
|
3
3
|
end
|
data/test/fixtures/membership.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
class Membership < ActiveRecord::Base
|
2
|
-
self.primary_keys = :user_id, :group_id
|
3
|
-
belongs_to :user
|
4
|
-
belongs_to :group
|
5
|
-
has_many :statuses, :class_name => 'MembershipStatus', :foreign_key => [:user_id, :group_id]
|
6
|
-
has_many :readings, :primary_key => :user_id, :foreign_key => :user_id
|
1
|
+
class Membership < ActiveRecord::Base
|
2
|
+
self.primary_keys = :user_id, :group_id
|
3
|
+
belongs_to :user
|
4
|
+
belongs_to :group
|
5
|
+
has_many :statuses, :class_name => 'MembershipStatus', :foreign_key => [:user_id, :group_id]
|
6
|
+
has_many :readings, :primary_key => :user_id, :foreign_key => :user_id
|
7
7
|
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
santiago-cpk:
|
2
|
-
id: 1
|
3
|
-
user_id: 1
|
4
|
-
group_id: 1
|
5
|
-
status: Active
|
6
|
-
|
7
|
-
drnic-cpk:
|
8
|
-
id: 2
|
9
|
-
user_id: 2
|
10
|
-
group_id: 1
|
11
|
-
status: Owner
|
12
|
-
|
13
|
-
cfis-cpk:
|
14
|
-
id: 3
|
15
|
-
user_id: 3
|
16
|
-
group_id: 2
|
1
|
+
santiago-cpk:
|
2
|
+
id: 1
|
3
|
+
user_id: 1
|
4
|
+
group_id: 1
|
5
|
+
status: Active
|
6
|
+
|
7
|
+
drnic-cpk:
|
8
|
+
id: 2
|
9
|
+
user_id: 2
|
10
|
+
group_id: 1
|
11
|
+
status: Owner
|
12
|
+
|
13
|
+
cfis-cpk:
|
14
|
+
id: 3
|
15
|
+
user_id: 3
|
16
|
+
group_id: 2
|
17
17
|
status: Active
|
@@ -1,11 +1,11 @@
|
|
1
|
-
santiago-cpk:
|
2
|
-
user_id: 1
|
3
|
-
group_id: 1
|
4
|
-
|
5
|
-
drnic-cpk:
|
6
|
-
user_id: 2
|
7
|
-
group_id: 1
|
8
|
-
|
9
|
-
cfis-cpk:
|
10
|
-
user_id: 3
|
1
|
+
santiago-cpk:
|
2
|
+
user_id: 1
|
3
|
+
group_id: 1
|
4
|
+
|
5
|
+
drnic-cpk:
|
6
|
+
user_id: 2
|
7
|
+
group_id: 1
|
8
|
+
|
9
|
+
cfis-cpk:
|
10
|
+
user_id: 3
|
11
11
|
group_id: 2
|
@@ -1,14 +1,14 @@
|
|
1
|
-
first_flat:
|
2
|
-
product_id: 1
|
3
|
-
tariff_id: 1
|
4
|
-
tariff_start_date: <%= Date.today.to_s(:db) %>
|
5
|
-
|
6
|
-
first_free:
|
7
|
-
product_id: 1
|
8
|
-
tariff_id: 2
|
9
|
-
tariff_start_date: <%= Date.today.to_s(:db) %>
|
10
|
-
|
11
|
-
second_free:
|
12
|
-
product_id: 2
|
13
|
-
tariff_id: 2
|
14
|
-
tariff_start_date: <%= Date.today.to_s(:db) %>
|
1
|
+
first_flat:
|
2
|
+
product_id: 1
|
3
|
+
tariff_id: 1
|
4
|
+
tariff_start_date: <%= Date.today.to_s(:db) %>
|
5
|
+
|
6
|
+
first_free:
|
7
|
+
product_id: 1
|
8
|
+
tariff_id: 2
|
9
|
+
tariff_start_date: <%= Date.today.to_s(:db) %>
|
10
|
+
|
11
|
+
second_free:
|
12
|
+
product_id: 2
|
13
|
+
tariff_id: 2
|
14
|
+
tariff_start_date: <%= Date.today.to_s(:db) %>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
class ReferenceCode < ActiveRecord::Base
|
2
|
-
self.primary_keys = :reference_type_id, :reference_code
|
3
|
-
|
4
|
-
belongs_to :reference_type, :foreign_key => "reference_type_id"
|
5
|
-
|
6
|
-
validates_presence_of :reference_code, :code_label, :abbreviation
|
7
|
-
end
|
1
|
+
class ReferenceCode < ActiveRecord::Base
|
2
|
+
self.primary_keys = :reference_type_id, :reference_code
|
3
|
+
|
4
|
+
belongs_to :reference_type, :foreign_key => "reference_type_id"
|
5
|
+
|
6
|
+
validates_presence_of :reference_code, :code_label, :abbreviation
|
7
|
+
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
class RestaurantsSuburb < ActiveRecord::Base
|
2
|
-
|
1
|
+
class RestaurantsSuburb < ActiveRecord::Base
|
2
|
+
|
3
3
|
end
|
data/test/fixtures/suburb.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
class Suburb < ActiveRecord::Base
|
2
|
-
self.primary_keys = :city_id, :suburb_id
|
3
|
-
has_many :streets, :foreign_key => [:city_id, :suburb_id]
|
4
|
-
has_many :first_streets, -> {where("streets.name = 'First Street'")},
|
5
|
-
:foreign_key => [:city_id, :suburb_id], :class_name => 'Street'
|
1
|
+
class Suburb < ActiveRecord::Base
|
2
|
+
self.primary_keys = :city_id, :suburb_id
|
3
|
+
has_many :streets, :foreign_key => [:city_id, :suburb_id]
|
4
|
+
has_many :first_streets, -> {where("streets.name = 'First Street'")},
|
5
|
+
:foreign_key => [:city_id, :suburb_id], :class_name => 'Street'
|
6
6
|
end
|
data/test/fixtures/topic.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
class Topic < ActiveRecord::Base
|
2
|
-
has_many :topic_sources, dependent: :destroy
|
3
|
-
accepts_nested_attributes_for :topic_sources
|
4
|
-
|
5
|
-
validates :name, :feed_size, presence: true
|
1
|
+
class Topic < ActiveRecord::Base
|
2
|
+
has_many :topic_sources, dependent: :destroy
|
3
|
+
accepts_nested_attributes_for :topic_sources
|
4
|
+
|
5
|
+
validates :name, :feed_size, presence: true
|
6
6
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
class TopicSource < ActiveRecord::Base
|
2
|
-
self.primary_keys = :topic_id, :platform
|
3
|
-
|
4
|
-
belongs_to :topic, inverse_of: :topic_sources
|
5
|
-
|
6
|
-
validates :platform, presence: true
|
1
|
+
class TopicSource < ActiveRecord::Base
|
2
|
+
self.primary_keys = :topic_id, :platform
|
3
|
+
|
4
|
+
belongs_to :topic, inverse_of: :topic_sources
|
5
|
+
|
6
|
+
validates :platform, presence: true
|
7
7
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
music_source:
|
2
|
-
topic_id: 1
|
3
|
-
platform: 'twitter'
|
1
|
+
music_source:
|
2
|
+
topic_id: 1
|
3
|
+
platform: 'twitter'
|
4
4
|
keywords: 'classical'
|
data/test/fixtures/topics.yml
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
music:
|
2
|
-
id: 1
|
3
|
-
name: Guitar
|
4
|
-
feed_size: 500
|
5
|
-
|
6
|
-
iphone:
|
7
|
-
id: 2
|
8
|
-
name: iPhone
|
1
|
+
music:
|
2
|
+
id: 1
|
3
|
+
name: Guitar
|
4
|
+
feed_size: 500
|
5
|
+
|
6
|
+
iphone:
|
7
|
+
id: 2
|
8
|
+
name: iPhone
|
9
9
|
feed_size: 500
|
data/test/fixtures/users.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
santiago:
|
2
|
-
id: 1
|
3
|
-
name: Santiago
|
4
|
-
|
5
|
-
drnic:
|
6
|
-
id: 2
|
7
|
-
name: Dr Nic
|
8
|
-
|
9
|
-
cfis:
|
10
|
-
id: 3
|
1
|
+
santiago:
|
2
|
+
id: 1
|
3
|
+
name: Santiago
|
4
|
+
|
5
|
+
drnic:
|
6
|
+
id: 2
|
7
|
+
name: Dr Nic
|
8
|
+
|
9
|
+
cfis:
|
10
|
+
id: 3
|
11
11
|
name: cfis
|
@@ -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_calculations.rb
CHANGED
@@ -1,42 +1,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
|
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_not_distinct
|
24
|
-
product = products(:first_product)
|
25
|
-
assert_equal(2, product.product_tariffs.select('tariff_start_date').count)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_count_includes
|
29
|
-
count = Dorm.where("rooms.room_id = ?", 2).includes(:rooms).references(:rooms).count
|
30
|
-
assert_equal(1, count)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_count_includes_dup_columns
|
34
|
-
count = Tariff.includes(:product_tariffs).references(:product_tariffs).where("product_tariffs.tariff_id = ?", 2).count
|
35
|
-
assert_equal(1, count)
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_average
|
39
|
-
average = Tariff.average(:amount)
|
40
|
-
assert_equal(50, average)
|
41
|
-
end
|
42
|
-
end
|
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 test_count_not_distinct
|
24
|
+
product = products(:first_product)
|
25
|
+
assert_equal(2, product.product_tariffs.select('tariff_start_date').count)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_count_includes
|
29
|
+
count = Dorm.where("rooms.room_id = ?", 2).includes(:rooms).references(:rooms).count
|
30
|
+
assert_equal(1, count)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_count_includes_dup_columns
|
34
|
+
count = Tariff.includes(:product_tariffs).references(:product_tariffs).where("product_tariffs.tariff_id = ?", 2).count
|
35
|
+
assert_equal(1, count)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_average
|
39
|
+
average = Tariff.average(:amount)
|
40
|
+
assert_equal(50, average)
|
41
|
+
end
|
42
|
+
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
|