/*--------------------------------------------------------------------------------------------*/ private void AddMember(SetupMemberId pId, SetupAppId pSetupAppId, SetupUserId pSetupUserId, MemberType.Id pMemTypeId) { var m = new Member(); m.MemberType = (byte)pMemTypeId; AddVertex(m, (SetupVertexId)(long)pId); App app = Data.GetVertex <App>((long)pSetupAppId); User user = Data.GetVertex <User>((long)pSetupUserId); var adm = new AppDefinesMember(); adm.Timestamp = m.Timestamp; adm.MemberType = m.MemberType; adm.UserId = (long)pSetupUserId; AddEdge(app, adm, m); AddEdge(m, new MemberDefinedByApp(), app); var udm = new UserDefinesMember(); udm.Timestamp = m.Timestamp; udm.MemberType = m.MemberType; udm.AppId = (long)pSetupAppId; AddEdge(user, udm, m); AddEdge(m, new MemberDefinedByUser(), user); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public Member Execute(IOperationContext pOpCtx, long pMemberId, MemberType.Id pTypeId) { CreateFabMemberValidator.Type((byte)pTypeId); IWeaverVarAlias <Member> memAlias; IWeaverQuery memQ = Weave.Inst.Graph .V.ExactIndex <Member>(x => x.VertexId, pMemberId) .Next() .ToQueryAsVar("m", out memAlias); IWeaverQuery userQ = Weave.Inst.FromVar(memAlias) .DefinedByUser.ToUser .Property(x => x.VertexId) .ToQuery(); IWeaverQuery appQ = Weave.Inst.FromVar(memAlias) .DefinedByApp.ToApp .Property(x => x.VertexId) .ToQuery(); IDataAccess acc = pOpCtx.Data.Build(); acc.AddSessionStart(); acc.AddQuery(memQ, true); acc.OmitResultsOfLatestCommand(); acc.AddQuery(userQ, true); acc.AddQuery(appQ, true); acc.AddSessionClose(); IDataResult memRes = acc.Execute("Web-GetMemberDetails"); long userId = memRes.ToLongAt(2, 0); long appId = memRes.ToLongAt(3, 0); //// IWeaverQuery q = Weave.Inst.Graph .V.ExactIndex <Member>(x => x.VertexId, pMemberId) .SideEffect(new WeaverStatementSetProperty <Member>( x => x.MemberType, (byte)pTypeId)) .DefinedByUser.ToUser .DefinesMembers .Has(x => x.AppId, WeaverStepHasOp.EqualTo, appId) .SideEffect(new WeaverStatementSetProperty <UserDefinesMember>( x => x.MemberType, (byte)pTypeId)) .ToMember .DefinedByApp.ToApp .DefinesMembers .Has(x => x.UserId, WeaverStepHasOp.EqualTo, userId) .SideEffect(new WeaverStatementSetProperty <AppDefinesMember>( x => x.MemberType, (byte)pTypeId)) .ToMember .ToQuery(); return(pOpCtx.Data.Get <Member>(q, "Web-UpdateMemberType")); }
public void SetUp() { vMem = new Member(); vMem.VertexId = 1234125; vNewMemTypeId = MemberType.Id.Owner; vMockData = new Mock <IOperationData>(MockBehavior.Strict); vMockOpCtx = new Mock <IOperationContext>(MockBehavior.Strict); vMockOpCtx.SetupGet(x => x.Data).Returns(vMockData.Object); vOper = new WebUpdateMemberTypeOperation(); }
public void Success() { const long memId = (long)SetupMemberId.BookZach; const MemberType.Id newType = MemberType.Id.Staff; var op = new WebUpdateMemberTypeOperation(); Member result = op.Execute(OpCtx, memId, newType); Assert.NotNull(result, "Result should be filled."); Assert.AreEqual(memId, result.VertexId, "Incorrect VertexId."); Assert.AreEqual((byte)newType, result.MemberType, "Incorrect MemberType."); IWeaverQuery memQ = Weave.Inst.Graph .V.ExactIndex <Member>(x => x.VertexId, memId) .Has(x => x.MemberType, WeaverStepHasOp.EqualTo, (byte)newType) .ToQuery(); IWeaverQuery userDefMemQ = Weave.Inst.Graph .V.ExactIndex <User>(x => x.VertexId, (byte)SetupUserId.Zach) .DefinesMembers .Has(x => x.AppId, WeaverStepHasOp.EqualTo, (byte)SetupAppId.Bookmarker) .Has(x => x.MemberType, WeaverStepHasOp.EqualTo, (byte)newType) .ToMember .ToQuery(); IWeaverQuery appDefMemQ = Weave.Inst.Graph .V.ExactIndex <App>(x => x.VertexId, (byte)SetupAppId.Bookmarker) .DefinesMembers .Has(x => x.UserId, WeaverStepHasOp.EqualTo, (byte)SetupUserId.Zach) .Has(x => x.MemberType, WeaverStepHasOp.EqualTo, (byte)newType) .ToMember .ToQuery(); VerificationQueryFunc = () => { IDataResult dr = OpCtx.ExecuteForTest(memQ, "UpdateMemType1-Verify"); Assert.AreEqual(1, dr.GetCommandResultCount(), "New element not verified (1)."); dr = OpCtx.ExecuteForTest(userDefMemQ, "UpdateMemType2-Verify"); Assert.AreEqual(1, dr.GetCommandResultCount(), "New element not verified (2)."); dr = OpCtx.ExecuteForTest(appDefMemQ, "UpdateMemType3-Verify"); Assert.AreEqual(1, dr.GetCommandResultCount(), "New element not verified (3)."); }; }