コード例 #1
0
        public async Task Funnel_Simple_Success()
        {
            var client    = new KeenClient(SettingsEnv);
            var timeframe = QueryRelativeTimeframe.ThisHour();

            IEnumerable <FunnelStep> funnelsteps = new List <FunnelStep>
            {
                new FunnelStep
                {
                    EventCollection = FunnelColA,
                    ActorProperty   = "id",
                },
                new FunnelStep
                {
                    EventCollection = FunnelColB,
                    ActorProperty   = "id"
                },
            };

            var expected = new FunnelResult
            {
                Steps = new[]
                {
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColA,
                    },
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColB,
                    },
                },
                Result = new[] { 3, 2 }
            };

            Mock <IQueries> queryMock = null;

            if (UseMocks)
            {
                queryMock = new Mock <IQueries>();
                queryMock.Setup(m => m.Funnel(
                                    It.Is <IEnumerable <FunnelStep> >(f => f.Equals(funnelsteps)),
                                    It.Is <IQueryTimeframe>(t => t == timeframe),
                                    It.Is <string>(t => t == "")
                                    ))
                .Returns(Task.FromResult(expected));

                client.Queries = queryMock.Object;
            }

            var reply = (await client.QueryFunnelAsync(funnelsteps, timeframe));

            Assert.NotNull(reply);
            Assert.NotNull(reply.Result);
            Assert.NotNull(reply.Steps);
            Assert.AreEqual(reply.Steps.Count(), 2);

            if (null != queryMock)
            {
                queryMock.VerifyAll();
            }
        }
コード例 #2
0
ファイル: FunnelTest.cs プロジェクト: grosbalou/keen-sdk-net
        public async Task Funnel_WithActors_Success()
        {
            var client = new KeenClient(SettingsEnv);

            IEnumerable <FunnelStep> funnelsteps = new []
            {
                new FunnelStep
                {
                    EventCollection = FunnelColA,
                    ActorProperty   = "id",
                    WithActors      = true
                },
                new FunnelStep
                {
                    EventCollection = FunnelColB,
                    ActorProperty   = "id"
                },
            };

            var expected = new FunnelResult
            {
                Actors = new [] { new [] { "sam", "dean" }, null },
                Steps  = new []
                {
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColA,
                        WithActors      = true
                    },
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColB,
                    },
                },
                Result = new [] { 3, 2 }
            };


            Mock <IQueries> queryMock = null;

            if (UseMocks)
            {
                queryMock = new Mock <IQueries>();
                queryMock.Setup(m => m.Funnel(
                                    It.Is <IEnumerable <FunnelStep> >(f => f.Equals(funnelsteps)),
                                    It.Is <QueryTimeframe>(t => t == null),
                                    It.Is <string>(t => t == "")
                                    ))
                .Returns(Task.FromResult(expected));

                client.Queries = queryMock.Object;
            }

            var reply = (await client.QueryFunnelAsync(funnelsteps));

            Assert.NotNull(reply);
            Assert.NotNull(reply.Actors);
            Assert.AreEqual(reply.Actors.Count(), 2);
            Assert.NotNull(reply.Result);
            Assert.True(reply.Result.SequenceEqual(expected.Result));
            Assert.NotNull(reply.Steps);
            Assert.AreEqual(reply.Steps.Count(), 2);

            if (null != queryMock)
            {
                queryMock.VerifyAll();
            }
        }
コード例 #3
0
        public async Task Funnel_ValidTimeframeInSteps_Success()
        {
            var client = new KeenClient(SettingsEnv);

            IEnumerable <FunnelStep> funnelsteps = new[]
            {
                new FunnelStep
                {
                    EventCollection = FunnelColA,
                    ActorProperty   = "id",
                    Timeframe       = QueryRelativeTimeframe.ThisMonth(),
                },
                new FunnelStep
                {
                    EventCollection = FunnelColB,
                    ActorProperty   = "id",
                    Timeframe       = new QueryAbsoluteTimeframe(DateTime.Now.AddDays(-30), DateTime.Now),
                },
            };

            var expected = new FunnelResult
            {
                Steps = new[]
                {
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColA,
                    },
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColB,
                    },
                },
                Result = new[] { 3, 2 }
            };

            Mock <IQueries> queryMock = null;

            if (UseMocks)
            {
                queryMock = new Mock <IQueries>();
                queryMock.Setup(m => m.Funnel(
                                    It.Is <IEnumerable <FunnelStep> >(f => f.Equals(funnelsteps)),
                                    It.Is <IQueryTimeframe>(t => null == t),
                                    It.Is <string>(t => t == "")
                                    ))
                .Returns(Task.FromResult(expected));

                client.Queries = queryMock.Object;
            }

            var reply = (await client.QueryFunnelAsync(funnelsteps, null));

            Assert.NotNull(reply);
            Assert.NotNull(reply.Result);
            Assert.True(reply.Result.SequenceEqual(expected.Result));
            Assert.NotNull(reply.Steps);
            Assert.AreEqual(reply.Steps.Count(), 2);

            if (null != queryMock)
            {
                queryMock.VerifyAll();
            }
        }
コード例 #4
0
ファイル: FunnelTest.cs プロジェクト: grosbalou/keen-sdk-net
        public async Task Funnel_ValidFilter_Success()
        {
            var client  = new KeenClient(SettingsEnv);
            var filters = new List <QueryFilter> {
                new QueryFilter("id", QueryFilter.FilterOperator.GreaterThanOrEqual(), 0)
            };

            IEnumerable <FunnelStep> funnelsteps = new []
            {
                new FunnelStep
                {
                    EventCollection = FunnelColA,
                    ActorProperty   = "id",
                    Filters         = filters,
                },
                new FunnelStep
                {
                    EventCollection = FunnelColB,
                    ActorProperty   = "id"
                },
            };

            var expected = new FunnelResult
            {
                Steps = new []
                {
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColA,
                        Filters         = filters
                    },
                    new FunnelResultStep
                    {
                        EventCollection = FunnelColB,
                    },
                },
                Result = new [] { 3, 2 }
            };


            Mock <IQueries> queryMock = null;

            if (UseMocks)
            {
                queryMock = new Mock <IQueries>();
                queryMock.Setup(m => m.Funnel(
                                    It.Is <IEnumerable <FunnelStep> >(f => f.Equals(funnelsteps)),
                                    It.Is <QueryTimeframe>(t => t == null),
                                    It.Is <string>(t => t == "")
                                    ))
                .Returns(Task.FromResult(expected));

                client.Queries = queryMock.Object;
            }

            var reply = (await client.QueryFunnelAsync(funnelsteps));

            Assert.NotNull(reply);
            Assert.NotNull(reply.Result);
            Assert.True(reply.Result.SequenceEqual(expected.Result));
            Assert.NotNull(reply.Steps);
            Assert.AreEqual(reply.Steps.Count(), 2);

            if (null != queryMock)
            {
                queryMock.VerifyAll();
            }
        }