@@ -12,6 +12,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
12
12
supports_json_field_contains = False
13
13
# BSON Date type doesn't support microsecond precision.
14
14
supports_microsecond_precision = False
15
+ supports_temporal_subtraction = True
15
16
# MongoDB stores datetimes in UTC.
16
17
supports_timezones = False
17
18
# Not implemented: https://github.com/mongodb-labs/django-mongodb/issues/7
@@ -34,6 +35,8 @@ class DatabaseFeatures(BaseDatabaseFeatures):
34
35
"db_functions.tests.FunctionTests.test_nested_function_ordering" ,
35
36
"db_functions.text.test_length.LengthTests.test_ordering" ,
36
37
"db_functions.text.test_strindex.StrIndexTests.test_order_by" ,
38
+ "expressions.tests.BasicExpressionsTests.test_order_by_exists" ,
39
+ "expressions.tests.BasicExpressionsTests.test_order_by_multiline_sql" ,
37
40
"expressions_case.tests.CaseExpressionTests.test_order_by_conditional_explicit" ,
38
41
"lookup.tests.LookupQueryingTests.test_lookup_in_order_by" ,
39
42
"ordering.tests.OrderingTests.test_default_ordering_by_f_expression" ,
@@ -66,7 +69,25 @@ class DatabaseFeatures(BaseDatabaseFeatures):
66
69
"model_fields.test_jsonfield.TestQuerying.test_order_grouping_custom_decoder" ,
67
70
"model_fields.test_jsonfield.TestQuerying.test_ordering_by_transform" ,
68
71
"model_fields.test_jsonfield.TestQuerying.test_ordering_grouping_by_key_transform" ,
72
+ # DatabaseOperations.convert_decimalfield_value() crash:
73
+ # 'int' object has no attribute 'to_decimal'.
74
+ "expressions.tests.ExpressionsNumericTests.test_filter_decimal_expression" ,
75
+ "expressions.tests.ValueTests.test_output_field_decimalfield" ,
76
+ # pymongo.errors.OperationFailure: $multiply only supports numeric
77
+ # types, not date. (should be wrapped in DatabaseError).
78
+ "expressions.tests.FTimeDeltaTests.test_invalid_operator" ,
79
+ # InvalidDocument: cannot encode object of type: <class 'datetime.time'>
80
+ "expressions.tests.FTimeDeltaTests.test_time_subtraction" ,
81
+ # crash in DatabaseOperations.convert_durationfield_value():
82
+ # unsupported type for timedelta milliseconds component: Decimal128
83
+ "expressions.tests.FTimeDeltaTests.test_durationfield_multiply_divide" ,
84
+ # 'Ref' object has no attribute 'as_mql'.
85
+ "expressions.tests.BasicExpressionsTests.test_aggregate_subquery_annotation" ,
86
+ # AttributeError: pattern_ops
87
+ "expressions.tests.BasicExpressionsTests.test_annotation_with_nested_outerref" ,
88
+ "expressions.tests.BasicExpressionsTests.test_nested_outerref_with_function" ,
69
89
}
90
+
70
91
# $bitAnd, #bitOr, and $bitXor are new in MongoDB 6.3.
71
92
_django_test_expected_failures_bitwise = {
72
93
"expressions.tests.ExpressionOperatorTests.test_lefthand_bitwise_and" ,
@@ -89,6 +110,10 @@ def django_test_expected_failures(self):
89
110
"Insert expressions aren't supported." : {
90
111
"bulk_create.tests.BulkCreateTests.test_bulk_insert_now" ,
91
112
"bulk_create.tests.BulkCreateTests.test_bulk_insert_expressions" ,
113
+ "expressions.tests.BasicExpressionsTests.test_new_object_create" ,
114
+ "expressions.tests.BasicExpressionsTests.test_new_object_save" ,
115
+ "expressions.tests.BasicExpressionsTests.test_object_create_with_aggregate" ,
116
+ "expressions.tests.BasicExpressionsTests.test_object_create_with_f_expression_in_subquery" ,
92
117
# PI()
93
118
"db_functions.math.test_round.RoundTests.test_decimal_with_precision" ,
94
119
"db_functions.math.test_round.RoundTests.test_float_with_precision" ,
@@ -113,6 +138,21 @@ def django_test_expected_failures(self):
113
138
"db_functions.text.test_replace.ReplaceTests.test_update" ,
114
139
"db_functions.text.test_substr.SubstrTests.test_basic" ,
115
140
"db_functions.text.test_upper.UpperTests.test_basic" ,
141
+ "expressions.tests.BasicExpressionsTests.test_arithmetic" ,
142
+ "expressions.tests.BasicExpressionsTests.test_filter_with_join" ,
143
+ "expressions.tests.BasicExpressionsTests.test_object_update" ,
144
+ "expressions.tests.BasicExpressionsTests.test_object_update_unsaved_objects" ,
145
+ "expressions.tests.BasicExpressionsTests.test_order_of_operations" ,
146
+ "expressions.tests.BasicExpressionsTests.test_parenthesis_priority" ,
147
+ "expressions.tests.BasicExpressionsTests.test_update" ,
148
+ "expressions.tests.BasicExpressionsTests.test_update_with_fk" ,
149
+ "expressions.tests.BasicExpressionsTests.test_update_with_none" ,
150
+ "expressions.tests.ExpressionsNumericTests.test_decimal_expression" ,
151
+ "expressions.tests.ExpressionsNumericTests.test_increment_value" ,
152
+ "expressions.tests.FTimeDeltaTests.test_delta_update" ,
153
+ "expressions.tests.FTimeDeltaTests.test_negative_timedelta_update" ,
154
+ "expressions.tests.ValueTests.test_update_TimeField_using_Value" ,
155
+ "expressions.tests.ValueTests.test_update_UUIDField_using_Value" ,
116
156
"expressions_case.tests.CaseDocumentationExamples.test_conditional_update_example" ,
117
157
"expressions_case.tests.CaseExpressionTests.test_update" ,
118
158
"expressions_case.tests.CaseExpressionTests.test_update_big_integer" ,
@@ -211,6 +251,8 @@ def django_test_expected_failures(self):
211
251
"expressions_case.tests.CaseExpressionTests.test_aggregate_with_expression_as_value" ,
212
252
"expressions_case.tests.CaseExpressionTests.test_aggregation_empty_cases" ,
213
253
"lookup.tests.LookupQueryingTests.test_aggregate_combined_lookup" ,
254
+ "expressions.test_queryset_values.ValuesExpressionsTests.test_chained_values_with_expression" ,
255
+ "expressions.test_queryset_values.ValuesExpressionsTests.test_values_expression_group_by" ,
214
256
"from_db_value.tests.FromDBValueTest.test_aggregation" ,
215
257
"timezones.tests.LegacyDatabaseTests.test_query_aggregation" ,
216
258
"timezones.tests.NewDatabaseTests.test_query_aggregation" ,
@@ -227,6 +269,7 @@ def django_test_expected_failures(self):
227
269
"annotations.tests.NonAggregateAnnotationTestCase.test_full_expression_annotation_with_aggregation" ,
228
270
"annotations.tests.NonAggregateAnnotationTestCase.test_grouping_by_q_expression_annotation" ,
229
271
"annotations.tests.NonAggregateAnnotationTestCase.test_q_expression_annotation_with_aggregation" ,
272
+ "expressions.tests.FieldTransformTests.test_month_aggregation" ,
230
273
"expressions_case.tests.CaseDocumentationExamples.test_conditional_aggregation_example" ,
231
274
# Func not implemented.
232
275
"annotations.tests.NonAggregateAnnotationTestCase.test_custom_functions" ,
@@ -245,6 +288,17 @@ def django_test_expected_failures(self):
245
288
},
246
289
"Exists is not supported on MongoDB." : {
247
290
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_exists_none_query" ,
291
+ "expressions.tests.BasicExpressionsTests.test_annotation_with_deeply_nested_outerref" ,
292
+ "expressions.tests.BasicExpressionsTests.test_boolean_expression_combined" ,
293
+ "expressions.tests.BasicExpressionsTests.test_boolean_expression_combined_with_empty_Q" ,
294
+ "expressions.tests.BasicExpressionsTests.test_boolean_expression_in_Q" ,
295
+ "expressions.tests.BasicExpressionsTests.test_case_in_filter_if_boolean_output_field" ,
296
+ "expressions.tests.BasicExpressionsTests.test_exists_in_filter" ,
297
+ "expressions.tests.BasicExpressionsTests.test_subquery" ,
298
+ "expressions.tests.ExistsTests.test_filter_by_empty_exists" ,
299
+ "expressions.tests.ExistsTests.test_negated_empty_exists" ,
300
+ "expressions.tests.ExistsTests.test_optimizations" ,
301
+ "expressions.tests.ExistsTests.test_select_negated_empty_exists" ,
248
302
"lookup.tests.LookupTests.test_exact_exists" ,
249
303
"lookup.tests.LookupTests.test_nested_outerref_lhs" ,
250
304
"lookup.tests.LookupQueryingTests.test_filter_exists_lhs" ,
@@ -253,6 +307,19 @@ def django_test_expected_failures(self):
253
307
"annotations.tests.NonAggregateAnnotationTestCase.test_empty_queryset_annotation" ,
254
308
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_extract_outerref" ,
255
309
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_trunc_subquery_with_parameters" ,
310
+ "expressions.tests.BasicExpressionsTests.test_annotation_with_outerref" ,
311
+ "expressions.tests.BasicExpressionsTests.test_annotations_within_subquery" ,
312
+ "expressions.tests.BasicExpressionsTests.test_in_subquery" ,
313
+ "expressions.tests.BasicExpressionsTests.test_nested_subquery" ,
314
+ "expressions.tests.BasicExpressionsTests.test_nested_subquery_join_outer_ref" ,
315
+ "expressions.tests.BasicExpressionsTests.test_nested_subquery_outer_ref_2" ,
316
+ "expressions.tests.BasicExpressionsTests.test_nested_subquery_outer_ref_with_autofield" ,
317
+ "expressions.tests.BasicExpressionsTests.test_subquery_filter_by_aggregate" ,
318
+ "expressions.tests.BasicExpressionsTests.test_subquery_filter_by_lazy" ,
319
+ "expressions.tests.BasicExpressionsTests.test_subquery_group_by_outerref_in_filter" ,
320
+ "expressions.tests.BasicExpressionsTests.test_subquery_in_filter" ,
321
+ "expressions.tests.BasicExpressionsTests.test_subquery_references_joined_table_twice" ,
322
+ "expressions.tests.BasicExpressionsTests.test_uuid_pk_subquery" ,
256
323
"lookup.tests.LookupQueryingTests.test_filter_subquery_lhs" ,
257
324
"model_fields.test_jsonfield.TestQuerying.test_nested_key_transform_on_subquery" ,
258
325
"model_fields.test_jsonfield.TestQuerying.test_obj_subquery_lookup" ,
@@ -261,6 +328,9 @@ def django_test_expected_failures(self):
261
328
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_and_alias_filter_in_subquery" ,
262
329
"annotations.tests.NonAggregateAnnotationTestCase.test_empty_expression_annotation" ,
263
330
"db_functions.comparison.test_coalesce.CoalesceTests.test_empty_queryset" ,
331
+ "expressions.tests.FTimeDeltaTests.test_date_subquery_subtraction" ,
332
+ "expressions.tests.FTimeDeltaTests.test_datetime_subquery_subtraction" ,
333
+ "expressions.tests.FTimeDeltaTests.test_time_subquery_subtraction" ,
264
334
"expressions_case.tests.CaseExpressionTests.test_in_subquery" ,
265
335
"lookup.tests.LookupTests.test_in_different_database" ,
266
336
"model_fields.test_jsonfield.TestQuerying.test_usage_in_subquery" ,
@@ -326,6 +396,14 @@ def django_test_expected_failures(self):
326
396
"defer.tests.DeferTests.test_only_baseclass_when_subclass_has_no_added_fields" ,
327
397
"defer.tests.TestDefer2.test_defer_inheritance_pk_chaining" ,
328
398
"defer_regress.tests.DeferRegressionTest.test_ticket_16409" ,
399
+ "expressions.test_queryset_values.ValuesExpressionsTests.test_values_expression" ,
400
+ "expressions.test_queryset_values.ValuesExpressionsTests.test_values_list_expression" ,
401
+ "expressions.test_queryset_values.ValuesExpressionsTests.test_values_list_expression_flat" ,
402
+ "expressions.tests.BasicExpressionsTests.test_annotate_values_aggregate" ,
403
+ "expressions.tests.BasicExpressionsTests.test_outerref_mixed_case_table_name" ,
404
+ "expressions.tests.BasicExpressionsTests.test_outerref_with_operator" ,
405
+ "expressions.tests.IterableLookupInnerExpressionsTests.test_expressions_in_lookups_join_choice" ,
406
+ "expressions.tests.IterableLookupInnerExpressionsTests.test_in_lookup_allows_F_expressions_and_expressions_for_datetimes" ,
329
407
"expressions_case.tests.CaseExpressionTests.test_annotate_with_aggregation_in_condition" ,
330
408
"expressions_case.tests.CaseExpressionTests.test_annotate_with_aggregation_in_predicate" ,
331
409
"expressions_case.tests.CaseExpressionTests.test_annotate_with_aggregation_in_value" ,
@@ -382,6 +460,8 @@ def django_test_expected_failures(self):
382
460
},
383
461
"Test executes raw SQL." : {
384
462
"annotations.tests.NonAggregateAnnotationTestCase.test_raw_sql_with_inherited_field" ,
463
+ "expressions.tests.BasicExpressionsTests.test_annotate_values_filter" ,
464
+ "expressions.tests.BasicExpressionsTests.test_filtering_on_rawsql_that_is_boolean" ,
385
465
"model_fields.test_jsonfield.TestQuerying.test_key_sql_injection_escape" ,
386
466
"model_fields.test_jsonfield.TestQuerying.test_key_transform_raw_expression" ,
387
467
"model_fields.test_jsonfield.TestQuerying.test_nested_key_transform_raw_expression" ,
@@ -421,6 +501,7 @@ def django_test_expected_failures(self):
421
501
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_trunc_date_func" ,
422
502
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_trunc_date_none" ,
423
503
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_trunc_lookup_name_sql_injection" ,
504
+ "expressions.tests.FieldTransformTests.test_multiple_transforms_in_values" ,
424
505
"model_fields.test_datetimefield.DateTimeFieldTests.test_lookup_date_with_use_tz" ,
425
506
"model_fields.test_datetimefield.DateTimeFieldTests.test_lookup_date_without_use_tz" ,
426
507
"timezones.tests.NewDatabaseTests.test_query_convert_timezones" ,
0 commit comments