@@ -175,5 +175,63 @@ def test_scope_columns_method
175175 assert_equal [ :user_id ] , ScopedItem . _ct . scope_columns
176176 assert_equal [ :user_id , :group_id ] , MultiScopedItem . _ct . scope_columns
177177 end
178- end
179178
179+ def test_scope_values_from_instance_with_nil_value_symbol_scope
180+ instance = ScopedItem . new ( user_id : nil )
181+ scope_values = instance . _ct . scope_values_from_instance ( instance )
182+ assert_equal ( { user_id : nil } , scope_values )
183+ end
184+
185+ def test_scope_values_from_instance_with_nil_value_array_scope
186+ instance = MultiScopedItem . new ( user_id : nil , group_id : nil )
187+ scope_values = instance . _ct . scope_values_from_instance ( instance )
188+ assert_equal ( { user_id : nil , group_id : nil } , scope_values )
189+ end
190+
191+ def test_ordering_with_nil_scope_values_symbol_scope
192+ root1 = ScopedItem . create! ( name : 'root1' , user_id : nil )
193+ root2 = ScopedItem . create! ( name : 'root2' , user_id : 1 )
194+ root3 = ScopedItem . create! ( name : 'root3' , user_id : nil )
195+
196+ assert_equal 0 , root1 . order_value
197+ assert_equal 1 , root3 . order_value
198+ assert_equal 0 , root2 . order_value
199+ end
200+
201+ def test_ordering_with_nil_scope_values_array_scope
202+ root1 = MultiScopedItem . create! ( name : 'root1' , user_id : nil , group_id : nil )
203+ root2 = MultiScopedItem . create! ( name : 'root2' , user_id : 1 , group_id : 1 )
204+ root3 = MultiScopedItem . create! ( name : 'root3' , user_id : nil , group_id : nil )
205+
206+ assert_equal 0 , root1 . order_value
207+ assert_equal 1 , root3 . order_value
208+ assert_equal 0 , root2 . order_value
209+ end
210+
211+ def test_build_scope_where_clause_with_nil_value_pg
212+ support = ScopedItem . _ct
213+ scope_conditions = { user_id : nil , group_id : 789 }
214+ clause = support . build_scope_where_clause ( scope_conditions )
215+
216+ assert_includes clause , 'IS NULL'
217+ assert_includes clause , '789'
218+ end
219+
220+ def test_build_scope_where_clause_with_nil_value_mysql
221+ support = SecondaryTag . _ct
222+ scope_conditions = { user_id : nil , group_id : 123 }
223+ clause = support . build_scope_where_clause ( scope_conditions )
224+
225+ assert_includes clause , 'IS NULL'
226+ assert_includes clause , '123'
227+ end
228+
229+ def test_build_scope_where_clause_with_nil_value_sqlite
230+ support = MemoryTag . _ct
231+ scope_conditions = { user_id : nil , group_id : 456 }
232+ clause = support . build_scope_where_clause ( scope_conditions )
233+
234+ assert_includes clause , 'IS NULL'
235+ assert_includes clause , '456'
236+ end
237+ end
0 commit comments