Skip to content

Commit c848f5b

Browse files
committed
Add subqueries, exists tests.
1 parent d3b82d2 commit c848f5b

File tree

1 file changed

+17
-99
lines changed

1 file changed

+17
-99
lines changed

django_mongodb/features.py

Lines changed: 17 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
3434
supports_transactions = False
3535
supports_unspecified_pk = True
3636
uses_savepoints = False
37+
supports_boolean_expr_in_select_clause = True
3738

3839
_django_test_expected_failures = {
3940
# 'NulledTransform' object has no attribute 'as_mql'.
@@ -119,6 +120,15 @@ class DatabaseFeatures(BaseDatabaseFeatures):
119120
# subclasses of BaseDatabaseIntrospection may require a get_constraints() method
120121
"migrations.test_operations.OperationTests.test_add_func_unique_constraint",
121122
"migrations.test_operations.OperationTests.test_remove_func_unique_constraint",
123+
# Delete does not support subqueries.
124+
"delete_regress.tests.DeleteTests.test_self_reference_with_through_m2m_at_second_level",
125+
# Handle column default value.
126+
"annotations.tests.NonAggregateAnnotationTestCase.test_empty_queryset_annotation",
127+
# Union as subquery is not mapping the parent parameter and collections.
128+
"queries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_subquery_related_outerref",
129+
"queries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_subquery",
130+
# Log with Decimal128 isn't working as expected.
131+
"db_functions.math.test_log.LogTests.test_decimal",
122132
}
123133
# $bitAnd, #bitOr, and $bitXor are new in MongoDB 6.3.
124134
_django_test_expected_failures_bitwise = {
@@ -233,106 +243,7 @@ def django_test_expected_failures(self):
233243
"db_functions.comparison.test_cast.CastTests.test_cast_to_integer_foreign_key",
234244
"model_fields.test_foreignkey.ForeignKeyTests.test_to_python",
235245
"queries.test_qs_combinators.QuerySetSetOperationTests.test_order_raises_on_non_selected_column",
236-
},
237-
"Exists is not supported on MongoDB.": {
238-
"aggregation.test_filter_argument.FilteredAggregateTests.test_filtered_aggregate_on_exists",
239-
"aggregation.test_filter_argument.FilteredAggregateTests.test_filtered_aggregate_ref_multiple_subquery_annotation",
240-
"aggregation.tests.AggregateTestCase.test_aggregation_exists_multivalued_outeref",
241-
"aggregation.tests.AggregateTestCase.test_group_by_exists_annotation",
242-
"aggregation.tests.AggregateTestCase.test_exists_none_with_aggregate",
243-
"aggregation.tests.AggregateTestCase.test_exists_extra_where_with_aggregate",
244-
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_exists_aggregate_values_chaining",
245-
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_exists_none_query",
246-
"aggregation_regress.tests.AggregationTests.test_annotate_and_join",
247-
"delete_regress.tests.DeleteTests.test_self_reference_with_through_m2m_at_second_level",
248-
"expressions.tests.BasicExpressionsTests.test_annotation_with_deeply_nested_outerref",
249-
"expressions.tests.BasicExpressionsTests.test_boolean_expression_combined",
250-
"expressions.tests.BasicExpressionsTests.test_boolean_expression_combined_with_empty_Q",
251-
"expressions.tests.BasicExpressionsTests.test_boolean_expression_in_Q",
252-
"expressions.tests.BasicExpressionsTests.test_case_in_filter_if_boolean_output_field",
253-
"expressions.tests.BasicExpressionsTests.test_exists_in_filter",
254-
"expressions.tests.BasicExpressionsTests.test_order_by_exists",
255-
"expressions.tests.BasicExpressionsTests.test_subquery",
256-
"expressions.tests.ExistsTests.test_filter_by_empty_exists",
257-
"expressions.tests.ExistsTests.test_negated_empty_exists",
258-
"expressions.tests.ExistsTests.test_optimizations",
259-
"expressions.tests.ExistsTests.test_select_negated_empty_exists",
260-
"lookup.tests.LookupTests.test_exact_exists",
261-
"lookup.tests.LookupTests.test_nested_outerref_lhs",
262-
"lookup.tests.LookupQueryingTests.test_filter_exists_lhs",
263-
"model_forms.tests.LimitChoicesToTests.test_fields_for_model_applies_limit_choices_to",
264-
"model_forms.tests.LimitChoicesToTests.test_limit_choices_to_callable_for_fk_rel",
265-
"model_forms.tests.LimitChoicesToTests.test_limit_choices_to_callable_for_m2m_rel",
266-
"model_forms.tests.LimitChoicesToTests.test_limit_choices_to_m2m_through",
267-
"model_forms.tests.LimitChoicesToTests.test_limit_choices_to_no_duplicates",
268-
"null_queries.tests.NullQueriesTests.test_reverse_relations",
269-
"queries.test_qs_combinators.QuerySetSetOperationTests.test_union_with_values_list_on_annotated_and_unannotated",
270-
"queries.tests.ExcludeTest17600.test_exclude_plain",
271-
"queries.tests.ExcludeTest17600.test_exclude_with_q_is_equal_to_plain_exclude_variation",
272-
"queries.tests.ExcludeTest17600.test_exclude_with_q_object_no_distinct",
273-
"queries.tests.ExcludeTests.test_exclude_multivalued_exists",
274-
"queries.tests.ExcludeTests.test_exclude_reverse_fk_field_ref",
275-
"queries.tests.ExcludeTests.test_exclude_with_circular_fk_relation",
276-
"queries.tests.ExcludeTests.test_subquery_exclude_outerref",
277-
"queries.tests.ExcludeTests.test_to_field",
278-
"queries.tests.ForeignKeyToBaseExcludeTests.test_ticket_21787",
279-
"queries.tests.JoinReuseTest.test_inverted_q_across_relations",
280-
"queries.tests.ManyToManyExcludeTest.test_exclude_many_to_many",
281-
"queries.tests.ManyToManyExcludeTest.test_ticket_12823",
282-
"queries.tests.Queries1Tests.test_double_exclude",
283-
"queries.tests.Queries1Tests.test_exclude",
284-
"queries.tests.Queries1Tests.test_exclude_in",
285-
"queries.tests.Queries1Tests.test_excluded_intermediary_m2m_table_joined",
286-
"queries.tests.Queries1Tests.test_nested_exclude",
287-
"queries.tests.Queries4Tests.test_join_reuse_order",
288-
"queries.tests.Queries4Tests.test_ticket24525",
289-
"queries.tests.Queries6Tests.test_tickets_8921_9188",
290-
"queries.tests.Queries6Tests.test_xor_subquery",
291-
"queries.tests.QuerySetBitwiseOperationTests.test_subquery_aliases",
292-
"queries.tests.TestTicket24605.test_ticket_24605",
293-
"queries.tests.Ticket20101Tests.test_ticket_20101",
294-
"queries.tests.Ticket20788Tests.test_ticket_20788",
295-
"queries.tests.Ticket22429Tests.test_ticket_22429",
296-
},
297-
"Subquery is not supported on MongoDB.": {
298-
"aggregation.test_filter_argument.FilteredAggregateTests.test_filtered_aggregate_ref_subquery_annotation",
299-
"aggregation.tests.AggregateAnnotationPruningTests.test_referenced_composed_subquery_requires_wrapping",
300-
"aggregation.tests.AggregateAnnotationPruningTests.test_referenced_subquery_requires_wrapping",
301-
"aggregation.tests.AggregateTestCase.test_aggregation_nested_subquery_outerref",
302-
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation",
303-
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation_multivalued",
304-
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation_related_field",
305-
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation_values",
306-
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation_values_collision",
307-
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_filter_with_subquery",
308-
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_subquery_and_aggregate_values_chaining",
309-
"annotations.tests.NonAggregateAnnotationTestCase.test_annotation_subquery_outerref_transform",
310-
"annotations.tests.NonAggregateAnnotationTestCase.test_empty_queryset_annotation",
311-
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_extract_outerref",
312-
"db_functions.datetime.test_extract_trunc.DateFunctionTests.test_trunc_subquery_with_parameters",
313-
"expressions.tests.BasicExpressionsTests.test_aggregate_subquery_annotation",
314-
"expressions.tests.BasicExpressionsTests.test_annotation_with_nested_outerref",
315-
"expressions.tests.BasicExpressionsTests.test_annotation_with_outerref",
316-
"expressions.tests.BasicExpressionsTests.test_annotations_within_subquery",
317-
"expressions.tests.BasicExpressionsTests.test_in_subquery",
318-
"expressions.tests.BasicExpressionsTests.test_nested_outerref_with_function",
319-
"expressions.tests.BasicExpressionsTests.test_nested_subquery",
320-
"expressions.tests.BasicExpressionsTests.test_nested_subquery_join_outer_ref",
321-
"expressions.tests.BasicExpressionsTests.test_nested_subquery_outer_ref_2",
322246
"expressions.tests.BasicExpressionsTests.test_nested_subquery_outer_ref_with_autofield",
323-
"expressions.tests.BasicExpressionsTests.test_outerref_mixed_case_table_name",
324-
"expressions.tests.BasicExpressionsTests.test_outerref_with_operator",
325-
"expressions.tests.BasicExpressionsTests.test_subquery_filter_by_aggregate",
326-
"expressions.tests.BasicExpressionsTests.test_subquery_filter_by_lazy",
327-
"expressions.tests.BasicExpressionsTests.test_subquery_group_by_outerref_in_filter",
328-
"expressions.tests.BasicExpressionsTests.test_subquery_in_filter",
329-
"expressions.tests.BasicExpressionsTests.test_subquery_references_joined_table_twice",
330-
"expressions.tests.BasicExpressionsTests.test_uuid_pk_subquery",
331-
"lookup.tests.LookupQueryingTests.test_filter_subquery_lhs",
332-
"model_fields.test_jsonfield.TestQuerying.test_nested_key_transform_on_subquery",
333-
"model_fields.test_jsonfield.TestQuerying.test_obj_subquery_lookup",
334-
"queries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_subquery",
335-
"queries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_subquery_related_outerref",
336247
},
337248
"Using a QuerySet in annotate() is not supported on MongoDB.": {
338249
"aggregation.test_filter_argument.FilteredAggregateTests.test_filtered_reused_subquery",
@@ -444,6 +355,7 @@ def django_test_expected_failures(self):
444355
"ordering.tests.OrderingTests.test_orders_nulls_first_on_filtered_subquery",
445356
"queries.tests.ExcludeTest17600.test_exclude_plain_distinct",
446357
"queries.tests.ExcludeTest17600.test_exclude_with_q_is_equal_to_plain_exclude",
358+
"queries.tests.ExcludeTest17600.test_exclude_with_q_is_equal_to_plain_exclude_variation",
447359
"queries.tests.ExcludeTest17600.test_exclude_with_q_object_distinct",
448360
"queries.tests.ExcludeTests.test_exclude_m2m_through",
449361
"queries.tests.ExistsSql.test_distinct_exists",
@@ -460,6 +372,7 @@ def django_test_expected_failures(self):
460372
"update.tests.AdvancedTests.test_update_all",
461373
},
462374
"QuerySet.extra() is not supported.": {
375+
"aggregation.tests.AggregateTestCase.test_exists_extra_where_with_aggregate",
463376
"annotations.tests.NonAggregateAnnotationTestCase.test_column_field_ordering",
464377
"annotations.tests.NonAggregateAnnotationTestCase.test_column_field_ordering_with_deferred",
465378
"basic.tests.ModelTest.test_extra_method_select_argument_with_dashes",
@@ -494,6 +407,11 @@ def django_test_expected_failures(self):
494407
"aggregation.tests.AggregateAnnotationPruningTests.test_unused_aliased_aggregate_pruned",
495408
"aggregation.tests.AggregateAnnotationPruningTests.test_referenced_aggregate_annotation_kept",
496409
"aggregation.tests.AggregateTestCase.test_count_star",
410+
"aggregation.test_filter_argument.FilteredAggregateTests.test_filtered_aggregate_ref_subquery_annotation",
411+
"aggregation.tests.AggregateAnnotationPruningTests.test_referenced_composed_subquery_requires_wrapping",
412+
"aggregation.tests.AggregateAnnotationPruningTests.test_referenced_subquery_requires_wrapping",
413+
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation",
414+
"aggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation_related_field",
497415
"delete.tests.DeletionTests.test_only_referenced_fields_selected",
498416
"lookup.tests.LookupTests.test_in_ignore_none",
499417
"lookup.tests.LookupTests.test_textfield_exact_null",

0 commit comments

Comments
 (0)