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