-
Notifications
You must be signed in to change notification settings - Fork 17
/
datamapper_test.rb
108 lines (87 loc) · 4.37 KB
/
datamapper_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
require 'test_helper'
class DataMapperTest < Test::Unit::TestCase
context "The DataMapper extension" do
setup do
setup_fixtures
end
should "be able to find the object in the database" do
object = DataMapperObject.create
assert_equal object, DataMapperObject._t_find(object.id)
end
should "return nil if the specified object cannot be found in the database" do
assert_nil DataMapperObject._t_find(989782)
end
should "be able to find multiple objects in the database" do
object = DataMapperObject.create
object_2 = DataMapperObject.create
assert_set_equal [object, object_2], DataMapperObject._t_find_bulk([object.id, object_2.id, 989823])
end
should "return an empty array if none of the specified ids could be found in the database" do
assert_set_equal [], DataMapperObject._t_find_bulk([989823, 992111, 989771])
end
should "be able to find the first associate of an object" do
object = DataMapperObject.create
has_one_target = DataMapperHasOneTarget.create(:data_mapper_object_id => object.id)
assert_equal has_one_target, DataMapperHasOneTarget._t_find_first_by_associate(:data_mapper_object_id, object.id)
end
should "return nil if unable to find the first associate of an object" do
assert_nil DataMapperHasOneTarget._t_find_first_by_associate(:data_mapper_object_id, '9999999')
end
should "be able to find all associates of an object" do
object_1 = DataMapperObject.create
object_2 = DataMapperObject.create
has_many_target_1 = DataMapperHasManyTarget.create(:data_mapper_object_id => object_1.id)
has_many_target_2 = DataMapperHasManyTarget.create(:data_mapper_object_id => object_1.id)
has_many_target_3 = DataMapperHasManyTarget.create(:data_mapper_object_id => object_2.id)
assert_set_equal [has_many_target_1, has_many_target_2], DataMapperHasManyTarget._t_find_all_by_associate(:data_mapper_object_id, object_1.id)
end
should "return an empty array able to find the associates of an object" do
assert_set_equal [], DataMapperHasManyTarget._t_find_all_by_associate(:data_mapper_object_id, '9999999999')
end
should "be able to reload an object from the database" do
object = DataMapperHasOneTarget.create
other_object = DataMapperObject.create
object.mongo_mapper_object_id = other_object.id
assert_equal other_object.id.to_s, object.mongo_mapper_object_id
object._t_reload
assert_nil object.mongo_mapper_object_id
end
should "return an empty array if there are no objects associated with the given object ids" do
object = DataMapperObject.create
assert_set_equal [], DataMapperHasManyTarget._t_find_all_ids_by_associate("data_mapper_object_id", object.id)
end
should "be able to delete a set of objects, issuing their callbacks" do
object_1 = DataMapperObject.create
object_2 = DataMapperObject.create
object_3 = DataMapperObject.create
old_count = DataMapperObject.count
DataMapperObject._t_delete([object_1.id, object_2.id, object_3.id])
assert_equal old_count - 3, DataMapperObject.count
end
should "be able to delete a setup of objects, without issuing their callbacks" do
object_1 = DataMapperObject.create
object_2 = DataMapperObject.create
object_3 = DataMapperObject.create
old_count = DataMapperObject.count
DataMapperObject._t_delete([object_1.id, object_2.id, object_3.id], false)
assert_equal old_count - 3, DataMapperObject.count
end
context "that works with t_has_many associations" do
setup do
@has_many_target_1 = DataMapperHasManyTarget.create
@has_many_target_2 = DataMapperHasManyTarget.create
@has_many_target_3 = DataMapperHasManyTarget.create
end
should "be able to get the ids of the objects associated with the given object" do
object = DataMapperObject.create
object.mongo_mapper_has_many_targets = [@has_many_target_1, @has_many_target_2, @has_many_target_3]
object.save
assert_set_equal [@has_many_target_1.id, @has_many_target_2.id, @has_many_target_3.id], DataMapperHasManyTarget._t_find_all_ids_by_associate("data_mapper_object_id", object.id)
end
end
end
private
def association
Tenacity::Association.new(:t_has_many, :data_mapper_has_many_targets, DataMapperObject)
end
end