public async Task ShouldDropStorageAsync() { // Given const string collectionName = nameof(ShouldDropStorageAsync); var connection = MongoTestHelpers.GetConnection(); var database = connection.GetDatabase(); database.DropCollection(collectionName); var documentMetadata = new DocumentMetadata { Type = collectionName }; // When var storageManager = new MongoDocumentStorageManager(connection); await storageManager.CreateStorageAsync(documentMetadata); var collection = database.GetCollection <DynamicWrapper>(collectionName); var collectionContent = new[] { new DynamicWrapper(), new DynamicWrapper(), new DynamicWrapper() }; collection.InsertMany(collectionContent); var collectionCountBeforeDrop = collection.Count(Builders <DynamicWrapper> .Filter.Empty); await storageManager.DropStorageAsync(collectionName); var collectionCountAfterDrop = collection.Count(Builders <DynamicWrapper> .Filter.Empty); // Then Assert.AreEqual(collectionContent.Length, collectionCountBeforeDrop); Assert.AreEqual(0, collectionCountAfterDrop); }
public async Task ShouldDropDatabaseAsync() { // Given var connection = MongoTestHelpers.GetConnection(); // When var database = connection.GetDatabase(); var collection1 = database.GetCollection <DynamicWrapper>("DropDatabaseCollection1"); var collection2 = database.GetCollection <DynamicWrapper>("DropDatabaseCollection2"); collection1.InsertMany(new[] { new DynamicWrapper(), new DynamicWrapper() }); collection2.InsertMany(new[] { new DynamicWrapper(), new DynamicWrapper(), new DynamicWrapper() }); var collectionSizeBeforeDrop1 = collection1.Count(Builders <DynamicWrapper> .Filter.Empty); var collectionSizeBeforeDrop2 = collection2.Count(Builders <DynamicWrapper> .Filter.Empty); await connection.DropDatabaseAsync(); var collectionSizeAfterDrop1 = collection1.Count(Builders <DynamicWrapper> .Filter.Empty); var collectionSizeAfterDrop2 = collection2.Count(Builders <DynamicWrapper> .Filter.Empty); // Then Assert.AreEqual(2, collectionSizeBeforeDrop1); Assert.AreEqual(3, collectionSizeBeforeDrop2); Assert.AreEqual(0, collectionSizeAfterDrop1); Assert.AreEqual(0, collectionSizeAfterDrop2); }
public void ShouldGetDatabase() { // Given var connection = MongoTestHelpers.GetConnection(); // When var database = connection.GetDatabase(); // Then Assert.IsNotNull(database); }
public async Task ShouldReturnsDatabaseStatus() { // Given var connection = MongoTestHelpers.GetConnection(); // When var status = await connection.GetDatabaseStatusAsync(); // Then Assert.IsNotNull(status); Assert.AreEqual(MongoTestHelpers.DatabaseName, status["db"]); }
public void ShouldSaveDynamicWrapperWithXmlDate() { // Given var date1 = DateTime.Today.AddDays(1); var date2 = DateTime.Today.AddDays(2); var date3 = DateTime.Today.AddDays(3); var instance = new DynamicWrapper { { "_id", 1 }, { "DateProperty", (Date)date1 }, { "NullableDateProperty", (Date)date2 }, { "ComplexProperty", new DynamicWrapper { { "DateProperty", (Date)date3 } } } }; var converters = new IMemberValueConverter[] { new XmlDateMemberValueConverter() }; var classStorage = MongoTestHelpers.GetEmptyStorageProvider <XmlDateClass>(nameof(ShouldSaveDynamicWrapperWithXmlDate), converters); var dynamicStorage = MongoTestHelpers.GetStorageProvider(nameof(ShouldSaveDynamicWrapperWithXmlDate), converters); // When dynamicStorage.InsertOne(instance); var classInstance = classStorage.Find().FirstOrDefault(); var dynamicInstance = dynamicStorage.Find().FirstOrDefault(); // Then Assert.IsNotNull(classInstance); Assert.AreEqual(date1, classInstance.DateProperty); Assert.AreEqual(date2, classInstance.NullableDateProperty); Assert.IsNotNull(classInstance.ComplexProperty); Assert.AreEqual(date3, classInstance.ComplexProperty.DateProperty); Assert.IsNull(classInstance.ComplexProperty.NullableDateProperty); Assert.IsNotNull(dynamicInstance); Assert.AreEqual(((Date)date1).UnixTime, dynamicInstance["DateProperty"]); Assert.AreEqual(((Date)date2).UnixTime, dynamicInstance["NullableDateProperty"]); Assert.IsNotNull(dynamicInstance["ComplexProperty"]); Assert.AreEqual(((Date)date3).UnixTime, ((DynamicWrapper)dynamicInstance["ComplexProperty"])["DateProperty"]); Assert.IsNull(((DynamicWrapper)dynamicInstance["ComplexProperty"])["NullableDateProperty"]); }
public void ShouldSaveDynamicWrapperWithDate() { // Given var date1 = Date.Now.AddDays(1); var date2 = Date.Now.AddDays(2); var date3 = Date.Now.AddDays(3); var instance = new DynamicWrapper { { "_id", 1 }, { "DateProperty", date1 }, { "NullableDateProperty", date2 }, { "ComplexProperty", new DynamicWrapper { { "DateProperty", date3 } } } }; var classStorage = MongoTestHelpers.GetEmptyStorageProvider <DateClassExample>(nameof(ShouldSaveDynamicWrapperWithDate)); var dynamicStorage = MongoTestHelpers.GetStorageProvider(nameof(ShouldSaveDynamicWrapperWithDate)); // When dynamicStorage.InsertOne(instance); var classInstance = classStorage.Find().FirstOrDefault(); var dynamicInstance = dynamicStorage.Find().FirstOrDefault(); // Then Assert.IsNotNull(classInstance); Assert.AreEqual(date1, classInstance.DateProperty); Assert.AreEqual(date2, classInstance.NullableDateProperty); Assert.IsNotNull(classInstance.ComplexProperty); Assert.AreEqual(date3, classInstance.ComplexProperty.DateProperty); Assert.IsNull(classInstance.ComplexProperty.NullableDateProperty); Assert.IsNotNull(dynamicInstance); Assert.AreEqual(date1.UnixTime, dynamicInstance["DateProperty"]); Assert.AreEqual(date2.UnixTime, dynamicInstance["NullableDateProperty"]); Assert.IsNotNull(dynamicInstance["ComplexProperty"]); Assert.AreEqual(date3.UnixTime, ((DynamicWrapper)dynamicInstance["ComplexProperty"])["DateProperty"]); Assert.IsNull(((DynamicWrapper)dynamicInstance["ComplexProperty"])["NullableDateProperty"]); }
public void ShouldSaveDynamicWrapperWithTime() { // Given var time1 = Time.Now.AddDays(1); var time2 = Time.Now.AddDays(2); var time3 = Time.Now.AddDays(3); var instance = new DynamicWrapper { { "_id", 1 }, { "TimeProperty", time1 }, { "NullableTimeProperty", time2 }, { "ComplexProperty", new DynamicWrapper { { "TimeProperty", time3 } } } }; var classStorage = MongoTestHelpers.GetEmptyStorageProvider <TimeClassExample>(nameof(ShouldSaveDynamicWrapperWithTime)); var dynamicStorage = MongoTestHelpers.GetStorageProvider(nameof(ShouldSaveDynamicWrapperWithTime)); // When dynamicStorage.InsertOne(instance); var classInstance = classStorage.Find().FirstOrDefault(); var dynamicInstance = dynamicStorage.Find().FirstOrDefault(); // Then Assert.IsNotNull(classInstance); Assert.AreEqual(time1, classInstance.TimeProperty); Assert.AreEqual(time2, classInstance.NullableTimeProperty); Assert.IsNotNull(classInstance.ComplexProperty); Assert.AreEqual(time3, classInstance.ComplexProperty.TimeProperty); Assert.IsNull(classInstance.ComplexProperty.NullableTimeProperty); Assert.IsNotNull(dynamicInstance); Assert.AreEqual(time1.TotalSeconds, dynamicInstance["TimeProperty"]); Assert.AreEqual(time2.TotalSeconds, dynamicInstance["NullableTimeProperty"]); Assert.IsNotNull(dynamicInstance["ComplexProperty"]); Assert.AreEqual(time3.TotalSeconds, ((DynamicWrapper)dynamicInstance["ComplexProperty"])["TimeProperty"]); Assert.IsNull(((DynamicWrapper)dynamicInstance["ComplexProperty"])["NullableTimeProperty"]); }
public async Task ShouldCreateStorageAsync() { // Given const string collectionName = nameof(ShouldCreateStorageAsync); var connection = MongoTestHelpers.GetConnection(); var database = connection.GetDatabase(); database.DropCollection(collectionName); var documentMetadata = new DocumentMetadata { Type = collectionName, Indexes = new List <DocumentIndex> { new DocumentIndex { Key = new Dictionary <string, DocumentIndexKeyType> { { "Id", DocumentIndexKeyType.Asc }, } }, new DocumentIndex { Key = new Dictionary <string, DocumentIndexKeyType> { { "Name", DocumentIndexKeyType.Asc }, { "Birthday", DocumentIndexKeyType.Desc } } }, new DocumentIndex { Key = new Dictionary <string, DocumentIndexKeyType> { { "Description", DocumentIndexKeyType.Text } } } } }; // When - Create Collection var storageManager = new MongoDocumentStorageManager(connection); await storageManager.CreateStorageAsync(documentMetadata); await storageManager.CreateStorageAsync(documentMetadata); // No effect var collection = connection.GetDatabase().GetCollection <DynamicWrapper>(collectionName); // When - Using Indexes collection.InsertMany(new[] { CreateTestObject(1, "Name1", DateTime.Today.AddHours(1), "Some description 1 for Name1"), CreateTestObject(2, "Name1", DateTime.Today.AddHours(2), "Some description 2 for Name1"), CreateTestObject(3, "Name2", DateTime.Today.AddHours(3), "Some description 3 for Name2"), CreateTestObject(4, "Name2", DateTime.Today.AddHours(4), "Some description 4 for Name2"), CreateTestObject(5, "Name2", DateTime.Today.AddHours(5), "Some description 5 for Name2"), CreateTestObject(6, "Name3", DateTime.Today.AddHours(6), "Some description 6 for Name3") }); var filterBuilder = Builders <DynamicWrapper> .Filter; var resultIndex1 = collection.FindSync(filterBuilder.Eq("Id", 3)).ToList(); var resultIndex2 = collection.FindSync(filterBuilder.And(filterBuilder.Eq("Name", "Name2"), filterBuilder.Lt("Birthday", DateTime.Today.AddHours(5)))).ToList(); var resultIndex3 = collection.FindSync(filterBuilder.Text("some name2")).ToList(); // Then // Id: Ascending Assert.AreEqual(1, resultIndex1.Count); Assert.AreEqual(3, resultIndex1[0]["Id"]); Assert.AreEqual("Name2", resultIndex1[0]["Name"]); Assert.AreEqual(DateTime.Today.AddHours(3).ToUniversalTime(), resultIndex1[0]["Birthday"]); Assert.AreEqual("Some description 3 for Name2", resultIndex1[0]["Description"]); // Name: Ascending, Birthday: Descending Assert.AreEqual(2, resultIndex2.Count); Assert.AreEqual(4, resultIndex2[0]["Id"]); Assert.AreEqual("Name2", resultIndex2[0]["Name"]); Assert.AreEqual(DateTime.Today.AddHours(4).ToUniversalTime(), resultIndex2[0]["Birthday"]); Assert.AreEqual("Some description 4 for Name2", resultIndex2[0]["Description"]); Assert.AreEqual(3, resultIndex2[1]["Id"]); Assert.AreEqual("Name2", resultIndex2[1]["Name"]); Assert.AreEqual(DateTime.Today.AddHours(3).ToUniversalTime(), resultIndex2[1]["Birthday"]); Assert.AreEqual("Some description 3 for Name2", resultIndex2[1]["Description"]); // Description: Text Assert.AreEqual(3, resultIndex3.Count); CollectionAssert.AreEquivalent(new[] { 3, 4, 5 }, new[] { resultIndex3[0]["Id"], resultIndex3[1]["Id"], resultIndex3[2]["Id"] }); }