public QueryFunnelAsync ( IEnumerable |
||
steps | IEnumerable |
Analysis steps for funnel. |
timeframe | QueryTimeframe | Specifies window of time from which to select events for analysis. May be absolute or relative. |
timezone | string | The timezone to use when specifying a relative timeframe. Optional, may be blank. |
리턴 | Task |
public async Task Funnel_Simple_Success() { var client = new KeenClient(SettingsEnv); 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<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.NotNull(reply.Steps); Assert.AreEqual(reply.Steps.Count(), 2); if (null != queryMock) queryMock.VerifyAll(); }
public async void Funnel_ValidTimeframe_Success() { var client = new KeenClient(settingsEnv); var filters = new List<QueryFilter>() { new QueryFilter("field1", QueryFilter.FilterOperator.GreaterThan(), "1") }; var funnelColA = "FunnelTestA"; var funnelColB = "FunnelTestB"; var funnelColC = "FunnelTestC"; try { if (!UseMocks) { client.DeleteCollection(funnelColA); client.DeleteCollection(funnelColB); client.DeleteCollection(funnelColC); } } catch (Exception) { } var timeframe = new QueryAbsoluteTimeframe(DateTime.Now, DateTime.Now.AddSeconds(2)); if (!UseMocks) { client.AddEvent(funnelColA, new { id = "1" }); client.AddEvent(funnelColA, new { id = "2" }); client.AddEvent(funnelColA, new { id = "3" }); client.AddEvent(funnelColB, new { id = "1" }); client.AddEvent(funnelColB, new { id = "2" }); client.AddEvent(funnelColC, new { id = "1" }); } IEnumerable<FunnelStep> funnelsteps = new List<FunnelStep>() { new FunnelStep(){ EventCollection = funnelColA, ActorProperty = "id" }, new FunnelStep(){ EventCollection = funnelColB, ActorProperty = "id" }, new FunnelStep(){ EventCollection = funnelColC, ActorProperty = "id" }, }; IEnumerable<int> result = new List<int>() { 3, 2, 1 }; Mock<IQueries> queryMock = null; if (UseMocks) { queryMock = new Mock<IQueries>(); queryMock.Setup(m => m.Funnel( It.IsAny<string>(), It.Is<IEnumerable<FunnelStep>>(f => f == funnelsteps), It.Is<QueryTimeframe>(t => t == null), It.Is<string>(t => t == "") )) .Returns(Task.FromResult(result)); client.Queries = queryMock.Object; } var reply = (await client.QueryFunnelAsync(testCol, funnelsteps, null)).ToList(); if (null != queryMock) queryMock.VerifyAll(); }
public async void 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(); }