using MongoDB.Bson; using MongoDbGenericRepository; using System; namespace CoreIntegrationTests.Infrastructure { public interface ITestRepository : IBaseMongoRepository where TKey : IEquatable { void DropTestCollection(); void DropTestCollection(string partitionKey); } public class TestTKeyRepository : BaseMongoRepository, ITestRepository where TKey : IEquatable { const string connectionString = "mongodb://test:Test123!@10.0.3.4:27017/MongoDbTests"; private static readonly ITestRepository _instance = new TestTKeyRepository(connectionString); /// private TestTKeyRepository(string connectionString) : base(connectionString) { } public static ITestRepository Instance { get { return _instance; } } public void DropTestCollection() { MongoDbContext.DropCollection(); } public void DropTestCollection(string partitionKey) { MongoDbContext.DropCollection(partitionKey); } } /// /// A singleton implementation of the TestRepository /// public sealed class TestRepository : BaseMongoRepository, ITestRepository { const string connectionString = "mongodb://test:Test123!@10.0.3.4:27017"; private static readonly ITestRepository _instance = new TestRepository(connectionString, "MongoDbTests"); // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static TestRepository() { } /// private TestRepository(string connectionString, string databaseName) : base(connectionString, databaseName) { } public static ITestRepository Instance { get { return _instance; } } public void DropTestCollection() { MongoDbContext.DropCollection(); } public void DropTestCollection(string partitionKey) { MongoDbContext.DropCollection(partitionKey); } } }