public async Task BaseClass_Collection_on_hierarchy_works() { var repo = new Repository <Hierarchy>(_fixture.InMemoryStorage, new OpenRightExpressionsHelper <Hierarchy>(), _fixture.IncludeApplicator); var instanciator = new BaseClassInstanciator <Hierarchy>(new InheritanceConfiguration()); var collection = new RestCollection <Hierarchy, int>(repo, new BaseClassPatcher <Hierarchy>(_fixture.PatcherProvider, _fixture.ReflectionHelper, new InheritanceConfiguration()), instanciator); var candidate = _parser.Parse <Hierarchy, int>(@"{ ""type"":""super"", ""superProperty"": ""lol"" }"); await collection.CreateAsync(candidate, new Query <Hierarchy> { Verb = Helpers.HttpVerbs.Post }); }
public async Task Collection_on_hierarchy_fails() { await Assert.ThrowsAsync <BadRequestException>(async() => { var repo = new Repository <Hierarchy>(_fixture.InMemoryStorage, new Mock <IRightExpressionsHelper <Hierarchy> >().Object, _fixture.IncludeApplicator); var instanciator = new BaseClassInstanciator <Hierarchy>(new InheritanceConfiguration()); var collection = new RestCollection <Hierarchy, int>(repo, new ObjectPatcher <Hierarchy>(_fixture.PatcherProvider, _fixture.ReflectionHelper), instanciator); var candidate = _parser.Parse <Hierarchy, int>(@"{ ""type"":""super"", ""superProperty"": ""lol"" }"); await collection.CreateAsync(candidate, new Query <Hierarchy> { Verb = Helpers.HttpVerbs.Post }); }); }
public async Task Put_on_new_entity() { var id = Guid.NewGuid(); var user = new User { Id = id, Name = "Name", Salary = 1, TwitterUri = new Uri("https://twitter.com") }; _fixture.InMemoryStorage.Add(user); await _fixture.InMemoryStorage.SaveChangesAsync(); var users = new RestCollection <User, Guid>(_fixture.UsersRepo, new OverrideObjectPatcher <User>(_fixture.PatcherProvider), _fixture.Instanciator); var query = new Query <User>(); query.Options.ChecksRights = false; var updated = await users.UpdateByIdAsync(id, _parser.Parse <User, Guid>(JsonConvert.SerializeObject(user)), query); Assert.Equal(new Guid(), updated.Id); }
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); }); }