@@ -57,6 +57,50 @@ func TestGroupNameFilter2(t *testing.T) {
5757 assert .Equal (t , 9 , len (systems )) // 2 systems with `group2`, 6 with `group1` in test_data
5858}
5959
60+ func TestGroupIDFilter (t * testing.T ) {
61+ utils .SkipWithoutDB (t )
62+ database .Configure ()
63+
64+ c , _ := gin .CreateTestContext (httptest .NewRecorder ())
65+ c .Request , _ = http .NewRequest ("GET" , "/?filter[group_id]=inventory-group-2" , nil )
66+
67+ filters , err := ParseAllFilters (c , ListOpts {})
68+ assert .Nil (t , err )
69+
70+ var systems []SystemsID
71+ groups := map [string ]string {
72+ utils .KeyGrouped : `{"[{\"id\":\"inventory-group-1\"}]","[{\"id\":\"inventory-group-2\"}]"}` ,
73+ }
74+ tx := database .Systems (database .DB , 1 , groups )
75+ tx , _ = ApplyInventoryFilter (filters , tx , "si.inventory_id" )
76+ tx .Scan (& systems )
77+
78+ assert .Equal (t , 2 , len (systems ))
79+ assert .Equal (t , "00000000-0000-0000-0000-000000000007" , systems [0 ].ID )
80+ assert .Equal (t , "00000000-0000-0000-0000-000000000008" , systems [1 ].ID )
81+ }
82+
83+ func TestGroupIDFilterMultiple (t * testing.T ) {
84+ utils .SkipWithoutDB (t )
85+ database .Configure ()
86+
87+ c , _ := gin .CreateTestContext (httptest .NewRecorder ())
88+ c .Request , _ = http .NewRequest ("GET" , "/?filter[group_id]=inventory-group-2,inventory-group-1" , nil )
89+
90+ filters , err := ParseAllFilters (c , ListOpts {})
91+ assert .Nil (t , err )
92+
93+ var systems []SystemsID
94+ groups := map [string ]string {
95+ utils .KeyGrouped : `{"[{\"id\":\"inventory-group-1\"}]","[{\"id\":\"inventory-group-2\"}]"}` ,
96+ }
97+ tx := database .Systems (database .DB , 1 , groups )
98+ tx , _ = ApplyInventoryFilter (filters , tx , "si.inventory_id" )
99+ tx .Scan (& systems )
100+
101+ assert .Equal (t , 9 , len (systems ))
102+ }
103+
60104func TestApplySearchEmpty (t * testing.T ) {
61105 var baseTx gorm.DB
62106
0 commit comments