public async Task Any_ShouldReturnTrue_WhenExistingUser_AndRightCheckedOnOpenRepository() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { //Arrange var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var user = User.GetManyRandomUsers(1).First(); await repo.AddAsync(user, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); //Act var query = new Query <User>(u => u.Id == user.Id); query.Options.ChecksRights = true; var exist = await collection.AnyAsync(query); //Assert Assert.True(exist); }); }
public async Task NullableGuids_ordering_in_sql_should_work_properly() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var users = User.GetManyRandomUsers(20).OrderBy(u => u.FriendId).ThenBy(u => u.Id).ToList(); await repo.AddRangeAsync(users, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); var sequence = users.Select(i => i.Id).ToList(); var query = new Query <User> { OrderBys = new List <OrderBy <User> > { OrderBy <User> .Ascending(u => u.FriendId), OrderBy <User> .Ascending(u => u.Id) } }; var result = (await collection.GetAsync(query)).Items.ToList(); Assert.Equal(sequence, result.Select(i => i.Id).ToList()); }); }
public async void MailAdressFiltersShouldWork() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var users = User.GetManyRandomUsers(20).OrderBy(u => u.Id).ToList(); await repo.AddRangeAsync(users, new Query <User> { Verb = HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); var request = HttpVerbs.Get.NewRequest(("mail", "*****@*****.**")); var query = QueryParserHelper.GetQueryParser <User>().Parse(request, true); var result = (await collection.GetAsync(query)).Items; Assert.Single(result); Assert.Equal("John Doe 3", result.FirstOrDefault().Name); }); }
public async Task IncludeIntersectionWork() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var dpts = new List <Department> { new Department(), new Department() }; storage.AddRange(dpts); await unitOfWork.SaveChangesAsync(); var users = User.GetManyRandomUsers(1, dpts).ToList(); await repo.AddRangeAsync(users, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); using (var newContext = GetContext()) { var newStorage = new EFStorageService(newContext); var newRepo = new UsersRepository(newStorage, _fixture.RightsService); var query = new Query <User>(); var noDpts = (await newRepo.GetAsync(query)).ToList(); Assert.Null(noDpts[0].Department); query = new Query <User> { Fields = new ExpressionParser().ParseTree <User>("department[id,name],id,name") }; var withDpts = (await newRepo.GetAsync(query)).ToList(); Assert.NotNull(noDpts[0].Department); } }); }
public async Task DeleteRangeWorks() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var users = User.GetManyRandomUsers(20).ToList(); await repo.AddRangeAsync(users, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); storage.RemoveRange(users); await unitOfWork.SaveChangesAsync(); var result = (await collection.GetAsync(new Query <User>())).Items.ToList(); Assert.Empty(result); }); }
public async Task DiscardChangesWork() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var users = User.GetManyRandomUsers(3).ToList(); await repo.AddRangeAsync(users, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); users[0].Name = "new value"; repo.Remove(users[2]); var newUser = new User(); await repo.AddAsync(newUser, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); storage.DiscardChanges <User>(null); //does not fail storage.DiscardChanges(users[0]); //modified storage.DiscardChanges(users[1]); //unmodified storage.DiscardChanges(users[2]); //removed storage.DiscardChanges(new User()); //unattached storage.DiscardChanges(newUser); //added await unitOfWork.SaveChangesAsync(); var result = (await collection.GetAsync(new Query <User>())).Items.ToList(); Assert.Equal(3, result.Count); Assert.NotEqual("new value", result[0].Name); }); }
public async Task Any_ShouldReturnFalse_WhenNoExistingUser() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { //Arrange var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var user = User.GetManyRandomUsers(1).First(); await repo.AddAsync(user, new Query <User> { Verb = Domain.Helpers.HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); //Act var exist = await collection.AnyAsync(new Query <User>(u => Guid.NewGuid() == user.Id)); //Assert Assert.False(exist); }); }
public async void LeftJoinShouldWork(string key, string value) { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); context.Add(new Parent { OptionalChild = new OptionalChild { Name = "value" } }); context.Add(new Parent()); await unitOfWork.SaveChangesAsync(); var request = HttpVerbs.Get.NewRequest((key, value)); var query = QueryParserHelper.GetQueryParser <Parent>().Parse(request, true); var storage = new EFStorageService(context); var repo = new OpenRepository <Parent>(storage, null); var collection = new RestCollection <Parent, int>(repo, new ObjectPatcher <Parent>(_fixture.PatcherProvider, new ReflectionHelper()), new DefaultInstanciator <Parent>()); var result = (await collection.GetAsync(query)).Items; Assert.Single(result); }); }