Esempio n. 1
0
 def test_names_to_path_field(self):
     query = Query(None)
     query.add_annotation(Value(True), "value")
     path, final_field, targets, names = query.names_to_path(["value"],
                                                             opts=None)
     self.assertEqual(path, [])
     self.assertIsInstance(final_field, BooleanField)
     self.assertEqual(len(targets), 1)
     self.assertIsInstance(targets[0], BooleanField)
     self.assertEqual(names, [])
Esempio n. 2
0
 def test_q_annotation(self):
     query = Query(None)
     check = ExpressionWrapper(
         Q(RawSQL("%s IS NULL", (None, ), BooleanField()))
         | Q(Exists(Item.objects.all())),
         BooleanField(),
     )
     query.add_annotation(check, "_check")
     result = query.get_compiler(using=DEFAULT_DB_ALIAS).execute_sql(SINGLE)
     self.assertEqual(result[0], 1)
Esempio n. 3
0
 def test_rawsql_annotation(self):
     query = Query(None)
     sql = "%s IS NULL"
     # Wrap with a CASE WHEN expression if a database backend (e.g. Oracle)
     # doesn't support boolean expression in SELECT list.
     if not connection.features.supports_boolean_expr_in_select_clause:
         sql = f"CASE WHEN {sql} THEN 1 ELSE 0 END"
     query.add_annotation(RawSQL(sql, (None, ), BooleanField()), "_check")
     result = query.get_compiler(using=DEFAULT_DB_ALIAS).execute_sql(SINGLE)
     self.assertEqual(result[0], 1)
Esempio n. 4
0
 def test_subquery_annotation(self):
     query = Query(None)
     query.add_annotation(Exists(Item.objects.all()), "_check")
     result = query.get_compiler(using=DEFAULT_DB_ALIAS).execute_sql(SINGLE)
     self.assertEqual(result[0], 0)