From bd69797d572d96549d1d0781898fd6ce95472b07 Mon Sep 17 00:00:00 2001 From: alexandre-spieser Date: Sun, 27 Aug 2017 18:46:42 +0000 Subject: [PATCH] more tests to validate partitioned collection support --- IntegrationTests/IntegrationTests.csproj | 1 + IntegrationTests/ReadPartitionedTests.cs | 169 +++++++++++++++++++++++ IntegrationTests/ReadTests.cs | 31 ++++- 3 files changed, 196 insertions(+), 5 deletions(-) create mode 100644 IntegrationTests/ReadPartitionedTests.cs diff --git a/IntegrationTests/IntegrationTests.csproj b/IntegrationTests/IntegrationTests.csproj index 39bf8af..9567113 100644 --- a/IntegrationTests/IntegrationTests.csproj +++ b/IntegrationTests/IntegrationTests.csproj @@ -62,6 +62,7 @@ + diff --git a/IntegrationTests/ReadPartitionedTests.cs b/IntegrationTests/ReadPartitionedTests.cs new file mode 100644 index 0000000..e76609b --- /dev/null +++ b/IntegrationTests/ReadPartitionedTests.cs @@ -0,0 +1,169 @@ +using IntegrationTests.Infrastructure; +using MongoDbGenericRepository.Models; +using NUnit.Framework; +using System; +using System.Threading.Tasks; + +namespace IntegrationTests +{ + public class ReadTestsPartitionedDocument : PartitionedDocument + { + public ReadTestsPartitionedDocument() : base("TestPartitionKey") + { + Version = 1; + } + public string SomeContent { get; set; } + } + + public class ReadPartitionedTests : BaseMongoDbRepositoryTests + { + [Test] + public async Task PartitionedGetById() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = await SUT.GetByIdAsync(document.Id, PartitionKey); + // Assert + Assert.IsNotNull(result); + } + + [Test] + public async Task PartitionedGetOneAsync() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = await SUT.GetOneAsync(x => x.Id == document.Id, PartitionKey); + // Assert + Assert.IsNotNull(result); + } + + [Test] + public void PartitionedGetOne() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = SUT.GetOne(x => x.Id == document.Id, PartitionKey); + // Assert + Assert.IsNotNull(result); + } + + [Test] + public void PartitionedGetCursor() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var cursor = SUT.GetCursor(x => x.Id == document.Id, PartitionKey); + var count = cursor.Count(); + // Assert + Assert.AreEqual(1, count); + } + + [Test] + public async Task PartitionedAnyAsyncReturnsTrue() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = await SUT.AnyAsync(x => x.Id == document.Id, PartitionKey); + // Assert + Assert.AreEqual(true, result); + } + + [Test] + public async Task PartitionedAnyAsyncReturnsFalse() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = await SUT.AnyAsync(x => x.Id == Guid.NewGuid(), PartitionKey); + // Assert + Assert.AreEqual(false, result); + } + + [Test] + public void PartitionedAnyReturnsTrue() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = SUT.Any(x => x.Id == document.Id, PartitionKey); + // Assert + Assert.AreEqual(true, result); + } + + [Test] + public void PartitionedAnyReturnsFalse() + { + // Arrange + var document = CreateTestDocument(); + SUT.AddOne(document); + // Act + var result = SUT.Any(x => x.Id == Guid.NewGuid(), PartitionKey); + // Assert + Assert.AreEqual(false, result); + } + + [Test] + public async Task PartitionedGetAllAsync() + { + // Arrange + var documents = CreateTestDocuments(5); + documents.ForEach(e => e.SomeContent = "GetAllAsyncContent"); + SUT.AddMany(documents); + // Act + var result = await SUT.GetAllAsync(x => x.SomeContent == "GetAllAsyncContent", PartitionKey); + // Assert + Assert.AreEqual(5, result.Count); + } + + [Test] + public void PartitionedGetAll() + { + // Arrange + var documents = CreateTestDocuments(5); + documents.ForEach(e => e.SomeContent = "GetAllContent"); + SUT.AddMany(documents); + // Act + var result = SUT.GetAll(x => x.SomeContent == "GetAllContent", PartitionKey); + // Assert + Assert.AreEqual(5, result.Count); + } + + [Test] + public async Task PartitionedCountAsync() + { + // Arrange + var documents = CreateTestDocuments(5); + documents.ForEach(e => e.SomeContent = "CountAsyncContent"); + SUT.AddMany(documents); + // Act + var result = await SUT.CountAsync(x => x.SomeContent == "CountAsyncContent", PartitionKey); + // Assert + Assert.AreEqual(5, result); + } + + [Test] + public void PartitionedCount() + { + // Arrange + var documents = CreateTestDocuments(5); + documents.ForEach(e => e.SomeContent = "CountContent"); + SUT.AddMany(documents); + // Act + var result = SUT.Count(x => x.SomeContent == "CountContent", PartitionKey); + // Assert + Assert.AreEqual(5, result); + } + } +} diff --git a/IntegrationTests/ReadTests.cs b/IntegrationTests/ReadTests.cs index 3ef6031..ccdf48c 100644 --- a/IntegrationTests/ReadTests.cs +++ b/IntegrationTests/ReadTests.cs @@ -54,11 +54,6 @@ namespace IntegrationTests Assert.IsNotNull(result); } - private class ProjectClass - { - public string Content { get; set; } - } - [Test] public void GetCursor() { @@ -145,5 +140,31 @@ namespace IntegrationTests // Assert Assert.AreEqual(5, result.Count); } + + [Test] + public async Task CountAsync() + { + // Arrange + var documents = CreateTestDocuments(5); + documents.ForEach(e => e.SomeContent = "CountAsyncContent"); + SUT.AddMany(documents); + // Act + var result = await SUT.CountAsync(x => x.SomeContent == "CountAsyncContent"); + // Assert + Assert.AreEqual(5, result); + } + + [Test] + public void Count() + { + // Arrange + var documents = CreateTestDocuments(5); + documents.ForEach(e => e.SomeContent = "CountContent"); + SUT.AddMany(documents); + // Act + var result = SUT.Count(x => x.SomeContent == "CountContent"); + // Assert + Assert.AreEqual(5, result); + } } }