added some missing cancellation tokens and fixed incorrect tests
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
# All Files
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
#########################################
|
||||
# File Extension Settings
|
||||
##########################################
|
||||
|
||||
# .NET Style Rules
|
||||
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#net-style-rules
|
||||
[*.cs]
|
||||
# "this." and "Me." qualifiers
|
||||
dotnet_style_qualification_for_field = false:warning
|
||||
dotnet_style_qualification_for_property = false:warning
|
||||
dotnet_style_qualification_for_method = false:warning
|
||||
dotnet_style_qualification_for_event = false:warning
|
||||
# Language keywords instead of framework type names for type references
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true:warning
|
||||
dotnet_style_predefined_type_for_member_access = true:warning
|
||||
# Modifier preferences
|
||||
dotnet_style_require_accessibility_modifiers = always:warning
|
||||
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:warning
|
||||
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:warning
|
||||
dotnet_style_readonly_field = true:warning
|
||||
# Parentheses preferences
|
||||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:warning
|
||||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:warning
|
||||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning
|
||||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:warning
|
||||
# Expression-level preferences
|
||||
dotnet_style_object_initializer = true:warning
|
||||
dotnet_style_collection_initializer = true:warning
|
||||
dotnet_style_explicit_tuple_names = true:warning
|
||||
dotnet_style_prefer_inferred_tuple_names = true:warning
|
||||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
|
||||
dotnet_style_prefer_auto_properties = true:warning
|
||||
dotnet_style_prefer_conditional_expression_over_assignment = false:suggestion
|
||||
dotnet_diagnostic.IDE0045.severity = suggestion
|
||||
dotnet_style_prefer_conditional_expression_over_return = false:suggestion
|
||||
dotnet_diagnostic.IDE0046.severity = suggestion
|
||||
dotnet_style_prefer_compound_assignment = true:warning
|
||||
dotnet_style_prefer_simplified_interpolation = true:warning
|
||||
dotnet_style_prefer_simplified_boolean_expressions = true:warning
|
||||
# Null-checking preferences
|
||||
dotnet_style_coalesce_expression = true:warning
|
||||
dotnet_style_null_propagation = true:warning
|
||||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
|
||||
# File header preferences
|
||||
# file_header_template = <copyright file="{fileName}" company="PROJECT-AUTHOR">\n© PROJECT-AUTHOR\n</copyright>
|
||||
# If you use StyleCop, you'll need to disable SA1636: File header copyright text should match.
|
||||
# dotnet_diagnostic.SA1636.severity = none
|
||||
# Undocumented
|
||||
dotnet_style_operator_placement_when_wrapping = end_of_line:warning
|
||||
csharp_style_prefer_null_check_over_type_check = true:warning
|
||||
dotnet_analyzer_diagnostic.severity = warning
|
||||
dotnet_code_quality_unused_parameters = all:warning
|
||||
dotnet_remove_unnecessary_suppression_exclusions = none:warning
|
||||
dotnet_sort_system_directives_first = true
|
||||
dotnet_separate_import_directive_groups = false
|
||||
dotnet_style_namespace_match_folder = true:suggestion
|
||||
dotnet_diagnostic.IDE0130.severity = suggestion
|
||||
dotnet_naming_style.camel_case_style.capitalization = camel_case
|
||||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
|
||||
dotnet_naming_style.first_upper_style.capitalization = first_word_upper
|
||||
dotnet_naming_style.prefix_interface_with_i_style.capitalization = pascal_case
|
||||
dotnet_naming_style.prefix_interface_with_i_style.required_prefix = I
|
||||
dotnet_naming_style.prefix_type_parameters_with_t_style.capitalization = pascal_case
|
||||
dotnet_naming_style.prefix_type_parameters_with_t_style.required_prefix = T
|
||||
dotnet_naming_style.disallowed_style.capitalization = pascal_case
|
||||
dotnet_naming_style.disallowed_style.required_prefix = ____RULE_VIOLATION____
|
||||
dotnet_naming_style.disallowed_style.required_suffix = ____RULE_VIOLATION____
|
||||
dotnet_naming_style.internal_error_style.capitalization = pascal_case
|
||||
dotnet_naming_style.internal_error_style.required_prefix = ____INTERNAL_ERROR____
|
||||
dotnet_naming_style.internal_error_style.required_suffix = ____INTERNAL_ERROR____
|
||||
dotnet_naming_symbols.public_protected_constant_fields_group.applicable_accessibilities = public, protected, protected_internal
|
||||
dotnet_naming_symbols.public_protected_constant_fields_group.required_modifiers = const
|
||||
dotnet_naming_symbols.public_protected_constant_fields_group.applicable_kinds = field
|
||||
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.symbols = public_protected_constant_fields_group
|
||||
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.severity = warning
|
||||
dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_accessibilities = public, protected, protected_internal
|
||||
dotnet_naming_symbols.public_protected_static_readonly_fields_group.required_modifiers = static, readonly
|
||||
dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_kinds = field
|
||||
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.symbols = public_protected_static_readonly_fields_group
|
||||
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.severity = warning
|
||||
dotnet_naming_symbols.other_public_protected_fields_group.applicable_accessibilities = public, protected, protected_internal
|
||||
dotnet_naming_symbols.other_public_protected_fields_group.applicable_kinds = field
|
||||
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.symbols = other_public_protected_fields_group
|
||||
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.style = disallowed_style
|
||||
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.severity = error
|
||||
dotnet_naming_symbols.stylecop_constant_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private
|
||||
dotnet_naming_symbols.stylecop_constant_fields_group.required_modifiers = const
|
||||
dotnet_naming_symbols.stylecop_constant_fields_group.applicable_kinds = field
|
||||
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.symbols = stylecop_constant_fields_group
|
||||
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.severity = warning
|
||||
dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private
|
||||
dotnet_naming_symbols.stylecop_static_readonly_fields_group.required_modifiers = static, readonly
|
||||
dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_kinds = field
|
||||
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.symbols = stylecop_static_readonly_fields_group
|
||||
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.severity = warning
|
||||
dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected
|
||||
dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_kinds = field
|
||||
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.symbols = stylecop_fields_must_be_private_group
|
||||
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.style = disallowed_style
|
||||
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.severity = error
|
||||
dotnet_naming_symbols.stylecop_private_fields_group.applicable_accessibilities = private
|
||||
dotnet_naming_symbols.stylecop_private_fields_group.applicable_kinds = field
|
||||
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.symbols = stylecop_private_fields_group
|
||||
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.style = camel_case_style
|
||||
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.severity = warning
|
||||
dotnet_naming_symbols.stylecop_local_fields_group.applicable_accessibilities = local
|
||||
dotnet_naming_symbols.stylecop_local_fields_group.applicable_kinds = local
|
||||
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.symbols = stylecop_local_fields_group
|
||||
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.style = camel_case_style
|
||||
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.severity = silent
|
||||
dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_accessibilities = *
|
||||
dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_kinds = field
|
||||
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.symbols = sanity_check_uncovered_field_case_group
|
||||
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.style = internal_error_style
|
||||
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.severity = error
|
||||
dotnet_naming_symbols.element_group.applicable_kinds = namespace, class, enum, struct, delegate, event, method, property
|
||||
dotnet_naming_rule.element_rule.symbols = element_group
|
||||
dotnet_naming_rule.element_rule.style = pascal_case_style
|
||||
dotnet_naming_rule.element_rule.severity = warning
|
||||
dotnet_naming_symbols.interface_group.applicable_kinds = interface
|
||||
dotnet_naming_rule.interface_rule.symbols = interface_group
|
||||
dotnet_naming_rule.interface_rule.style = prefix_interface_with_i_style
|
||||
dotnet_naming_rule.interface_rule.severity = warning
|
||||
dotnet_naming_symbols.type_parameter_group.applicable_kinds = type_parameter
|
||||
dotnet_naming_rule.type_parameter_rule.symbols = type_parameter_group
|
||||
dotnet_naming_rule.type_parameter_rule.style = prefix_type_parameters_with_t_style
|
||||
dotnet_naming_rule.type_parameter_rule.severity = warning
|
||||
dotnet_naming_symbols.parameters_group.applicable_kinds = parameter
|
||||
dotnet_naming_rule.parameters_rule.symbols = parameters_group
|
||||
dotnet_naming_rule.parameters_rule.style = camel_case_style
|
||||
dotnet_naming_rule.parameters_rule.severity = warning
|
||||
csharp_style_var_for_built_in_types = true:warning
|
||||
csharp_style_var_when_type_is_apparent = true:warning
|
||||
csharp_style_var_elsewhere = true:warning
|
||||
csharp_style_expression_bodied_methods = true:warning
|
||||
csharp_style_expression_bodied_constructors = true:warning
|
||||
csharp_style_expression_bodied_operators = true:warning
|
||||
csharp_style_expression_bodied_properties = true:warning
|
||||
csharp_style_expression_bodied_indexers = true:warning
|
||||
csharp_style_expression_bodied_accessors = true:warning
|
||||
csharp_style_expression_bodied_lambdas = true:warning
|
||||
csharp_style_expression_bodied_local_functions = true:warning
|
||||
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
|
||||
csharp_style_pattern_matching_over_as_with_null_check = true:warning
|
||||
csharp_style_prefer_switch_expression = true:warning
|
||||
csharp_style_prefer_pattern_matching = true:warning
|
||||
csharp_style_prefer_not_pattern = true:warning
|
||||
csharp_style_inlined_variable_declaration = true:warning
|
||||
csharp_prefer_simple_default_expression = true:warning
|
||||
csharp_style_pattern_local_over_anonymous_function = true:warning
|
||||
csharp_style_deconstructed_variable_declaration = true:warning
|
||||
csharp_style_prefer_index_operator = true:warning
|
||||
csharp_style_prefer_range_operator = true:warning
|
||||
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
|
||||
csharp_style_throw_expression = true:warning
|
||||
csharp_style_conditional_delegate_call = true:warning
|
||||
csharp_prefer_braces = true:warning
|
||||
csharp_prefer_simple_using_statement = true:suggestion
|
||||
dotnet_diagnostic.IDE0063.severity = suggestion
|
||||
csharp_using_directive_placement = outside_namespace
|
||||
csharp_prefer_static_local_function = true:warning
|
||||
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
|
||||
dotnet_diagnostic.IDE0058.severity = suggestion
|
||||
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
|
||||
dotnet_diagnostic.IDE0059.severity = suggestion
|
||||
csharp_new_line_before_open_brace = all
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_finally = true
|
||||
csharp_new_line_before_members_in_object_initializers = true
|
||||
csharp_new_line_before_members_in_anonymous_types = true
|
||||
csharp_new_line_between_query_expression_clauses = true
|
||||
csharp_indent_case_contents = true
|
||||
csharp_indent_switch_labels = true
|
||||
csharp_indent_labels = no_change
|
||||
csharp_indent_block_contents = true
|
||||
csharp_indent_braces = false
|
||||
csharp_indent_case_contents_when_block = false
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_keywords_in_control_flow_statements = true
|
||||
csharp_space_between_parentheses = false
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_name_and_open_parenthesis = false
|
||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||
csharp_space_after_comma = true
|
||||
csharp_space_before_comma = false
|
||||
csharp_space_after_dot = false
|
||||
csharp_space_before_dot = false
|
||||
csharp_space_after_semicolon_in_for_statement = true
|
||||
csharp_space_before_semicolon_in_for_statement = false
|
||||
csharp_space_around_declaration_statements = false
|
||||
csharp_space_before_open_square_brackets = false
|
||||
csharp_space_between_empty_square_brackets = false
|
||||
csharp_space_between_square_brackets = false
|
||||
csharp_preserve_single_line_statements = false
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_style_namespace_declarations = file_scoped:warning
|
||||
dotnet_diagnostic.CA1707.severity = none
|
||||
|
||||
|
||||
@@ -12,13 +12,13 @@ namespace CoreUnitTests.BaseMongoRepositoryTests.AddTests;
|
||||
|
||||
public class AddManyTests : TestMongoRepositoryContext
|
||||
{
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task AddManyAsync_EnsureTokenPassed()
|
||||
{
|
||||
// Arrange
|
||||
Creator = new Mock<IMongoDbCreator>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
var documents = new List<TestDocument>
|
||||
{
|
||||
new(), new(), new()
|
||||
@@ -30,4 +30,4 @@ public class AddManyTests : TestMongoRepositoryContext
|
||||
// Assert
|
||||
Creator.Verify(x => x.AddManyAsync<TestDocument, Guid>(documents, token));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public class AddOneTests : TestMongoRepositoryContext
|
||||
{
|
||||
// Arrange
|
||||
Creator = new Mock<IMongoDbCreator>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
var document = new TestDocument();
|
||||
|
||||
// Act
|
||||
@@ -25,4 +25,4 @@ public class AddOneTests : TestMongoRepositoryContext
|
||||
// Assert
|
||||
Creator.Verify(x => x.AddOneAsync<TestDocument, Guid>(document, token));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var documents = Fixture.CreateMany<TestDocument>().ToList();
|
||||
var count = Fixture.Create<long>();
|
||||
var cancellationToken = new CancellationToken();
|
||||
var cancellationToken = new CancellationToken(true);
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
@@ -89,7 +89,7 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var content = Fixture.Create<string>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -144,7 +144,7 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
var content = Fixture.Create<string>();
|
||||
var count = Fixture.Create<long>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -193,19 +193,20 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var documents = Fixture.CreateMany<TestDocumentWithKey<int>>().ToList();
|
||||
var count = Fixture.Create<long>();
|
||||
var cancellationToken = new CancellationToken();
|
||||
var cancellationToken = new CancellationToken(true);
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteManyAsync<TestDocumentWithKey<int>, int>(It.IsAny<IEnumerable<TestDocumentWithKey<int>>>(), It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(count);
|
||||
.Setup(x => x.DeleteManyAsync<TestDocumentWithKey<int>, int>(documents, cancellationToken))
|
||||
.ReturnsAsync(count)
|
||||
.Verifiable();
|
||||
|
||||
// Act
|
||||
var result = await Sut.DeleteManyAsync<TestDocumentWithKey<int>, int>(documents, cancellationToken);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteManyAsync<TestDocumentWithKey<int>, int>(documents, cancellationToken), Times.Once);
|
||||
Eraser.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -240,7 +241,7 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var content = Fixture.Create<string>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -295,7 +296,7 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
var content = Fixture.Create<string>();
|
||||
var count = Fixture.Create<long>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -317,4 +318,4 @@ public class DeleteManyAsyncTests : TestMongoRepositoryContext
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
@@ -85,7 +85,7 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -134,7 +134,7 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -180,7 +180,7 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var document = Fixture.Create<TestDocumentWithKey<int>>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
@@ -225,7 +225,7 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -274,7 +274,7 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -293,4 +293,4 @@ public class DeleteOneAsyncTests : TestMongoRepositoryContext
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
using System;
|
||||
namespace CoreUnitTests.BaseMongoRepositoryTests.DeleteTests;
|
||||
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using AutoFixture;
|
||||
using CoreUnitTests.Infrastructure;
|
||||
using CoreUnitTests.Infrastructure.Model;
|
||||
using FluentAssertions;
|
||||
using Infrastructure;
|
||||
using Infrastructure.Model;
|
||||
using MongoDbGenericRepository.DataAccess.Delete;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace CoreUnitTests.BaseMongoRepositoryTests.DeleteTests;
|
||||
|
||||
public class DeleteOneTests : TestMongoRepositoryContext
|
||||
{
|
||||
[Fact]
|
||||
@@ -21,7 +22,7 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocument, Guid>(It.IsAny<TestDocument>()))
|
||||
.Setup(x => x.DeleteOne<TestDocument, Guid>(It.IsAny<TestDocument>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -29,7 +30,28 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(document), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(document, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithDocumentAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken(true);
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocument, Guid>(It.IsAny<TestDocument>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne(document, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(document, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -44,7 +66,7 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocument, Guid>(It.IsAny<Expression<Func<TestDocument, bool>>>(), It.IsAny<string>()))
|
||||
.Setup(x => x.DeleteOne<TestDocument, Guid>(It.IsAny<Expression<Func<TestDocument, bool>>>(), It.IsAny<string>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -52,7 +74,35 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(filter, null), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(filter, null, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocument, Guid>(
|
||||
It.IsAny<Expression<Func<TestDocument, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne(filter, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(filter, null, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -68,7 +118,11 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocument, Guid>(It.IsAny<Expression<Func<TestDocument, bool>>>(), It.IsAny<string>()))
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocument, Guid>(
|
||||
It.IsAny<Expression<Func<TestDocument, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -76,7 +130,36 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(filter, partitionKey), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(filter, partitionKey, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndPartitionKeyAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocument, Guid>(
|
||||
It.IsAny<Expression<Func<TestDocument, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne(filter, partitionKey, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocument, Guid>(filter, partitionKey, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -88,7 +171,7 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<TestDocumentWithKey<int>>()))
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<TestDocumentWithKey<int>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -96,8 +179,30 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(document), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(document, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithKeyedDocumentAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var document = Fixture.Create<TestDocumentWithKey<int>>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken(true);
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<TestDocumentWithKey<int>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocumentWithKey<int>, int>(document, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(document, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Keyed_WithFilter_ShouldDeleteOne()
|
||||
{
|
||||
@@ -110,7 +215,11 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(), It.IsAny<string>()))
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -118,7 +227,35 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, null), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, null, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Keyed_WithFilterAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocumentWithKey<int>, int>(filter, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, null, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -134,7 +271,11 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(), It.IsAny<string>()))
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -142,6 +283,35 @@ public class DeleteOneTests : TestMongoRepositoryContext
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey, CancellationToken.None), Times.Once);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Keyed_WithFilterAndPartitionKeyAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(
|
||||
x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey, token), Times.Once);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public class CreateAscendingIndexTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
// Act
|
||||
Expression<Func<TestDocument, object>> fieldExpression = t => t.SomeContent2;
|
||||
@@ -26,4 +26,4 @@ public class CreateAscendingIndexTests : BaseIndexTests
|
||||
IndexHandler.Verify(x => x.CreateAscendingIndexAsync<TestDocument, Guid>(
|
||||
fieldExpression, null, null, token));
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ public class CreateTextIndexTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
// Act
|
||||
await Sut.CreateTextIndexAsync<TestDocument>(_fieldExpression, token);
|
||||
@@ -82,7 +82,7 @@ public class CreateTextIndexTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
var options = new IndexCreationOptions { Name = "theIndexName" };
|
||||
|
||||
// Act
|
||||
@@ -99,7 +99,7 @@ public class CreateTextIndexTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
const string partitionKey = "thePartitionKey";
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
|
||||
// Act
|
||||
@@ -130,7 +130,7 @@ public class CreateTextIndexTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
// Act
|
||||
await Sut.CreateTextIndexAsync<TestDocumentWithKey, int>(t => t.SomeContent2, token);
|
||||
@@ -179,7 +179,7 @@ public class CreateTextIndexTests : BaseIndexTests
|
||||
// Arrange
|
||||
const string partitionKey = "thePartitionKey";
|
||||
const string indexName = "theIndexName";
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
var options = new IndexCreationOptions { Name = indexName };
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
|
||||
@@ -192,4 +192,4 @@ public class CreateTextIndexTests : BaseIndexTests
|
||||
t => t.SomeContent2, options, partitionKey, token));
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class GetIndexNamesTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
const string indexName = "theIndexName";
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
IndexHandler
|
||||
.Setup(x => x.GetIndexesNamesAsync<TestDocument, Guid>(null, token))
|
||||
@@ -78,7 +78,7 @@ public class GetIndexNamesTests : BaseIndexTests
|
||||
// Arrange
|
||||
const string partitionKey = "thePartitionKey";
|
||||
const string indexName = "theIndexName";
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
IndexHandler
|
||||
@@ -117,7 +117,7 @@ public class GetIndexNamesTests : BaseIndexTests
|
||||
{
|
||||
// Arrange
|
||||
const string indexName = "theIndexName";
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
IndexHandler
|
||||
.Setup(x => x.GetIndexesNamesAsync<TestDocumentWithKey, int>(null, token))
|
||||
@@ -157,7 +157,7 @@ public class GetIndexNamesTests : BaseIndexTests
|
||||
// Arrange
|
||||
const string indexName = "theIndexName";
|
||||
const string partitionKey = "thePartitionKey";
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
IndexHandler = new Mock<IMongoDbIndexHandler>();
|
||||
IndexHandler
|
||||
@@ -171,4 +171,4 @@ public class GetIndexNamesTests : BaseIndexTests
|
||||
Assert.NotNull(result);
|
||||
Assert.Contains(result, x => x == indexName);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public class AnyTests : TestMongoRepositoryContext
|
||||
public async Task AnyAsync_EnsureTokenPassed()
|
||||
{
|
||||
// Arrange
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Reader = new Mock<IMongoDbReader>();
|
||||
Reader
|
||||
@@ -31,4 +31,4 @@ public class AnyTests : TestMongoRepositoryContext
|
||||
.Verify(x => x.AnyAsync<TestDocument, Guid>(
|
||||
t => string.IsNullOrWhiteSpace(t.SomeContent2), null, token));
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public class CountTests : TestMongoRepositoryContext
|
||||
public async Task CountAsync_EnsureTokenPassed()
|
||||
{
|
||||
// Arrange
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Reader = new Mock<IMongoDbReader>();
|
||||
Reader
|
||||
@@ -31,4 +31,4 @@ public class CountTests : TestMongoRepositoryContext
|
||||
Reader.Verify(x => x.CountAsync<TestDocument, Guid>(
|
||||
t => string.IsNullOrWhiteSpace(t.SomeContent2), null, token));
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
<Nullable>warnings</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||
<AnalysisLevel>latest</AnalysisLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoFixture" Version="4.18.0" />
|
||||
<PackageReference Include="AutoFixture.AutoMoq" Version="4.18.0" />
|
||||
<PackageReference Include="FluentAssertions" Version="6.11.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
|
||||
<PackageReference Include="Moq" Version="4.18.4" />
|
||||
|
||||
@@ -0,0 +1,202 @@
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using AutoFixture;
|
||||
using CoreUnitTests.Infrastructure;
|
||||
using CoreUnitTests.Infrastructure.Model;
|
||||
using FluentAssertions;
|
||||
using MongoDB.Driver;
|
||||
using MongoDbGenericRepository;
|
||||
using MongoDbGenericRepository.DataAccess.Delete;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace CoreUnitTests.DataAccessTests.MongoDbEraserTests;
|
||||
|
||||
public class DeleteOneTests : GenericTestContext<MongoDbEraser>
|
||||
{
|
||||
[Fact]
|
||||
public void WithDocument_DeletesOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var collection = MockOf<IMongoCollection<TestDocument>>();
|
||||
|
||||
collection
|
||||
.Setup(x => x.DeleteOne(It.IsAny<FilterDefinition<TestDocument>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(new DeleteResult.Acknowledged(count));
|
||||
|
||||
var dbContext = MockOf<IMongoDbContext>();
|
||||
dbContext
|
||||
.Setup(x => x.GetCollection<TestDocument>(null))
|
||||
.Returns(Fixture.Create<IMongoCollection<TestDocument>>());
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocument, Guid>(document);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
|
||||
var expectedFilter = Builders<TestDocument>.Filter.Eq("Id", document.Id);
|
||||
collection.Verify(
|
||||
x => x.DeleteOne(
|
||||
It.Is<FilterDefinition<TestDocument>>(f => f.EquivalentTo(expectedFilter)),
|
||||
CancellationToken.None));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithDocumentAndCancellationToken_DeletesOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
var collection = MockOf<IMongoCollection<TestDocument>>();
|
||||
collection
|
||||
.Setup(x => x.DeleteOne(It.IsAny<FilterDefinition<TestDocument>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(new DeleteResult.Acknowledged(count));
|
||||
|
||||
var dbContext = MockOf<IMongoDbContext>();
|
||||
dbContext
|
||||
.Setup(x => x.GetCollection<TestDocument>(null))
|
||||
.Returns(Fixture.Create<IMongoCollection<TestDocument>>());
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocument, Guid>(document, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
|
||||
var expectedFilter = Builders<TestDocument>.Filter.Eq("Id", document.Id);
|
||||
collection.Verify(
|
||||
x => x.DeleteOne(
|
||||
It.Is<FilterDefinition<TestDocument>>(f => f.EquivalentTo(expectedFilter)),
|
||||
token));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilter_DeletesOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
|
||||
var collection = MockOf<IMongoCollection<TestDocument>>();
|
||||
collection
|
||||
.Setup(x => x.DeleteOne(It.IsAny<FilterDefinition<TestDocument>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(new DeleteResult.Acknowledged(count));
|
||||
|
||||
var dbContext = MockOf<IMongoDbContext>();
|
||||
dbContext
|
||||
.Setup(x => x.GetCollection<TestDocument>(null))
|
||||
.Returns(Fixture.Create<IMongoCollection<TestDocument>>());
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = d => d.SomeContent == document.SomeContent;
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocument, Guid>(filter);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
collection.Verify(
|
||||
x => x.DeleteOne(
|
||||
It.Is<FilterDefinition<TestDocument>>(f => f.EquivalentTo(filter)), CancellationToken.None));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndCancellationToken_DeletesOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
var collection = MockOf<IMongoCollection<TestDocument>>();
|
||||
collection
|
||||
.Setup(x => x.DeleteOne(It.IsAny<FilterDefinition<TestDocument>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(new DeleteResult.Acknowledged(count));
|
||||
|
||||
var dbContext = MockOf<IMongoDbContext>();
|
||||
dbContext
|
||||
.Setup(x => x.GetCollection<TestDocument>(null))
|
||||
.Returns(Fixture.Create<IMongoCollection<TestDocument>>());
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = d => d.Id == document.Id;
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocument, Guid>(filter, cancellationToken: token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
collection.Verify(
|
||||
x => x.DeleteOne(
|
||||
It.Is<FilterDefinition<TestDocument>>(f => f.EquivalentTo(filter)), token));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndPartitionKey_DeletesOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
|
||||
var collection = MockOf<IMongoCollection<TestDocument>>();
|
||||
collection
|
||||
.Setup(x => x.DeleteOne(It.IsAny<FilterDefinition<TestDocument>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(new DeleteResult.Acknowledged(count));
|
||||
|
||||
var dbContext = MockOf<IMongoDbContext>();
|
||||
dbContext
|
||||
.Setup(x => x.GetCollection<TestDocument>(It.IsAny<string>()))
|
||||
.Returns(Fixture.Create<IMongoCollection<TestDocument>>());
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = d => d.Id == document.Id;
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocument, Guid>(filter, partitionKey);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
collection.Verify(
|
||||
x => x.DeleteOne(
|
||||
It.Is<FilterDefinition<TestDocument>>(f => f.EquivalentTo(filter)), CancellationToken.None));
|
||||
|
||||
dbContext.Verify(x => x.GetCollection<TestDocument>(partitionKey));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndPartitionKeyAndCancellationToken_DeletesOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var document = Fixture.Create<TestDocument>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
var collection = MockOf<IMongoCollection<TestDocument>>();
|
||||
collection
|
||||
.Setup(x => x.DeleteOne(It.IsAny<FilterDefinition<TestDocument>>(), It.IsAny<CancellationToken>()))
|
||||
.Returns(new DeleteResult.Acknowledged(count));
|
||||
|
||||
var dbContext = MockOf<IMongoDbContext>();
|
||||
dbContext
|
||||
.Setup(x => x.GetCollection<TestDocument>(It.IsAny<string>()))
|
||||
.Returns(Fixture.Create<IMongoCollection<TestDocument>>());
|
||||
|
||||
Expression<Func<TestDocument, bool>> filter = d => d.Id == document.Id;
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne<TestDocument, Guid>(filter, partitionKey, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
collection.Verify(
|
||||
x => x.DeleteOne(
|
||||
It.Is<FilterDefinition<TestDocument>>(f => f.EquivalentTo(filter)), token));
|
||||
|
||||
dbContext.Verify(x => x.GetCollection<TestDocument>(partitionKey));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace CoreUnitTests.Infrastructure;
|
||||
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization;
|
||||
using MongoDB.Driver;
|
||||
|
||||
public static class FilterDefinitionExtensions
|
||||
{
|
||||
public static string RenderToJson<TDocument>(this FilterDefinition<TDocument> filter)
|
||||
=> filter.Render(BsonSerializer.SerializerRegistry.GetSerializer<TDocument>(), BsonSerializer.SerializerRegistry).ToJson();
|
||||
|
||||
public static bool EquivalentTo<TDocument>(this FilterDefinition<TDocument> filter, FilterDefinition<TDocument> other)
|
||||
=> filter.RenderToJson() == other.RenderToJson();
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using AutoFixture;
|
||||
using AutoFixture.AutoMoq;
|
||||
using Moq;
|
||||
|
||||
namespace CoreUnitTests.Infrastructure;
|
||||
|
||||
public class GenericTestContext<TSut>
|
||||
{
|
||||
public GenericTestContext()
|
||||
{
|
||||
Fixture = new Fixture().Customize(new AutoMoqCustomization());
|
||||
}
|
||||
|
||||
protected Mock<T> MockOf<T>()
|
||||
where T : class
|
||||
{
|
||||
return Fixture.Freeze<Mock<T>>();
|
||||
}
|
||||
|
||||
protected IFixture Fixture { get; set; }
|
||||
|
||||
protected TSut Sut { get => Fixture.Create<TSut>(); }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace CoreUnitTests.Infrastructure.Model;
|
||||
|
||||
public class PartitionedTestDocument : TestDocument, IPartitionedDocument
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public string PartitionKey { get; set; } = "PartitionedTestDocument";
|
||||
}
|
||||
@@ -42,7 +42,7 @@ public class DeleteManyAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
// Arrange
|
||||
var documents = Fixture.CreateMany<TestDocumentWithKey<int>>().ToList();
|
||||
var count = Fixture.Create<long>();
|
||||
var cancellationToken = new CancellationToken();
|
||||
var cancellationToken = new CancellationToken(true);
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
@@ -89,7 +89,7 @@ public class DeleteManyAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
// Arrange
|
||||
var content = Fixture.Create<string>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -144,7 +144,7 @@ public class DeleteManyAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
var content = Fixture.Create<string>();
|
||||
var count = Fixture.Create<long>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -164,4 +164,4 @@ public class DeleteManyAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteManyAsync<TestDocumentWithKey<int>, int>(filter, partitionKey, token), Times.Once);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class DeleteOneAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
// Arrange
|
||||
var document = Fixture.Create<TestDocumentWithKey<int>>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
@@ -85,7 +85,7 @@ public class DeleteOneAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -134,7 +134,7 @@ public class DeleteOneAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
@@ -151,4 +151,4 @@ public class DeleteOneAsyncTests : TestKeyedMongoRepositoryContext<int>
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOneAsync<TestDocumentWithKey<int>, int>(filter, partitionKey, token), Times.Once);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using AutoFixture;
|
||||
using CoreUnitTests.Infrastructure;
|
||||
using CoreUnitTests.Infrastructure.Model;
|
||||
@@ -21,7 +22,9 @@ public class DeleteOneTests : TestKeyedMongoRepositoryContext<int>
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<TestDocumentWithKey<int>>()))
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<TestDocumentWithKey<int>>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -29,7 +32,30 @@ public class DeleteOneTests : TestKeyedMongoRepositoryContext<int>
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(document), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(document, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithDocumentAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var document = Fixture.Create<TestDocumentWithKey<int>>();
|
||||
var count = Fixture.Create<long>();
|
||||
var token = new CancellationToken(true);
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<TestDocumentWithKey<int>>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne(document, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(document, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -44,7 +70,10 @@ public class DeleteOneTests : TestKeyedMongoRepositoryContext<int>
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(), It.IsAny<string>()))
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -52,7 +81,34 @@ public class DeleteOneTests : TestKeyedMongoRepositoryContext<int>
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, null), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, null, CancellationToken.None), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne(filter, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, null, token), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -68,7 +124,10 @@ public class DeleteOneTests : TestKeyedMongoRepositoryContext<int>
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(), It.IsAny<string>()))
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
@@ -76,6 +135,34 @@ public class DeleteOneTests : TestKeyedMongoRepositoryContext<int>
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey), Times.Once);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey, CancellationToken.None), Times.Once);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WithFilterAndPartitionKeyAndCancellationToken_ShouldDeleteOne()
|
||||
{
|
||||
// Arrange
|
||||
var count = Fixture.Create<long>();
|
||||
var content = Fixture.Create<string>();
|
||||
var partitionKey = Fixture.Create<string>();
|
||||
var token = new CancellationToken(true);
|
||||
|
||||
Expression<Func<TestDocumentWithKey<int>, bool>> filter = x => x.SomeContent == content;
|
||||
|
||||
Eraser = new Mock<IMongoDbEraser>();
|
||||
|
||||
Eraser
|
||||
.Setup(x => x.DeleteOne<TestDocumentWithKey<int>, int>(
|
||||
It.IsAny<Expression<Func<TestDocumentWithKey<int>, bool>>>(),
|
||||
It.IsAny<string>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(count);
|
||||
|
||||
// Act
|
||||
var result = Sut.DeleteOne(filter, partitionKey, token);
|
||||
|
||||
// Assert
|
||||
result.Should().Be(count);
|
||||
Eraser.Verify(x => x.DeleteOne<TestDocumentWithKey<int>, int>(filter, partitionKey, token), Times.Once);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user