Create an old_relation_member factory, and start using it for tests.
[rails.git] / test / models / old_relation_test.rb
1 require "test_helper"
2
3 class OldRelationTest < ActiveSupport::TestCase
4   api_fixtures
5
6   def test_relation_tags
7     old_relation_v1 = create(:old_relation, :version => 1)
8     old_relation_v2 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 2)
9     old_relation_v3 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 3)
10     old_relation_v4 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 4)
11     taglist_v3 = create_list(:old_relation_tag, 3, :old_relation => old_relation_v3)
12     taglist_v4 = create_list(:old_relation_tag, 2, :old_relation => old_relation_v4)
13
14     tags = OldRelation.find(old_relation_v1.id).old_tags.order(:k)
15     assert_equal 0, tags.count
16
17     tags = OldRelation.find(old_relation_v2.id).old_tags.order(:k)
18     assert_equal 0, tags.count
19
20     tags = OldRelation.find(old_relation_v3.id).old_tags.order(:k)
21     assert_equal taglist_v3.count, tags.count
22     taglist_v3.sort_by!(&:k).each_index do |i|
23       assert_equal taglist_v3[i].k, tags[i].k
24       assert_equal taglist_v3[i].v, tags[i].v
25     end
26
27     tags = OldRelation.find(old_relation_v4.id).old_tags.order(:k)
28     assert_equal taglist_v4.count, tags.count
29     taglist_v4.sort_by!(&:k).each_index do |i|
30       assert_equal taglist_v4[i].k, tags[i].k
31       assert_equal taglist_v4[i].v, tags[i].v
32     end
33   end
34
35   def test_relation_members
36     old_relation_v1 = create(:old_relation)
37     old_relation_v2 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 2)
38     old_relation_v3 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 3)
39     old_relation_v4 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 4)
40     member_node = create(:node)
41     member_way = create(:way)
42     member_relation = create(:relation)
43     create(:old_relation_member, :old_relation => old_relation_v1, :member => member_node, :member_role => "some node")
44     create(:old_relation_member, :old_relation => old_relation_v2, :member => member_node, :member_role => "some changed node")
45     create(:old_relation_member, :old_relation => old_relation_v3, :member => member_node, :member_role => "some changed node")
46     create(:old_relation_member, :old_relation => old_relation_v3, :member => member_relation, :member_role => "some relation")
47     create(:old_relation_member, :old_relation => old_relation_v4, :member => member_node, :member_role => "some node")
48     create(:old_relation_member, :old_relation => old_relation_v4, :member => member_way, :member_role => "some way")
49     create(:old_relation_member, :old_relation => old_relation_v4, :member => member_relation, :member_role => "some relation")
50
51     members = OldRelation.find(old_relation_v1.id).relation_members
52     assert_equal 1, members.count
53     assert_equal "some node", members[0].member_role
54     assert_equal "Node", members[0].member_type
55     assert_equal member_node.id, members[0].member_id
56
57     members = OldRelation.find(old_relation_v2.id).relation_members
58     assert_equal 1, members.count
59     assert_equal "some changed node", members[0].member_role
60     assert_equal "Node", members[0].member_type
61     assert_equal member_node.id, members[0].member_id
62
63     members = OldRelation.find(old_relation_v3.id).relation_members
64     assert_equal 2, members.count
65     assert_equal "some changed node", members[0].member_role
66     assert_equal "Node", members[0].member_type
67     assert_equal member_node.id, members[0].member_id
68     assert_equal "some relation", members[1].member_role
69     assert_equal "Relation", members[1].member_type
70     assert_equal member_relation.id, members[1].member_id
71
72     members = OldRelation.find(old_relation_v4.id).relation_members
73     assert_equal 3, members.count
74     assert_equal "some node", members[0].member_role
75     assert_equal "Node", members[0].member_type
76     assert_equal member_node.id, members[0].member_id
77     assert_equal "some way", members[1].member_role
78     assert_equal "Way", members[1].member_type
79     assert_equal member_way.id, members[1].member_id
80     assert_equal "some relation", members[2].member_role
81     assert_equal "Relation", members[2].member_type
82     assert_equal member_relation.id, members[2].member_id
83   end
84
85   def test_relations
86     old_relation_v1 = create(:old_relation)
87     old_relation_v2 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 2)
88     old_relation_v3 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 3)
89     old_relation_v4 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 4)
90     member_node = create(:node)
91     member_way = create(:way)
92     member_relation = create(:relation)
93     create(:old_relation_member, :old_relation => old_relation_v1, :member => member_node, :member_role => "some node")
94     create(:old_relation_member, :old_relation => old_relation_v2, :member => member_node, :member_role => "some changed node")
95     create(:old_relation_member, :old_relation => old_relation_v3, :member => member_node, :member_role => "some changed node")
96     create(:old_relation_member, :old_relation => old_relation_v3, :member => member_relation, :member_role => "some relation")
97     create(:old_relation_member, :old_relation => old_relation_v4, :member => member_node, :member_role => "some node")
98     create(:old_relation_member, :old_relation => old_relation_v4, :member => member_way, :member_role => "some way")
99     create(:old_relation_member, :old_relation => old_relation_v4, :member => member_relation, :member_role => "some relation")
100
101     members = OldRelation.find(old_relation_v1.id).members
102     assert_equal 1, members.count
103     assert_equal ["Node", member_node.id, "some node"], members[0]
104
105     members = OldRelation.find(old_relation_v2.id).members
106     assert_equal 1, members.count
107     assert_equal ["Node", member_node.id, "some changed node"], members[0]
108
109     members = OldRelation.find(old_relation_v3.id).members
110     assert_equal 2, members.count
111     assert_equal ["Node", member_node.id, "some changed node"], members[0]
112     assert_equal ["Relation", member_relation.id, "some relation"], members[1]
113
114     members = OldRelation.find(old_relation_v4.id).members
115     assert_equal 3, members.count
116     assert_equal ["Node", member_node.id, "some node"], members[0]
117     assert_equal ["Way", member_way.id, "some way"], members[1]
118     assert_equal ["Relation", member_relation.id, "some relation"], members[2]
119   end
120
121   def test_tags
122     old_relation_v1 = create(:old_relation, :version => 1)
123     old_relation_v2 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 2)
124     old_relation_v3 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 3)
125     old_relation_v4 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 4)
126     taglist_v3 = create_list(:old_relation_tag, 3, :old_relation => old_relation_v3)
127     taglist_v4 = create_list(:old_relation_tag, 2, :old_relation => old_relation_v4)
128
129     tags = OldRelation.find(old_relation_v1.id).tags
130     assert_equal 0, tags.size
131
132     tags = OldRelation.find(old_relation_v2.id).tags
133     assert_equal 0, tags.size
134
135     tags = OldRelation.find(old_relation_v3.id).tags
136     assert_equal taglist_v3.count, tags.count
137     taglist_v3.each do |tag|
138       assert_equal tag.v, tags[tag.k]
139     end
140
141     tags = OldRelation.find(old_relation_v4.id).tags
142     assert_equal taglist_v4.count, tags.count
143     taglist_v4.each do |tag|
144       assert_equal tag.v, tags[tag.k]
145     end
146   end
147 end