public async Task NoResultsOnGetTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); IEnumerable <Test> tests = await getRepository.GetAllByConditionsAsync(x => x.ObjectId == "unexistent-object"); Assert.Empty(tests); }
public async Task NullSortOnGetTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); Sort <Test, bool> sort = null; await Assert.ThrowsAsync <ArgumentNullException>(async() => await getRepository.GetAllByConditionsAsync( x => true, sort)); }
public async Task NullExpressionOnGetTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); Sort <Test, string> sort = new Sort <Test, string>( x => x.StringField, SortType.Desc); await Assert.ThrowsAsync <ArgumentNullException>(async() => await getRepository.GetAllByConditionsAsync(null)); }
public async Task InvalidPaginationTakeNumberTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); Sort <Test, string> sort = new Sort <Test, string>( x => x.StringField, SortType.Desc); await Assert.ThrowsAsync <ArgumentException>(async() => await getRepository.GetAllByConditionsAsync( x => true, sort, new Pagination(0, -2))); }
public async Task StringAscSortAndPaginationTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); Sort <Test, string> sort = new Sort <Test, string>( x => x.StringField, SortType.Asc); IEnumerable <Test> sortedTests = await getRepository.GetAllByConditionsAsync( x => true, sort, new Pagination(0, 2)); Assert.True(sortedTests != null && sortedTests.Count() == 2); }
public async Task StringDescSortAndPaginationCancelledTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); Sort <Test, string> sort = new Sort <Test, string>( x => x.StringField, SortType.Desc); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(0.1)); await Assert.ThrowsAsync <OperationCanceledException>(async() => await getRepository.GetAllByConditionsAsync( x => true, sort, new Pagination(0, 2), cancellationTokenSource.Token)); }
public async Task NumberAscSortAndPaginationTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); Sort <Test, double> sort = new Sort <Test, double>( x => x.NumberField, SortType.Asc); IEnumerable <Test> tests = await getRepository.GetAllByConditionsAsync( x => true, sort, new Pagination(0, 2)); Assert.True(tests != null && tests.Count() == 2); IEnumerable <Test> sortedTests = tests.OrderBy(x => x.NumberField); Assert.True(tests.SequenceEqual(sortedTests)); }
public async Task MultipleEntityIntegralTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IMongodbSaveRepository <Test> saveRepository = new MongodbSaveRepository <Test>(database); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); IDeleteRepository <Test> deleteRepository = new MongodbDeleteRepository <Test>(database); Test newTest1 = new Test() { BoolField = true, NumberField = 1, ObjectId = Guid.NewGuid().ToString(), StringField = "multiple-object-1", TimestampField = DateTime.UtcNow }; Test newTest2 = new Test() { BoolField = true, NumberField = 2, ObjectId = Guid.NewGuid().ToString(), StringField = "multiple-object-2", TimestampField = DateTime.UtcNow.AddMinutes(1) }; IList <Test> newTests = new List <Test>() { newTest1, newTest2 }; await saveRepository.InsertManyAsync(newTests); IEnumerable <Test> savedTests = await getRepository.GetAllByConditionsAsync(x => x.ObjectId == newTest1.ObjectId || x.ObjectId == newTest2.ObjectId); Assert.True(savedTests.Count() == 2); Test savedTest1 = savedTests.Single(x => x.ObjectId == newTest1.ObjectId && x.NumberField == newTest1.NumberField && x.StringField == newTest1.StringField && DateTimeHelper.AreEquals(x.TimestampField, newTest1.TimestampField) && x.BoolField == newTest1.BoolField); Test savedTest2 = savedTests.Single(x => x.ObjectId == newTest2.ObjectId && x.NumberField == newTest2.NumberField && x.StringField == newTest2.StringField && DateTimeHelper.AreEquals(x.TimestampField, newTest2.TimestampField) && x.BoolField == newTest2.BoolField); string modifiedStringField = "modified-multiple-objects"; UpdateDefinition <Test> updateDefinition = Builders <Test> .Update.Set(x => x.StringField, modifiedStringField); await saveRepository.UpdateManyAsync( x => x.ObjectId == newTest1.ObjectId || x.ObjectId == newTest2.ObjectId, updateDefinition); IEnumerable <Test> modifiedTests = await getRepository.GetAllByConditionsAsync(x => x.StringField == modifiedStringField && (x.ObjectId == savedTest1.ObjectId || x.ObjectId == savedTest2.ObjectId)); Assert.True(modifiedTests.Count() == 2); Test modifiedTest1 = modifiedTests.Single(x => x.ObjectId == newTest1.ObjectId && x.NumberField == newTest1.NumberField && x.StringField == modifiedStringField && DateTimeHelper.AreEquals(x.TimestampField, newTest1.TimestampField) && x.BoolField == newTest1.BoolField); Test modifiedTest2 = modifiedTests.Single(x => x.ObjectId == newTest2.ObjectId && x.NumberField == newTest2.NumberField && x.StringField == modifiedStringField && DateTimeHelper.AreEquals(x.TimestampField, newTest2.TimestampField) && x.BoolField == newTest2.BoolField); await deleteRepository.DeleteAllByConditionsAsync(x => x.StringField == modifiedStringField); IEnumerable <Test> deletedTests = await getRepository.GetAllByConditionsAsync(x => x.StringField == modifiedStringField); Assert.True(deletedTests == null || deletedTests.Count() == 0); }
public async Task SingleEntityIntegralTest() { MongodbConfig mongodbConfig = MongoDbHelper.GetMongodbConfig(); IMongoDatabase database = MongodbProvider.GetDatabase(mongodbConfig); IMongodbSaveRepository <Test> saveRepository = new MongodbSaveRepository <Test>(database); IGetRepository <Test> getRepository = new MongodbGetRepository <Test>(database); IDeleteRepository <Test> deleteRepository = new MongodbDeleteRepository <Test>(database); Test newTest = new Test() { BoolField = true, NumberField = 1, ObjectId = Guid.NewGuid().ToString(), StringField = "new-single-object", TimestampField = DateTime.UtcNow }; await saveRepository.InsertAsync(newTest); Test savedTest = await getRepository.GetFirstByConditionsAsync(x => x.ObjectId == newTest.ObjectId && x.BoolField == newTest.BoolField && x.NumberField == newTest.NumberField && x.StringField == newTest.StringField && x.TimestampField == newTest.TimestampField); savedTest.BoolField = false; savedTest.NumberField = 2; savedTest.StringField = "modified-single-object"; savedTest.TimestampField = DateTime.UtcNow.AddDays(1); await saveRepository.ReplaceAsync( x => x.ObjectId == newTest.ObjectId && x.BoolField == newTest.BoolField && x.NumberField == newTest.NumberField && x.StringField == newTest.StringField && x.TimestampField == newTest.TimestampField, savedTest); Test modifiedTest = (await getRepository.GetAllByConditionsAsync(x => x.ObjectId == savedTest.ObjectId && x.BoolField == savedTest.BoolField && x.NumberField == savedTest.NumberField && x.StringField == savedTest.StringField && x.TimestampField == savedTest.TimestampField)).Single(); await deleteRepository.DeleteAllByConditionsAsync(x => x.ObjectId == savedTest.ObjectId && x.BoolField == savedTest.BoolField && x.NumberField == savedTest.NumberField && x.StringField == savedTest.StringField && x.TimestampField == savedTest.TimestampField); Test deletedTest = await getRepository.GetFirstByConditionsAsync(x => x.ObjectId == savedTest.ObjectId && x.BoolField == savedTest.BoolField && x.NumberField == savedTest.NumberField && x.StringField == savedTest.StringField && x.TimestampField == savedTest.TimestampField); Assert.Null(deletedTest); }