using IntegrationTests.Infrastructure; using MongoDB.Bson.Serialization.Attributes; using MongoDbGenericRepository.Models; using NUnit.Framework; using System; using System.Threading.Tasks; namespace IntegrationTests { public class ReadTestsTKeyDocument : IDocument { [BsonId] public Guid Id { get; set; } public int Version { get; set; } public ReadTestsTKeyDocument() { Id = Guid.NewGuid(); Version = 2; } public string SomeContent { get; set; } } [TestFixture] public class ReadTKeyTests : BaseMongoDbRepositoryTests { [Test] public async Task GetByIdAsync() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = await SUT.GetByIdAsync(document.Id); // Assert Assert.IsNotNull(result); } [Test] public void GetById() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = SUT.GetById(document.Id); // Assert Assert.IsNotNull(result); } [Test] public async Task GetOneAsync() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = await SUT.GetOneAsync(x => x.Id == document.Id); // Assert Assert.IsNotNull(result); } [Test] public void GetOne() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = SUT.GetOne(x => x.Id == document.Id); // Assert Assert.IsNotNull(result); } [Test] public void GetCursor() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var cursor = SUT.GetCursor(x => x.Id == document.Id); var count = cursor.Count(); // Assert Assert.AreEqual(1, count); } [Test] public async Task AnyAsyncReturnsTrue() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = await SUT.AnyAsync(x => x.Id == document.Id); // Assert Assert.AreEqual(true, result); } [Test] public async Task AnyAsyncReturnsFalse() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = await SUT.AnyAsync(x => x.Id == Guid.NewGuid()); // Assert Assert.AreEqual(false, result); } [Test] public void AnyReturnsTrue() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = SUT.Any(x => x.Id == document.Id); // Assert Assert.AreEqual(true, result); } [Test] public void AnyReturnsFalse() { // Arrange var document = CreateTestDocument(); SUT.AddOne(document); // Act var result = SUT.Any(x => x.Id == Guid.NewGuid()); // Assert Assert.AreEqual(false, result); } [Test] public async Task GetAllAsync() { // Arrange var documents = CreateTestDocuments(5); documents.ForEach(e => e.SomeContent = "GetAllAsyncContent"); SUT.AddMany(documents); // Act var result = await SUT.GetAllAsync(x => x.SomeContent == "GetAllAsyncContent"); // Assert Assert.AreEqual(5, result.Count); } [Test] public void GetAll() { // Arrange var documents = CreateTestDocuments(5); documents.ForEach(e => e.SomeContent = "GetAllContent"); SUT.AddMany(documents); // Act var result = SUT.GetAll(x => x.SomeContent == "GetAllContent"); // 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); } } }