Example #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();
            }
        }