refactoring test classes.
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
using IntegrationTests.Infrastructure;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
using MongoDbGenericRepository.Models;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace IntegrationTests
|
||||||
|
{
|
||||||
|
public class PartitionedTKeyTestDocument : TestDoc<Guid>, IPartitionedDocument
|
||||||
|
{
|
||||||
|
public PartitionedTKeyTestDocument()
|
||||||
|
{
|
||||||
|
PartitionKey = "TestPartitionKey";
|
||||||
|
}
|
||||||
|
public string PartitionKey { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
public class CRUDTKeyPartitionedTests : MongoDBTestBase<PartitionedTKeyTestDocument, Guid>
|
||||||
|
{
|
||||||
|
public override string GetClassName()
|
||||||
|
{
|
||||||
|
return "CRUDTKeyPartitionedTests";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
using IntegrationTests.Infrastructure;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
using MongoDbGenericRepository.Models;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace IntegrationTests
|
||||||
|
{
|
||||||
|
public class TKeyTestDocument : TestDoc<Guid>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
public class CRUDTKeyTests : MongoDBTestBase<TKeyTestDocument, Guid>
|
||||||
|
{
|
||||||
|
public override string GetClassName()
|
||||||
|
{
|
||||||
|
return "CreateTKeyTests";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
using IntegrationTests.Infrastructure;
|
|
||||||
using MongoDB.Bson.Serialization.Attributes;
|
|
||||||
using MongoDbGenericRepository.Models;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace IntegrationTests
|
|
||||||
{
|
|
||||||
public class CreateTestsPartitionedTKeyDocument : IDocument<Guid>, IPartitionedDocument
|
|
||||||
{
|
|
||||||
[BsonId]
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public int Version { get; set; }
|
|
||||||
public CreateTestsPartitionedTKeyDocument()
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid();
|
|
||||||
Version = 2;
|
|
||||||
PartitionKey = "TestPartitionKey";
|
|
||||||
}
|
|
||||||
public string PartitionKey { get; set; }
|
|
||||||
public string SomeContent { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CreatePartitionedTKeyTests : BaseMongoDbRepositoryTests<CreateTestsPartitionedTKeyDocument>
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void PartitionedAddOne()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = new CreateTestsPartitionedTKeyDocument();
|
|
||||||
// Act
|
|
||||||
SUT.AddOne<CreateTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey);
|
|
||||||
Assert.AreEqual(1, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task PartitionedAddOneAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = new CreateTestsPartitionedTKeyDocument();
|
|
||||||
// Act
|
|
||||||
await SUT.AddOneAsync<CreateTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey);
|
|
||||||
Assert.AreEqual(1, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void PartitionedAddMany()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = new List<CreateTestsPartitionedTKeyDocument> { new CreateTestsPartitionedTKeyDocument(), new CreateTestsPartitionedTKeyDocument() };
|
|
||||||
// Act
|
|
||||||
SUT.AddMany<CreateTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsPartitionedTKeyDocument, Guid>(e => e.Id == documents[0].Id || e.Id == documents[1].Id, PartitionKey);
|
|
||||||
Assert.AreEqual(2, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task PartitionedAddManyAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = new List<CreateTestsPartitionedTKeyDocument> { new CreateTestsPartitionedTKeyDocument(), new CreateTestsPartitionedTKeyDocument() };
|
|
||||||
// Act
|
|
||||||
await SUT.AddManyAsync<CreateTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsPartitionedTKeyDocument, Guid>(e => e.Id == documents[0].Id || e.Id == documents[1].Id, PartitionKey);
|
|
||||||
Assert.AreEqual(2, count);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
using IntegrationTests.Infrastructure;
|
|
||||||
using MongoDB.Bson.Serialization.Attributes;
|
|
||||||
using MongoDbGenericRepository.Models;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace IntegrationTests
|
|
||||||
{
|
|
||||||
public class CreateTestsTKeyDocument : IDocument<Guid>
|
|
||||||
{
|
|
||||||
[BsonId]
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public int Version { get; set; }
|
|
||||||
public CreateTestsTKeyDocument()
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid();
|
|
||||||
Version = 2;
|
|
||||||
}
|
|
||||||
public string SomeContent { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestFixture]
|
|
||||||
public class CreateTKeyTests : BaseMongoDbRepositoryTests<CreateTestsTKeyDocument>
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void TKeyAddOne()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = new CreateTestsTKeyDocument();
|
|
||||||
// Act
|
|
||||||
SUT.AddOne<CreateTestsTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsTKeyDocument, Guid>(e => e.Id == document.Id);
|
|
||||||
Assert.AreEqual(1, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task TKeyAddOneAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = new CreateTestsTKeyDocument();
|
|
||||||
// Act
|
|
||||||
await SUT.AddOneAsync<CreateTestsTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsTKeyDocument, Guid>(e => e.Id == document.Id);
|
|
||||||
Assert.AreEqual(1, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void TKeyAddMany()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = new List<CreateTestsTKeyDocument> { new CreateTestsTKeyDocument(), new CreateTestsTKeyDocument() };
|
|
||||||
// Act
|
|
||||||
SUT.AddMany<CreateTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsTKeyDocument, Guid>(e => e.Id == documents[0].Id || e.Id == documents[1].Id);
|
|
||||||
Assert.AreEqual(2, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task TKeyAddManyAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = new List<CreateTestsTKeyDocument> { new CreateTestsTKeyDocument(), new CreateTestsTKeyDocument() };
|
|
||||||
// Act
|
|
||||||
await SUT.AddManyAsync<CreateTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
long count = SUT.Count<CreateTestsTKeyDocument, Guid>(e => e.Id == documents[0].Id || e.Id == documents[1].Id);
|
|
||||||
Assert.AreEqual(2, count);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
using IntegrationTests.Infrastructure;
|
|
||||||
using MongoDB.Bson.Serialization.Attributes;
|
|
||||||
using MongoDbGenericRepository.Models;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace IntegrationTests
|
|
||||||
{
|
|
||||||
public class DeleteTestsPartitionedTKeyDocument : IPartitionedDocument, IDocument<Guid>
|
|
||||||
{
|
|
||||||
[BsonId]
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public int Version { get; set; }
|
|
||||||
public DeleteTestsPartitionedTKeyDocument()
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid();
|
|
||||||
Version = 2;
|
|
||||||
PartitionKey = "TestPartitionKey";
|
|
||||||
}
|
|
||||||
public string PartitionKey { get; set; }
|
|
||||||
public string SomeContent { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class DeletePartitionedTKeyTests : BaseMongoDbRepositoryTests<DeleteTestsPartitionedTKeyDocument>
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void PartitionedDeleteOne()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteOne<DeleteTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void PartitionedDeleteOneLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteOne<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task PartitionedDeleteOneAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteOneAsync<DeleteTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task PartitionedDeleteOneAsyncLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsPartitionedTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteOneAsync<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.Id == document.Id, PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task PartitionedDeleteManyAsyncLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = "DeleteManyAsyncLinqContent");
|
|
||||||
SUT.AddMany<DeleteTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteManyAsync<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.SomeContent == "DeleteManyAsyncLinqContent", PartitionKey);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.SomeContent == "DeleteManyAsyncLinqContent", PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task PartitionedDeleteManyAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = "DeleteManyAsyncLinqContent");
|
|
||||||
SUT.AddMany<DeleteTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteManyAsync<DeleteTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.SomeContent == "DeleteManyAsyncLinqContent", PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void PartitionedDeleteManyLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var content = "DeleteManyLinqContent";
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = content);
|
|
||||||
SUT.AddMany<DeleteTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteMany<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.SomeContent == content, PartitionKey);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.SomeContent == content, PartitionKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void PartitionedDeleteMany()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var content = "DeleteManyContent";
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = content);
|
|
||||||
SUT.AddMany<DeleteTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteMany<DeleteTestsPartitionedTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsPartitionedTKeyDocument, Guid>(e => e.SomeContent == content, PartitionKey));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
using IntegrationTests.Infrastructure;
|
|
||||||
using MongoDB.Bson.Serialization.Attributes;
|
|
||||||
using MongoDbGenericRepository.Models;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace IntegrationTests
|
|
||||||
{
|
|
||||||
public class DeleteTestsTKeyDocument : IDocument<Guid>
|
|
||||||
{
|
|
||||||
[BsonId]
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public int Version { get; set; }
|
|
||||||
public DeleteTestsTKeyDocument()
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid();
|
|
||||||
Version = 2;
|
|
||||||
}
|
|
||||||
public string SomeContent { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class DeleteTKeyTests : BaseMongoDbRepositoryTests<DeleteTestsTKeyDocument>
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void DeleteOne()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteOne<DeleteTestsTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.Id == document.Id));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void DeleteOneLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteOne<DeleteTestsTKeyDocument, Guid>(e => e.Id == document.Id);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.Id == document.Id));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task DeleteOneAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteOneAsync<DeleteTestsTKeyDocument, Guid>(document);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.Id == document.Id));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task DeleteOneAsyncLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var document = CreateTestDocument();
|
|
||||||
SUT.AddOne<DeleteTestsTKeyDocument, Guid>(document);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteOneAsync<DeleteTestsTKeyDocument, Guid>(e => e.Id == document.Id);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.Id == document.Id));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task DeleteManyAsyncLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = "DeleteManyAsyncLinqContent");
|
|
||||||
SUT.AddMany<DeleteTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteManyAsync<DeleteTestsTKeyDocument, Guid>(e => e.SomeContent == "DeleteManyAsyncLinqContent");
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.SomeContent == "DeleteManyAsyncLinqContent"));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public async Task DeleteManyAsync()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = "DeleteManyAsyncLinqContent");
|
|
||||||
SUT.AddMany<DeleteTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = await SUT.DeleteManyAsync<DeleteTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.SomeContent == "DeleteManyAsyncLinqContent"));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void DeleteManyLinq()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var content = "DeleteManyLinqContent";
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = content);
|
|
||||||
SUT.AddMany<DeleteTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteMany<DeleteTestsTKeyDocument, Guid>(e => e.SomeContent == content);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.SomeContent == content));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void DeleteMany()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var content = "DeleteManyContent";
|
|
||||||
var documents = CreateTestDocuments(5);
|
|
||||||
documents.ForEach(e => e.SomeContent = content);
|
|
||||||
SUT.AddMany<DeleteTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Act
|
|
||||||
var result = SUT.DeleteMany<DeleteTestsTKeyDocument, Guid>(documents);
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(5, result);
|
|
||||||
Assert.IsFalse(SUT.Any<DeleteTestsTKeyDocument, Guid>(e => e.SomeContent == content));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace IntegrationTests.Infrastructure
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A class holding global variables.
|
||||||
|
/// </summary>
|
||||||
|
public static class GlobalVariables
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A random number generator.
|
||||||
|
/// </summary>
|
||||||
|
public static Random Random = new Random();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,335 @@
|
|||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
using MongoDbGenericRepository.Models;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IntegrationTests.Infrastructure
|
||||||
|
{
|
||||||
|
public class TestDoc<TKey> : IDocument<TKey>
|
||||||
|
where TKey : IEquatable<TKey>
|
||||||
|
{
|
||||||
|
[BsonId]
|
||||||
|
public TKey Id { get; set; }
|
||||||
|
public int Version { get; set; }
|
||||||
|
|
||||||
|
public TestDoc()
|
||||||
|
{
|
||||||
|
InitializeFields();
|
||||||
|
Version = 2;
|
||||||
|
Nested = new Nested
|
||||||
|
{
|
||||||
|
SomeDate = DateTime.UtcNow
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SomeContent { get; set; }
|
||||||
|
|
||||||
|
public Nested Nested { get; set; }
|
||||||
|
|
||||||
|
private void InitializeFields()
|
||||||
|
{
|
||||||
|
var idTypeName = typeof(TKey).Name;
|
||||||
|
switch (idTypeName)
|
||||||
|
{
|
||||||
|
case "Guid":
|
||||||
|
Id = (TKey)(object)Guid.NewGuid();
|
||||||
|
break;
|
||||||
|
case "Int16":
|
||||||
|
Id = (TKey)(object)GlobalVariables.Random.Next(1, short.MaxValue);
|
||||||
|
break;
|
||||||
|
case "Int32":
|
||||||
|
Id = (TKey)(object)GlobalVariables.Random.Next(1, int.MaxValue);
|
||||||
|
break;
|
||||||
|
case "Int64":
|
||||||
|
Id = (TKey)(object)(GlobalVariables.Random.NextLong(1, long.MaxValue));
|
||||||
|
break;
|
||||||
|
case "String":
|
||||||
|
Id = (TKey)(object)Guid.NewGuid().ToString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
public abstract class MongoDBTestBase<T, TKey>
|
||||||
|
where T: TestDoc<TKey>, new()
|
||||||
|
where TKey : IEquatable<TKey>
|
||||||
|
{
|
||||||
|
public T CreateTestDocument()
|
||||||
|
{
|
||||||
|
return new T();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract string GetClassName();
|
||||||
|
|
||||||
|
public List<T> CreateTestDocuments(int numberOfDocumentsToCreate)
|
||||||
|
{
|
||||||
|
var docs = new List<T>();
|
||||||
|
for (var i = 0; i < numberOfDocumentsToCreate; i++)
|
||||||
|
{
|
||||||
|
docs.Add(new T());
|
||||||
|
}
|
||||||
|
return docs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The partition key for the collection, if any
|
||||||
|
/// </summary>
|
||||||
|
protected string PartitionKey { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// the name of the test class
|
||||||
|
/// </summary>
|
||||||
|
protected string TestClassName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The name of the document used for tests
|
||||||
|
/// </summary>
|
||||||
|
protected string DocumentTypeName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SUT: System Under Test
|
||||||
|
/// </summary>
|
||||||
|
protected static ITestRepository SUT { get; set; }
|
||||||
|
|
||||||
|
public MongoDBTestBase()
|
||||||
|
{
|
||||||
|
var type = CreateTestDocument();
|
||||||
|
DocumentTypeName = type.GetType().FullName;
|
||||||
|
if (type is IPartitionedDocument)
|
||||||
|
{
|
||||||
|
PartitionKey = ((IPartitionedDocument)type).PartitionKey;
|
||||||
|
}
|
||||||
|
TestClassName = GetClassName();
|
||||||
|
}
|
||||||
|
|
||||||
|
[OneTimeSetUp]
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
var connectionString = ConfigurationManager.ConnectionStrings["MongoDbTests"].ConnectionString;
|
||||||
|
SUT = new TestRepository(connectionString, "MongoDbTests");
|
||||||
|
}
|
||||||
|
|
||||||
|
[OneTimeTearDown]
|
||||||
|
public void Cleanup()
|
||||||
|
{
|
||||||
|
// We drop the collection at the end of each test session.
|
||||||
|
if (!string.IsNullOrEmpty(PartitionKey))
|
||||||
|
{
|
||||||
|
SUT.DropTestCollection<T>(PartitionKey);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SUT.DropTestCollection<T>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Add
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AddOne()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var document = new T();
|
||||||
|
// Act
|
||||||
|
SUT.AddOne<T, TKey>(document);
|
||||||
|
// Assert
|
||||||
|
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T, TKey>(e => e.Id.Equals(document.Id))
|
||||||
|
: SUT.Count<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||||
|
Assert.AreEqual(1, count, GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task AddOneAsync()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var document = new T();
|
||||||
|
// Act
|
||||||
|
await SUT.AddOneAsync<T, TKey>(document);
|
||||||
|
// Assert
|
||||||
|
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T, TKey>(e => e.Id.Equals(document.Id))
|
||||||
|
: SUT.Count<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||||
|
Assert.AreEqual(1, count, GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AddMany()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var documents = new List<T> { new T(), new T() };
|
||||||
|
// Act
|
||||||
|
SUT.AddMany<T, TKey>(documents);
|
||||||
|
// Assert
|
||||||
|
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T, TKey>(e => e.Id.Equals(documents[0].Id)
|
||||||
|
|| e.Id.Equals(documents[1].Id))
|
||||||
|
: SUT.Count<T, TKey>(e => e.Id.Equals(documents[0].Id)
|
||||||
|
|| e.Id.Equals(documents[1].Id), PartitionKey);
|
||||||
|
Assert.AreEqual(2, count, GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task AddManyAsync()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var documents = new List<T> { new T(), new T() };
|
||||||
|
// Act
|
||||||
|
await SUT.AddManyAsync<T, TKey>(documents);
|
||||||
|
// Assert
|
||||||
|
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T, TKey>(e => e.Id.Equals(documents[0].Id)
|
||||||
|
|| e.Id.Equals(documents[1].Id))
|
||||||
|
: SUT.Count<T, TKey>(e => e.Id.Equals(documents[0].Id)
|
||||||
|
|| e.Id.Equals(documents[1].Id), PartitionKey);
|
||||||
|
Assert.AreEqual(2, count, GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion Add
|
||||||
|
|
||||||
|
#region Delete
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void DeleteOne()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var document = CreateTestDocument();
|
||||||
|
SUT.AddOne<T, TKey>(document);
|
||||||
|
// Act
|
||||||
|
var result = SUT.DeleteOne<T, TKey>(document);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void DeleteOneLinq()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var document = CreateTestDocument();
|
||||||
|
SUT.AddOne<T, TKey>(document);
|
||||||
|
// Act
|
||||||
|
var result = SUT.DeleteOne<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task DeleteOneAsync()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var document = CreateTestDocument();
|
||||||
|
SUT.AddOne<T, TKey>(document);
|
||||||
|
// Act
|
||||||
|
var result = await SUT.DeleteOneAsync<T, TKey>(document);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task DeleteOneAsyncLinq()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var document = CreateTestDocument();
|
||||||
|
SUT.AddOne<T, TKey>(document);
|
||||||
|
// Act
|
||||||
|
var result = await SUT.DeleteOneAsync<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.Id.Equals(document.Id), PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task DeleteManyAsyncLinq()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var criteria = $"{GetTestName()}.{DocumentTypeName}";
|
||||||
|
var documents = CreateTestDocuments(5);
|
||||||
|
documents.ForEach(e => e.SomeContent = criteria);
|
||||||
|
SUT.AddMany<T, TKey>(documents);
|
||||||
|
// Act
|
||||||
|
var result = await SUT.DeleteManyAsync<T, TKey>(e => e.SomeContent == criteria, PartitionKey);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(5, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.SomeContent == criteria, PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task DeleteManyAsync()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var criteria = $"{GetTestName()}.{DocumentTypeName}";
|
||||||
|
var documents = CreateTestDocuments(5);
|
||||||
|
documents.ForEach(e => e.SomeContent = criteria);
|
||||||
|
SUT.AddMany<T, TKey>(documents);
|
||||||
|
// Act
|
||||||
|
var result = await SUT.DeleteManyAsync<T, TKey>(documents);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(5, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.SomeContent == criteria, PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void DeleteManyLinq()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var criteria = $"{GetTestName()}.{DocumentTypeName}";
|
||||||
|
var documents = CreateTestDocuments(5);
|
||||||
|
documents.ForEach(e => e.SomeContent = criteria);
|
||||||
|
SUT.AddMany<T, TKey>(documents);
|
||||||
|
// Act
|
||||||
|
var result = SUT.DeleteMany<T, TKey>(e => e.SomeContent == criteria, PartitionKey);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(5, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.SomeContent == criteria, PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void DeleteMany()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var criteria = $"{GetTestName()}.{DocumentTypeName}";
|
||||||
|
var documents = CreateTestDocuments(5);
|
||||||
|
documents.ForEach(e => e.SomeContent = criteria);
|
||||||
|
SUT.AddMany<T, TKey>(documents);
|
||||||
|
// Act
|
||||||
|
var result = SUT.DeleteMany<T, TKey>(documents);
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(5, result);
|
||||||
|
Assert.IsFalse(SUT.Any<T, TKey>(e => e.SomeContent == criteria, PartitionKey), GetTestName());
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Delete
|
||||||
|
|
||||||
|
#region Project
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endregion Project
|
||||||
|
|
||||||
|
|
||||||
|
#region Test Utils
|
||||||
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||||
|
private string GetCurrentMethod()
|
||||||
|
{
|
||||||
|
StackTrace st = new StackTrace();
|
||||||
|
StackFrame sf = st.GetFrame(1);
|
||||||
|
|
||||||
|
return sf.GetMethod().Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetTestName()
|
||||||
|
{
|
||||||
|
return $"{TestClassName}.{GetCurrentMethod()}";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Test Utils
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace IntegrationTests.Infrastructure
|
||||||
|
{
|
||||||
|
// Thanks BlueRaja - Danny Pflughoeft https://stackoverflow.com/a/13095144/5103354
|
||||||
|
/// <summary>
|
||||||
|
/// Extensions for the random number generator <see cref="Random"/>
|
||||||
|
/// </summary>
|
||||||
|
public static class RandomExtensions
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a random long from min (inclusive) to max (exclusive)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="random">The given random instance</param>
|
||||||
|
/// <param name="min">The inclusive minimum bound</param>
|
||||||
|
/// <param name="max">The exclusive maximum bound. Must be greater than min</param>
|
||||||
|
public static long NextLong(this Random random, long min, long max)
|
||||||
|
{
|
||||||
|
if (max <= min)
|
||||||
|
throw new ArgumentOutOfRangeException("max", "max must be > min!");
|
||||||
|
|
||||||
|
//Working with ulong so that modulo works correctly with values > long.MaxValue
|
||||||
|
ulong uRange = (ulong)(max - min);
|
||||||
|
|
||||||
|
//Prevent a modulo bias; see https://stackoverflow.com/a/10984975/238419
|
||||||
|
//for more information.
|
||||||
|
//In the worst case, the expected number of calls is 2 (though usually it's
|
||||||
|
//much closer to 1) so this loop doesn't really hurt performance at all.
|
||||||
|
ulong ulongRand;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
byte[] buf = new byte[8];
|
||||||
|
random.NextBytes(buf);
|
||||||
|
ulongRand = (ulong)BitConverter.ToInt64(buf, 0);
|
||||||
|
} while (ulongRand > ulong.MaxValue - ((ulong.MaxValue % uRange) + 1) % uRange);
|
||||||
|
|
||||||
|
return (long)(ulongRand % uRange) + min;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a random long from 0 (inclusive) to max (exclusive)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="random">The given random instance</param>
|
||||||
|
/// <param name="max">The exclusive maximum bound. Must be greater than 0</param>
|
||||||
|
public static long NextLong(this Random random, long max)
|
||||||
|
{
|
||||||
|
return random.NextLong(0, max);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a random long over all possible values of long (except long.MaxValue, similar to
|
||||||
|
/// random.Next())
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="random">The given random instance</param>
|
||||||
|
public static long NextLong(this Random random)
|
||||||
|
{
|
||||||
|
return random.NextLong(long.MinValue, long.MaxValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,48 +30,37 @@
|
|||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="DnsClient, Version=1.0.7.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\DnsClient.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="MongoDB.Bson, Version=2.5.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="MongoDB.Bson, Version=2.5.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\MongoDB.Bson.dll</HintPath>
|
<HintPath>..\packages\MongoDB.Bson.2.5.0\lib\net45\MongoDB.Bson.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MongoDB.Driver, Version=2.5.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="MongoDB.Driver, Version=2.5.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\MongoDB.Driver.dll</HintPath>
|
<HintPath>..\packages\MongoDB.Driver.2.5.0\lib\net45\MongoDB.Driver.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MongoDB.Driver.Core, Version=2.5.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="MongoDB.Driver.Core, Version=2.5.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\MongoDB.Driver.Core.dll</HintPath>
|
<HintPath>..\packages\MongoDB.Driver.Core.2.5.0\lib\net45\MongoDB.Driver.Core.dll</HintPath>
|
||||||
</Reference>
|
|
||||||
<Reference Include="MongoDbGenericRepository, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\MongoDbGenericRepository.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="nunit.framework, Version=3.9.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
<Reference Include="nunit.framework, Version=3.9.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\NUnit.3.9.0\lib\net45\nunit.framework.dll</HintPath>
|
<HintPath>..\packages\NUnit.3.9.0\lib\net45\nunit.framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Buffers, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\System.Buffers.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\MongoDbGenericRepository.1.3.4\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="CreateTKeyPartitionedTests.cs" />
|
|
||||||
<Compile Include="CreateTKeyTests.cs" />
|
|
||||||
<Compile Include="DeletePartitionedTKeyTests.cs" />
|
|
||||||
<Compile Include="DeletePartitionedTests.cs" />
|
|
||||||
<Compile Include="DeleteTKeyTests.cs" />
|
|
||||||
<Compile Include="DeleteTests.cs" />
|
<Compile Include="DeleteTests.cs" />
|
||||||
|
<Compile Include="TKeyPartitionedCollectionNameAttributeTests.cs" />
|
||||||
|
<Compile Include="CRUDTKeyPartitionedTests.cs" />
|
||||||
|
<Compile Include="CRUDTKeyTests.cs" />
|
||||||
|
<Compile Include="DeletePartitionedTests.cs" />
|
||||||
<Compile Include="GroupTests\GroupingTests.cs" />
|
<Compile Include="GroupTests\GroupingTests.cs" />
|
||||||
<Compile Include="Infrastructure\BaseMongoDbRepositoryTests.cs" />
|
<Compile Include="Infrastructure\BaseMongoDbRepositoryTests.cs" />
|
||||||
<Compile Include="CreatePartitionedTests.cs" />
|
<Compile Include="CreatePartitionedTests.cs" />
|
||||||
<Compile Include="Infrastructure\Child.cs" />
|
<Compile Include="Infrastructure\Child.cs" />
|
||||||
|
<Compile Include="Infrastructure\GlobalVariables.cs" />
|
||||||
<Compile Include="Infrastructure\ITestRepository.cs" />
|
<Compile Include="Infrastructure\ITestRepository.cs" />
|
||||||
|
<Compile Include="Infrastructure\MongoDBTestBase.cs" />
|
||||||
|
<Compile Include="Infrastructure\RandomExtensions.cs" />
|
||||||
<Compile Include="Infrastructure\TestRepository.cs" />
|
<Compile Include="Infrastructure\TestRepository.cs" />
|
||||||
<Compile Include="CreateTests.cs" />
|
<Compile Include="CreateTests.cs" />
|
||||||
<Compile Include="ProjectPartitionedTKeyTests.cs" />
|
<Compile Include="ProjectPartitionedTKeyTests.cs" />
|
||||||
@@ -97,5 +86,11 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
|
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\MongoDbGenericRepository\MongoDbGenericRepository.csproj">
|
||||||
|
<Project>{efc776c4-2af3-440c-be80-3fbe335817a5}</Project>
|
||||||
|
<Name>MongoDbGenericRepository</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
using IntegrationTests.Infrastructure;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
using MongoDbGenericRepository.Attributes;
|
||||||
|
using MongoDbGenericRepository.Models;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace IntegrationTests
|
||||||
|
{
|
||||||
|
[CollectionName("TestingCollectionNameAttributePartitionedTKey")]
|
||||||
|
public class TKeyPartitionedCollectionNameDoc : TestDoc<Guid>, IPartitionedDocument
|
||||||
|
{
|
||||||
|
public TKeyPartitionedCollectionNameDoc()
|
||||||
|
{
|
||||||
|
PartitionKey = "TestPartitionKey";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string PartitionKey { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TKeyPartitionedCollectionNameAttributeTests : MongoDBTestBase<TKeyPartitionedCollectionNameDoc, Guid>
|
||||||
|
{
|
||||||
|
public override string GetClassName()
|
||||||
|
{
|
||||||
|
return "TKeyPartitionedCollectionNameAttributeTests";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
<package id="MongoDB.Bson" version="2.5.0" targetFramework="net461" />
|
<package id="MongoDB.Bson" version="2.5.0" targetFramework="net461" />
|
||||||
<package id="MongoDB.Driver" version="2.5.0" targetFramework="net461" />
|
<package id="MongoDB.Driver" version="2.5.0" targetFramework="net461" />
|
||||||
<package id="MongoDB.Driver.Core" version="2.5.0" targetFramework="net461" />
|
<package id="MongoDB.Driver.Core" version="2.5.0" targetFramework="net461" />
|
||||||
<package id="MongoDbGenericRepository" version="1.3.4" targetFramework="net461" />
|
|
||||||
<package id="NUnit" version="3.9.0" targetFramework="net461" />
|
<package id="NUnit" version="3.9.0" targetFramework="net461" />
|
||||||
<package id="NUnit.ConsoleRunner" version="3.7.0" targetFramework="net461" />
|
<package id="NUnit.ConsoleRunner" version="3.7.0" targetFramework="net461" />
|
||||||
<package id="System.Buffers" version="4.3.0" targetFramework="net461" />
|
<package id="System.Buffers" version="4.3.0" targetFramework="net461" />
|
||||||
|
|||||||
@@ -2,6 +2,13 @@
|
|||||||
|
|
||||||
namespace MongoDbGenericRepository.Attributes
|
namespace MongoDbGenericRepository.Attributes
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This attribute allows you to specify of the name of the collection.
|
||||||
|
/// Added at commit c117bf2a7fee378f1e02199dea9b2023a7089ee2 by https://github.com/Etchelon
|
||||||
|
/// who has included the CollectionName attribute into the repo to give another choice to the user on how
|
||||||
|
/// to name their collections.
|
||||||
|
/// The attribute takes precedence of course, and if not present the library will fall back to your Pluralize method.
|
||||||
|
/// </summary>
|
||||||
[AttributeUsage(AttributeTargets.Class)]
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
public class CollectionNameAttribute : Attribute
|
public class CollectionNameAttribute : Attribute
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user