Beispiel #1
0
        /*--------------------------------------------------------------------------------------------*/
        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);
        }
Beispiel #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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).");
            };
        }