public async void WithResult() { await this.SignIn(this.Administrator); var data = new DataBuilder(this.Session).WithString("First").Build(); this.Session.Commit(); var uri = new Uri(@"allors/pull", UriKind.Relative); var extent = new Allors.Data.Filter(M.Data.ObjectType); var pullRequest = new PullRequest { P = new[] { new Pull { Extent = extent.Save(), Results = new[] { new Result { Name = "Datas" }, }, }, }, }; var response = await this.PostAsJsonAsync(uri, pullRequest); var pullResponse = await this.ReadAsAsync <PullResponse>(response); var namedCollection = pullResponse.NamedCollections["Datas"]; Assert.Single(namedCollection); var namedObject = namedCollection.First(); Assert.Equal(data.Id.ToString(), namedObject); var objects = pullResponse.Objects; Assert.Single(objects); var @object = objects[0]; var acls = new AccessControlLists(this.Administrator); var acl = acls[data]; Assert.Equal(3, @object.Length); Assert.Equal(data.Strategy.ObjectId.ToString(), @object[0]); Assert.Equal(data.Strategy.ObjectVersion.ToString(), @object[1]); Assert.Equal(this.PrintAccessControls(acl), @object[2]); }
public async void WithResult() { var administrator = new Users(this.Session).GetUser("administrator"); await this.SignIn(administrator); var data = new DataBuilder(this.Session).WithString("First").Build(); this.Session.Commit(); var uri = new Uri(@"Pull/Pull", UriKind.Relative); var extent = new Allors.Data.Filter(M.Data.ObjectType); var pullRequest = new PullRequest { P = new[] { new Pull { Extent = extent.Save(), Results = new[] { new Result { Name = "Datas" }, }, } } }; var response = await this.PostAsJsonAsync(uri, pullRequest); var pullResponse = await this.ReadAsAsync <PullResponse>(response); var organisations = pullResponse.NamedCollections["Datas"]; Assert.Single(organisations); var dataId = organisations.First(); Assert.Equal(data.Id.ToString(), dataId); }
/// <summary> /// Loads an <see cref="Allors.Extent"/> based on this <see cref="Extent"/>. /// </summary> /// <param name="session"> /// The database to resolve information from. /// </param> /// <returns> /// The loaded <see cref="Extent"/>. /// </returns> public IExtent Load(ISession session) { IExtent[] Operands() => this.Operands.Select(v => v.Load(session)).ToArray(); IExtent extent; switch (this.Kind) { case ExtentKind.Filter: if (!this.ObjectType.HasValue) { return(null); } var objectType = (IComposite)session.Database.ObjectFactory.MetaPopulation.Find(this.ObjectType.Value); extent = new Allors.Data.Filter(objectType) { Predicate = this.Predicate?.Load(session) }; break; case ExtentKind.Union: extent = new Union(Operands()); break; case ExtentKind.Except: extent = new Except(Operands()); break; case ExtentKind.Intersect: extent = new Intersect(Operands()); break; default: throw new Exception("Unknown extent kind " + this.Kind); } extent.Sorting = this.Sorting?.Select(v => v.Load(session)).ToArray(); return(extent); }