GitHub Actions / .NET Tests
succeeded
Oct 11, 2023 in 1s
.NET Tests ✅
Report | Passed | Failed | Skipped | Time |
---|---|---|---|---|
.test-results/LogOtter.CosmosDb.ContainerMock.IntegrationTests.trx | 96✅ | 71s | ||
.test-results/LogOtter.CosmosDb.ContainerMock.Tests.trx | 106✅ | 2s | ||
.test-results/LogOtter.HttpPatch.Tests.trx | 29✅ | 2s | ||
.test-results/LogOtter.JsonHal.Tests.trx | 8✅ | 1s | ||
.test-results/LogOtter.Obfuscate.Tests.trx | 42✅ | 1s | ||
.test-results/LogOtter.ShortGuid.Tests.trx | 15✅ | 867ms | ||
.test-results/LogOtter.SimpleHealthChecks.Tests.trx | 25✅ | 1s |
✅ .test-results/LogOtter.CosmosDb.ContainerMock.IntegrationTests.trx
96 tests were completed in 71s with 96 passed, 0 failed and 0 skipped.
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosCreateContainerWithUniqueKeyIncludingId
✅ CreateUniqueKeyViolationIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosCreateStreamTests
✅ CreateStreamExistingIsEquivalent
✅ CreateStreamNonExistingIsEquivalent
✅ CreateStreamUniqueKeyViolationIsEquivalent
✅ CreateStreamWithEmptyIdIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosCreateTests
✅ CreateEmptyIdIsEquivalent
✅ CreateExistingIsEquivalent
✅ CreateNonExistingIsEquivalent
✅ CreateWithMismatchedPartitionIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosDeleteStreamTests
✅ DeleteExistingWithCorrectETagIsEquivalent
✅ DeleteExistingWithWrongETagIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosDeleteTests
✅ DeleteExistingWithCorrectETagIsEquivalent
✅ DeleteExistingWithWrongETagIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosEnumTests
✅ GivenAQueryUsingAValueForNullableEnumWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueForNullableEnumWhenExecutingThenTheResultsShouldMatchReversedEquality
✅ GivenAQueryUsingAValueForNullableNonStringEnumWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueForNullableOnSubModelEnumWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingNotNullEnumOnSubmodelWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingNullableEnumOnSubmodelWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingNullableEnumWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingNullableEnumWhenExecutingThenTheResultsShouldMatchReversedEquality
✅ GivenAQueryUsingNullableNonStringEnumWhenExecutingThenTheResultsShouldMatch
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosPartitionTests
✅ GivenACrossPartitionCountUsingEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenACrossPartitionQueryUsingEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenDataInTwoPartitionsWhenReadingAPartitionDoesNotCountTheOther
✅ GivenDataInTwoPartitionsWhenReadingAPartitionDoesNotRetrieveTheOther
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosQueryEquivalencyTests
✅ GivenACountUsingEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryForAllItemsInAPartitionUsingEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAnyInASubQueryWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueFromAMethodAgainstModelWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueFromAMethodWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueFromAMethodWithArgsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingContainsOnAnEnumWithAToStringWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingFirstOrDefaultWhenExecutingThenBothShouldWork
✅ GivenAQueryUsingNotEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingNotXorWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingProjectionWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingSingleOrDefaultWhenExecutingThenBothShouldWork
✅ GivenAQueryUsingToAnyWhenExecutingThenBothShouldWork
✅ GivenAQueryUsingToLowerInvariantWhenExecutingThenBothShouldError
✅ GivenAQueryUsingToLowerWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingToUpperInvariantWhenExecutingThenBothShouldError
✅ GivenAQueryUsingToUpperWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingXorWhenExecutingThenTheResultsShouldMatch
✅ IsDefinedWorksOnNull
✅ IsNullWorks
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosQueryEquivalencyTestsLegacyQueries
✅ GivenAQueryUsingAnyInASubQueryWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAnyWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueFromAMethodAgainstModelWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueFromAMethodWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingAValueFromAMethodWithArgsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingContainsOnAnEnumWithAToStringWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingFirstOrDefaultWhenExecutingThenBothShouldError
✅ GivenAQueryUsingNotEqualsWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingNotXorWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingProjectionWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingSingleOrDefaultWhenExecutingThenBothShouldError
✅ GivenAQueryUsingToAnyWhenExecutingThenBothShouldError
✅ GivenAQueryUsingToLowerInvariantWhenExecutingThenBothShouldError
✅ GivenAQueryUsingToLowerWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingToUpperInvariantWhenExecutingThenBothShouldError
✅ GivenAQueryUsingToUpperWhenExecutingThenTheResultsShouldMatch
✅ GivenAQueryUsingXorWhenExecutingThenTheResultsShouldMatch
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosQuerySerializationTests
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: False, useCamelCaseOnBaseSerializer: False, useCamelCaseOnQuery: False, shouldThrow: False)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: False, useCamelCaseOnBaseSerializer: False, useCamelCaseOnQuery: True, shouldThrow: True)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: False, useCamelCaseOnBaseSerializer: True, useCamelCaseOnQuery: False, shouldThrow: True)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: False, useCamelCaseOnBaseSerializer: True, useCamelCaseOnQuery: True, shouldThrow: False)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: True, useCamelCaseOnBaseSerializer: False, useCamelCaseOnQuery: False, shouldThrow: False)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: True, useCamelCaseOnBaseSerializer: False, useCamelCaseOnQuery: True, shouldThrow: True)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: True, useCamelCaseOnBaseSerializer: True, useCamelCaseOnQuery: False, shouldThrow: True)
✅ GivenACustomSerializer_WhenQueryingWithLingSerializationOptions_ShouldRetrieveTheExpectedRecords(matchOnPropertyUsingASpecifiedName: True, useCamelCaseOnBaseSerializer: True, useCamelCaseOnQuery: True, shouldThrow: False)
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosReadItemStreamTests
✅ ReadWithEmptyIdIsEquivalent
✅ ReadWithNullIdIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosReadTests
✅ ReadWithEmptyIdIsEquivalent
✅ ReadWithInvalidIdIsEquivalent
✅ ReadWithNullIdIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosReplaceTests
✅ ReplaceExistingWithCorrectETagIsEquivalent
✅ ReplaceExistingWithWrongETagIsEquivalent
✅ ReplaceNonExistentItemThrowsTheSameException
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosUpsertStreamTests
✅ UpsertStreamExistingIsEquivalent
✅ UpsertStreamExistingWithCorrectETagIsEquivalent
✅ UpsertStreamExistingWithWrongETagIsEquivalent
✅ UpsertStreamNonExistingIsEquivalent
✅ UpsertStreamUniqueKeyViolationIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosUpsertTests
✅ UpsertExistingIsEquivalent
✅ UpsertExistingWithCorrectETagIsEquivalent
✅ UpsertExistingWithWrongETagIsEquivalent
✅ UpsertNonExistingIsEquivalent
✅ UpsertUniqueKeyViolationIsEquivalent
✅ LogOtter.CosmosDb.ContainerMock.IntegrationTests.CosmosUpsertTestsOnTripleUniqueKey
✅ CreateNonExistingIsEquivalent
✅ CreateUniqueKeyViolationIsEquivalent
✅ UpsertExistingIsEquivalent
✅ UpsertNonExistingIsEquivalent
✅ UpsertUniqueKeyViolationIsEquivalent
✅ .test-results/LogOtter.CosmosDb.ContainerMock.Tests.trx
106 tests were completed in 2s with 106 passed, 0 failed and 0 skipped.
✅ LogOtter.CosmosDb.ContainerMock.Tests.ConcurrencyTests
✅ CanSimulateAConcurrencyException
✅ LogOtter.CosmosDb.ContainerMock.Tests.InvalidIdTests
✅ When_inserting_an_item_by_stream_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "?")
✅ When_inserting_an_item_by_stream_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "/")
✅ When_inserting_an_item_by_stream_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "\\")
✅ When_inserting_an_item_by_stream_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "#")
✅ When_inserting_an_item_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "?")
✅ When_inserting_an_item_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "/")
✅ When_inserting_an_item_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "\\")
✅ When_inserting_an_item_with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "#")
✅ When_upserting_an_item__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "?")
✅ When_upserting_an_item__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "/")
✅ When_upserting_an_item__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "\\")
✅ When_upserting_an_item__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "#")
✅ When_upserting_an_item_by_stream__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "?")
✅ When_upserting_an_item_by_stream__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "/")
✅ When_upserting_an_item_by_stream__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "\\")
✅ When_upserting_an_item_by_stream__with_a_forward_slash_in_the_id__Then_an_error_occurs(invalidChars: "#")
✅ LogOtter.CosmosDb.ContainerMock.Tests.PartitionKeyHelperTests
✅ CorrectlyDeserializes(input: [-1.7976931348623157E+308])
✅ CorrectlyDeserializes(input: [""])
✅ CorrectlyDeserializes(input: ["Foo"])
✅ CorrectlyDeserializes(input: [0.0])
✅ CorrectlyDeserializes(input: [1.0])
✅ CorrectlyDeserializes(input: [1.7976931348623157E+308])
✅ CorrectlyDeserializes(input: [false])
✅ CorrectlyDeserializes(input: [null])
✅ CorrectlyDeserializes(input: [null])
✅ CorrectlyDeserializes(input: [true])
✅ LogOtter.CosmosDb.ContainerMock.Tests.SnapshotTests
✅ RestoringAnEmptySnapshotResetsData
✅ RestoringASnapshotDeletesData
✅ RestoringASnapshotResetsData
✅ LogOtter.CosmosDb.ContainerMock.Tests.TransactionalBatch.CreateItemTests
✅ CreateItem
✅ CreateItem_ExecuteFails_Rollback
✅ CreateItem_NoExecute_NoChanges
✅ LogOtter.CosmosDb.ContainerMock.Tests.TransactionalBatch.CreateReadTests
✅ CreateItem_ExecuteFails_Rollback
✅ CreateItem_ExecuteFails_Rollback_Empty
✅ LogOtter.CosmosDb.ContainerMock.Tests.TransactionalBatch.ReadItemTests
✅ ReadItem
✅ ReadItem_Fails
✅ LogOtter.CosmosDb.ContainerMock.Tests.TtlTests
✅ ItemExistsAfterItemUpdated_ReplaceItemAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_ReplaceItemAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_ReplaceItemAsync(containerTtl: 30, itemTtl: null, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_UpsertItemAsync(containerTtl: -1, itemTtl: 19, expectedItemExists: False)
✅ ItemExistsAfterItemUpdated_UpsertItemAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_UpsertItemAsync(containerTtl: 19, itemTtl: null, expectedItemExists: False)
✅ ItemExistsAfterItemUpdated_UpsertItemAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_UpsertItemAsync(containerTtl: 30, itemTtl: null, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_UpsertItemStreamAsync(containerTtl: -1, itemTtl: 19, expectedItemExists: False)
✅ ItemExistsAfterItemUpdated_UpsertItemStreamAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_UpsertItemStreamAsync(containerTtl: 19, itemTtl: null, expectedItemExists: False)
✅ ItemExistsAfterItemUpdated_UpsertItemStreamAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: True)
✅ ItemExistsAfterItemUpdated_UpsertItemStreamAsync(containerTtl: 30, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CountAsync(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_CreateItemStreamAsync_GetAllItems(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetAllItems(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_GetItemLinqQueryable(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_QueryAsync(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemAsync(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: -1, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: -1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: 1, itemTtl: 31, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: 30, itemTtl: -1, expectedItemExists: True)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: 30, itemTtl: 30, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: 30, itemTtl: null, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: 31, itemTtl: 1, expectedItemExists: False)
✅ ItemRemovedAfterTtlExpires_ReadItemStreamAsync(containerTtl: 31, itemTtl: null, expectedItemExists: True)
✅ .test-results/LogOtter.HttpPatch.Tests.trx
29 tests were completed in 2s with 29 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
LogOtter.HttpPatch.Tests.PatchTests | 22✅ | 1s | ||
LogOtter.HttpPatch.Tests.SerializationTests | 7✅ | 106ms |
✅ LogOtter.HttpPatch.Tests.PatchTests
✅ CanPatchAddress(serializationEngine: Newtonsoft)
✅ CanPatchAddress(serializationEngine: SystemText)
✅ CanPatchCount(serializationEngine: Newtonsoft)
✅ CanPatchCount(serializationEngine: SystemText)
✅ CanPatchDescription(serializationEngine: Newtonsoft)
✅ CanPatchDescription(serializationEngine: SystemText)
✅ CanPatchDescriptionToNull(serializationEngine: Newtonsoft)
✅ CanPatchDescriptionToNull(serializationEngine: SystemText)
✅ CanPatchEnumUsingString(serializationEngine: Newtonsoft)
✅ CanPatchEnumUsingString(serializationEngine: SystemText)
✅ CanPatchName(serializationEngine: Newtonsoft)
✅ CanPatchName(serializationEngine: SystemText)
✅ CanPatchPeople(serializationEngine: Newtonsoft)
✅ CanPatchPeople(serializationEngine: SystemText)
✅ CantPatchNameToNull(serializationEngine: Newtonsoft)
✅ CantPatchNameToNull(serializationEngine: SystemText)
✅ CantPatchNameToShort(serializationEngine: Newtonsoft)
✅ CantPatchNameToShort(serializationEngine: SystemText)
✅ CantPatchPrimitiveToNull(serializationEngine: Newtonsoft)
✅ CantPatchPrimitiveToNull(serializationEngine: SystemText)
✅ CantPatchWhenViolatingAttributesOnSubObject(serializationEngine: Newtonsoft)
✅ CantPatchWhenViolatingAttributesOnSubObject(serializationEngine: SystemText)
✅ LogOtter.HttpPatch.Tests.SerializationTests
✅ DeserializesWithValue(engine: Newtonsoft)
✅ DeserializesWithValue(engine: SystemText)
✅ MissingValueIsShownAsNotInPatch(engine: Newtonsoft)
✅ MissingValueIsShownAsNotInPatch(engine: SystemText)
✅ RoundTripSerializeWhenIncludedInPatch(engine: Newtonsoft)
✅ RoundTripSerializeWhenNotIncludedInPatch(engine: Newtonsoft)
✅ UndefinedIsShownAsNotInPatch(engine: Newtonsoft)
✅ .test-results/LogOtter.JsonHal.Tests.trx
8 tests were completed in 1s with 8 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
LogOtter.JsonHal.Tests.DeserializeTests | 4✅ | 33ms | ||
LogOtter.JsonHal.Tests.SerializeTests | 4✅ | 33ms |
✅ LogOtter.JsonHal.Tests.DeserializeTests
✅ Deserialize_MultiLinkType
✅ Deserialize_NextOnly
✅ Deserialize_SelfAndNext
✅ Deserialize_SelfOnly
✅ LogOtter.JsonHal.Tests.SerializeTests
✅ Serialize_MultiLinkType
✅ Serialize_NextOnly
✅ Serialize_SelfAndNext
✅ Serialize_SelfOnly
✅ .test-results/LogOtter.Obfuscate.Tests.trx
42 tests were completed in 1s with 42 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
LogOtter.Obfuscate.Tests.ObfuscationTests | 42✅ | 25ms |
✅ LogOtter.Obfuscate.Tests.ObfuscationTests
✅ ObfuscateEmail(email: "", expectedOutput: "")
✅ ObfuscateEmail(email: "b@bobertson.co.uk", expectedOutput: "b****@bobertson.co.uk")
✅ ObfuscateEmail(email: "bo@bobertson.co.uk", expectedOutput: "b****@bobertson.co.uk")
✅ ObfuscateEmail(email: "bob.b@bobertson.co.uk", expectedOutput: "b****@bobertson.co.uk")
✅ ObfuscateEmail(email: "bob.bo@bobertson.co.uk", expectedOutput: "bo****o@bobertson.co.uk")
✅ ObfuscateEmail(email: "bob.bo+bobertson.co.uk", expectedOutput: "****")
✅ ObfuscateEmail(email: "bob.bobertson@10.0.0.1", expectedOutput: "****")
✅ ObfuscateEmail(email: "bob.bobertson@bobertson.co.uk", expectedOutput: "bo****n@bobertson.co.uk")
✅ ObfuscateEmail(email: "bob.bobertson@bobertson", expectedOutput: "****")
✅ ObfuscateEmail(email: "bob.bobertson@gmail.com", expectedOutput: "bo****n@gmail.com")
✅ ObfuscateEmail(email: "bob.bobertson+test1@bobertson.co.uk", expectedOutput: "bo****1@bobertson.co.uk")
✅ ObfuscateEmail(email: "bob@bobertson.co.uk", expectedOutput: "b****@bobertson.co.uk")
✅ ObfuscateEmail(email: "bobb@bobertson.co.uk", expectedOutput: "b****@bobertson.co.uk")
✅ ObfuscateEmail(email: "hello world", expectedOutput: "****")
✅ ObfuscateEmail(email: null, expectedOutput: null)
✅ ObfuscateName(firstName: "", lastName: "", expectedOutput: "")
✅ ObfuscateName(firstName: "", lastName: "Bobertson", expectedOutput: "Bo****")
✅ ObfuscateName(firstName: "", lastName: "May", expectedOutput: "M****")
✅ ObfuscateName(firstName: "", lastName: null, expectedOutput: "")
✅ ObfuscateName(firstName: "Bob", lastName: "", expectedOutput: "B****")
✅ ObfuscateName(firstName: "Bob", lastName: "Bobertson", expectedOutput: "B**** Bo****")
✅ ObfuscateName(firstName: "Bob", lastName: "May", expectedOutput: "B**** M****")
✅ ObfuscateName(firstName: "Bob", lastName: null, expectedOutput: "B****")
✅ ObfuscateName(firstName: "Bobby", lastName: "", expectedOutput: "Bo****")
✅ ObfuscateName(firstName: "Bobby", lastName: "Bobertson", expectedOutput: "Bo**** Bo****")
✅ ObfuscateName(firstName: "Bobby", lastName: "May", expectedOutput: "Bo**** M****")
✅ ObfuscateName(firstName: "Bobby", lastName: null, expectedOutput: "Bo****")
✅ ObfuscateName(firstName: null, lastName: "", expectedOutput: "")
✅ ObfuscateName(firstName: null, lastName: "Bobertson", expectedOutput: "Bo****")
✅ ObfuscateName(firstName: null, lastName: "May", expectedOutput: "M****")
✅ ObfuscateName(firstName: null, lastName: null, expectedOutput: null)
✅ ObfuscatePhone(phoneNumber: " ", expectedOutput: "")
✅ ObfuscatePhone(phoneNumber: " ", expectedOutput: "")
✅ ObfuscatePhone(phoneNumber: "", expectedOutput: "")
✅ ObfuscatePhone(phoneNumber: "\r\n", expectedOutput: "")
✅ ObfuscatePhone(phoneNumber: "+4478901", expectedOutput: "****")
✅ ObfuscatePhone(phoneNumber: "+447890123456", expectedOutput: "+447****56")
✅ ObfuscatePhone(phoneNumber: "01234", expectedOutput: "****")
✅ ObfuscatePhone(phoneNumber: "0123456789", expectedOutput: "****")
✅ ObfuscatePhone(phoneNumber: "07890123456", expectedOutput: "07****56")
✅ ObfuscatePhone(phoneNumber: "foo", expectedOutput: "****")
✅ ObfuscatePhone(phoneNumber: null, expectedOutput: null)
✅ .test-results/LogOtter.ShortGuid.Tests.trx
15 tests were completed in 867ms with 15 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
LogOtter.ShortGuid.Tests.GuidExtensionsTests | 15✅ | 26ms |
✅ LogOtter.ShortGuid.Tests.GuidExtensionsTests
✅ DoesNotDropCharactersWhenSecondHalfLeadsInWithZero
✅ DoesNotDropCharactersWhenThereIsARemainderThatIsLessThanDoubleTheAlphabetSize
✅ GuidsWithSwappedParts_ShouldGenerateDifferentShortGuids
✅ KnownShortGuid_CorrectlyConverts
✅ RandomShortGuid_ShouldHaveCorrectLength
✅ ShortStringsCanBeValidated(shortString: "", isValid: False, reason: "too short")
✅ ShortStringsCanBeValidated(shortString: "AZCkPjP1rt2B8QVN4GhvctDB", isValid: False, reason: "invalid character")
✅ ShortStringsCanBeValidated(shortString: "sZCkPjP1rt2B8QVN4GhvctDB", isValid: True, reason: "is valid")
✅ ShortStringsCanBeValidated(shortString: "sZCkPjP1rt2B8QVN4GhvctDBB", isValid: False, reason: "too long")
✅ TheAlgorithmShouldBeReversibleWithNoLossOfInformation(guidString: "00000035-0000-0000-0000-00000d0e0f10")
✅ TheAlgorithmShouldBeReversibleWithNoLossOfInformation(guidString: "04030201-0605-0007-0000-000c0d0e0f10")
✅ TheAlgorithmShouldBeReversibleWithNoLossOfInformation(guidString: "0a3d2017-7581-4831-ba3c-a46556c87304")
✅ TheAlgorithmShouldBeReversibleWithNoLossOfInformation(guidString: "CA084F5E-AD86-4A71-B722-C857A50F4B47")
✅ TheAlgorithmShouldBeReversibleWithNoLossOfInformation(guidString: "F15E25C2-AD26-4CE9-83CE-E41B2B9557E4")
✅ TheAlgorithmShouldBeReversibleWithNoLossOfInformation(guidString: "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF")
✅ .test-results/LogOtter.SimpleHealthChecks.Tests.trx
25 tests were completed in 1s with 25 passed, 0 failed and 0 skipped.
✅ LogOtter.SimpleHealthChecks.Tests.CacheTests
✅ ReturnsCacheHeaders
✅ ReturnsNoCacheHeaders
✅ LogOtter.SimpleHealthChecks.Tests.DefaultSetupTests
✅ DefaultReturnsCorrectBody(status: Degraded, expectedResponseBody: "Degraded")
✅ DefaultReturnsCorrectBody(status: Healthy, expectedResponseBody: "Healthy")
✅ DefaultReturnsCorrectBody(status: Unhealthy, expectedResponseBody: "Unhealthy")
✅ DefaultReturnsCorrectStatusCode(status: Degraded, expectedStatusCode: 200)
✅ DefaultReturnsCorrectStatusCode(status: Healthy, expectedStatusCode: 200)
✅ DefaultReturnsCorrectStatusCode(status: Unhealthy, expectedStatusCode: 503)
✅ DefaultReturnsTextPlain
✅ LogOtter.SimpleHealthChecks.Tests.IncorrectUriTests
✅ ReturnsNotFoundWhenMappedIncorrectly
✅ ReturnsNotFoundWhenNotMapped
✅ LogOtter.SimpleHealthChecks.Tests.OverrideResponseTests
✅ ReturnsCorrectResponse(status: Degraded, expectedBody: "{\"Status\":\"Degraded\"}")
✅ ReturnsCorrectResponse(status: Healthy, expectedBody: "{\"Status\":\"Healthy\"}")
✅ ReturnsCorrectResponse(status: Unhealthy, expectedBody: "{\"Status\":\"Unhealthy\"}")
✅ LogOtter.SimpleHealthChecks.Tests.OverrideStatusTests
✅ ReturnsCorrectStatusCode(status: Degraded, expectedStatusCode: 231)
✅ ReturnsCorrectStatusCode(status: Healthy, expectedStatusCode: 230)
✅ ReturnsCorrectStatusCode(status: Unhealthy, expectedStatusCode: 520)
✅ LogOtter.SimpleHealthChecks.Tests.PingTests
✅ PingResponse
✅ LogOtter.SimpleHealthChecks.Tests.QueryStringTests
✅ ReturnsNotFoundWhenQueryStringUsedButNotMapped
✅ ReturnsOkQueryStringUsed
✅ LogOtter.SimpleHealthChecks.Tests.SimpleHealthCheckHostOptionsTests
✅ DefaultHost
✅ DefaultPort
✅ DefaultScheme
✅ LogOtter.SimpleHealthChecks.Tests.SimpleHealthCheckOptionsTests
✅ DefaultOptions
✅ ThrowsExceptionWhenIncompleteDictionarySpecified
Loading