@@ -6,6 +6,74 @@ module PlaceOS::Api
66
77 describe " index" , tags: " search" do
88 Spec .test_base_index(klass: Model ::Zone , controller_klass: Zones )
9+
10+ it " filters by single parent_id" do
11+ parent = Model ::Generator .zone.save!
12+ child1 = Model ::Generator .zone
13+ child1.parent_id = parent.id
14+ child1.save!
15+ child2 = Model ::Generator .zone
16+ child2.parent_id = parent.id
17+ child2.save!
18+
19+ sleep 1 .second
20+ refresh_elastic(Model ::Zone .table_name)
21+
22+ params = HTTP ::Params .encode({" parent_id" => parent.id.as(String )})
23+ path = " #{ Zones .base_route} ?#{ params } "
24+ result = client.get(path, headers: Spec ::Authentication .headers)
25+
26+ result.success?.should be_true
27+ zones = Array (Hash (String , JSON ::Any )).from_json(result.body)
28+ zone_ids = zones.map(& .[" id" ].as_s)
29+ zone_ids.should contain(child1.id)
30+ zone_ids.should contain(child2.id)
31+
32+ parent.destroy
33+ child1.destroy
34+ child2.destroy
35+ end
36+
37+ it " filters by multiple parent_ids (comma-separated)" do
38+ parent1 = Model ::Generator .zone.save!
39+ parent2 = Model ::Generator .zone.save!
40+ parent3 = Model ::Generator .zone.save!
41+
42+ child1 = Model ::Generator .zone
43+ child1.parent_id = parent1.id
44+ child1.save!
45+
46+ child2 = Model ::Generator .zone
47+ child2.parent_id = parent2.id
48+ child2.save!
49+
50+ child3 = Model ::Generator .zone
51+ child3.parent_id = parent3.id
52+ child3.save!
53+
54+ sleep 1 .second
55+ refresh_elastic(Model ::Zone .table_name)
56+
57+ # Query for children of parent1 and parent2 (should not include child3)
58+ parent_ids = " #{ parent1.id } ,#{ parent2.id } "
59+ params = HTTP ::Params .encode({" parent_id" => parent_ids})
60+ path = " #{ Zones .base_route} ?#{ params } "
61+ result = client.get(path, headers: Spec ::Authentication .headers)
62+
63+ result.success?.should be_true
64+ zones = Array (Hash (String , JSON ::Any )).from_json(result.body)
65+ zone_ids = zones.map(& .[" id" ].as_s)
66+ zone_ids.should contain(child1.id)
67+ zone_ids.should contain(child2.id)
68+ zone_ids.should_not contain(child3.id)
69+
70+ parent1.destroy
71+ parent2.destroy
72+ parent3.destroy
73+ child1.destroy
74+ child2.destroy
75+ child3.destroy
76+ end
977 end
1078
1179 describe " tags" , tags: " search" do
0 commit comments