Esempio n. 1
0
        public async Task Query_SimpleMultiAnalysisGroupBy_Success()
        {
            var queryParameters = new MultiAnalysisParameters()
            {
                Labels = new string[]
                {
                    "first analysis",
                    "second analysis"
                },
                Analyses = new QueryParameters[]
                {
                    new QueryParameters(),
                    new QueryParameters()
                    {
                        Analysis       = QueryType.Average(),
                        TargetProperty = "targetProperty"
                    }
                },
                GroupBy = "groupByProperty"
            };

            string responseJson = $"{{\"result\":[" +
                                  $"{{\"{queryParameters.GroupBy}\":\"group1\",\"{queryParameters.Labels[0]}\":12345,\"{queryParameters.Labels[1]}\":54321}}," +
                                  $"{{\"{queryParameters.GroupBy}\":\"group2\",\"{queryParameters.Labels[0]}\":67890,\"{queryParameters.Labels[1]}\":9876}}" +
                                  $"]}}";

            var expectedResponse = JObject.Parse(responseJson);

            var client = CreateQueryTestKeenClient(queryParameters, expectedResponse);

            var actualResults = await client.Queries.MultiAnalysis(
                queryParameters.EventCollection,
                queryParameters.GetMultiAnalysisParameters(),
                null,
                null,
                queryParameters.GroupBy,
                null);

            var expectedResults = expectedResponse["result"];

            Assert.AreEqual(expectedResults.Count(), actualResults.Count());
            foreach (var group in new string[] { "group1", "group2" })
            {
                var actualGroupResult   = actualResults.Where((result) => result.Group == group).First();
                var expectedGroupResult = expectedResults.Where((result) => result[queryParameters.GroupBy].Value <string>() == group).First();
                foreach (var label in queryParameters.Labels)
                {
                    // Validate the result is correct
                    Assert.AreEqual(expectedGroupResult[label].Value <int>(), int.Parse(actualGroupResult.Value[label]));
                }
            }
        }
        public async Task Query_SimpleMultiAnalysis_Success()
        {
            var queryParameters = new MultiAnalysisParameters()
            {
                Labels = new string[]
                {
                    "first analysis",
                    "second analysis"
                },
                Analyses = new QueryParameters[]
                {
                    new QueryParameters(),
                    new QueryParameters()
                    {
                        Analysis       = QueryType.Average(),
                        TargetProperty = "targetProperty"
                    }
                }
            };

            string responseJson = $"{{\"result\":{{ \"{queryParameters.Labels[0]}\" : 12345, \"{queryParameters.Labels[1]}\" : 54321 }} }}";

            var expectedResponse = JObject.Parse(responseJson);

            var client = CreateQueryTestKeenClient(queryParameters, expectedResponse);

            var actualResults = await client.Queries.MultiAnalysis(
                queryParameters.EventCollection,
                queryParameters.GetMultiAnalysisParameters(),
                timeframe : null,
                filters : null,
                timezone : null);

            var expectedResults = expectedResponse["result"];

            Assert.AreEqual(expectedResults.Count(), actualResults.Count());
            foreach (var label in queryParameters.Labels)
            {
                // Validate the result is correct
                Assert.AreEqual(expectedResults[label].Value <int>(), int.Parse(actualResults[label]));
            }
        }
Esempio n. 3
0
        public async Task Query_SimpleMultiAnalysis_Success()
        {
            var queryParameters = new MultiAnalysisParameters()
            {
                Labels = new string[]
                {
                    "first analysis",
                    "second analysis"
                },
                Analyses = new QueryParameters[]
                {
                    new QueryParameters(),
                    new QueryParameters()
                    {
                        Analysis       = QueryType.Average(),
                        TargetProperty = "targetProperty"
                    }
                }
            };

            string responseJson = $"{{\"result\":{{ \"{queryParameters.Labels[0]}\" : 12345, \"{queryParameters.Labels[1]}\" : 54321 }} }}";

            var expectedResponse = JObject.Parse(responseJson);

            var client = CreateQueryTestKeenClient(queryParameters, expectedResponse);

            var actualResults = await client.Queries.MultiAnalysis(
                queryParameters.EventCollection,
                queryParameters.GetMultiAnalysisParameters(),
                timeframe : null,
                filters : null,
                timezone : null);

            var expectedResults    = expectedResponse["result"];
            var transformedResults = JObject.FromObject(actualResults.ToDictionary((pair) => pair.Key, (pair) => int.Parse(pair.Value)));

            Assert.That(transformedResults, Is.EquivalentTo(expectedResults));
        }
Esempio n. 4
0
        public async Task Query_SimpleMultiAnalysisInterval_Success()
        {
            var queryParameters = new MultiAnalysisParameters()
            {
                Labels = new string[]
                {
                    "first analysis",
                    "second analysis"
                },
                Analyses = new QueryParameters[]
                {
                    new QueryParameters(),
                    new QueryParameters()
                    {
                        Analysis       = QueryType.Average(),
                        TargetProperty = "targetProperty"
                    }
                },
                Interval = QueryInterval.Daily()
            };

            string responseJson = "{\"result\":[" +
                                  "{\"timeframe\":{\"start\":\"2017-10-14T00:00:00.000Z\",\"end\":\"2017-10-15T00:00:00.000Z\"}," +
                                  "\"value\":{" +
                                  $"\"{queryParameters.Labels[0]}\":12345,\"{queryParameters.Labels[1]}\":54321}}" +
                                  "}," +
                                  "{\"timeframe\":{\"start\":\"2017-10-15T00:00:00.000Z\",\"end\":\"2017-10-16T00:00:00.000Z\"}," +
                                  "\"value\":{" +
                                  $"\"{queryParameters.Labels[0]}\":123,\"{queryParameters.Labels[1]}\":321}}" +
                                  "}" +
                                  "]}";

            var expectedResponse = JObject.Parse(responseJson);

            var client = CreateQueryTestKeenClient(queryParameters, expectedResponse);

            var actualResults = await client.Queries.MultiAnalysis(
                queryParameters.EventCollection,
                queryParameters.GetMultiAnalysisParameters(),
                timeframe : null,
                interval : queryParameters.Interval,
                filters : null,
                timezone : null);

            var expectedResults = expectedResponse["result"];

            Assert.AreEqual(expectedResults.Count(), actualResults.Count());
            var results = expectedResults.Zip(actualResults, (expected, actual) => new { Expected = expected, Actual = actual });

            foreach (var result in results)
            {
                Assert.AreEqual(DateTime.Parse(result.Expected["timeframe"]["start"].Value <string>()), result.Actual.Start);
                Assert.AreEqual(DateTime.Parse(result.Expected["timeframe"]["end"].Value <string>()), result.Actual.End);

                foreach (var label in queryParameters.Labels)
                {
                    // Validate the result is correct
                    Assert.AreEqual(result.Expected["value"][label].Value <int>(), int.Parse(result.Actual.Value[label]));
                }
            }
        }
Esempio n. 5
0
        public async Task Query_SimpleMultiAnalysisIntervalGroupBy_Success()
        {
            var queryParameters = new MultiAnalysisParameters()
            {
                Labels = new string[]
                {
                    "first analysis",
                    "second analysis"
                },
                Analyses = new QueryParameters[]
                {
                    new QueryParameters(),
                    new QueryParameters()
                    {
                        Analysis       = QueryType.Average(),
                        TargetProperty = "targetProperty"
                    }
                },
                GroupBy  = "groupByProperty",
                Interval = QueryInterval.Daily()
            };

            string responseJson = "{\"result\":[" +
                                  "{\"timeframe\":{\"start\":\"2017-10-14T00:00:00.000Z\",\"end\":\"2017-10-15T00:00:00.000Z\"}," +
                                  "\"value\":[" +
                                  $"{{\"{queryParameters.GroupBy}\":\"group1\",\"{queryParameters.Labels[0]}\":12345,\"{queryParameters.Labels[1]}\":54321}}," +
                                  $"{{\"{queryParameters.GroupBy}\":\"group2\",\"{queryParameters.Labels[0]}\":67890,\"{queryParameters.Labels[1]}\":9876}}" +
                                  "]}," +
                                  "{\"timeframe\":{\"start\":\"2017-10-15T00:00:00.000Z\",\"end\":\"2017-10-16T00:00:00.000Z\"}," +
                                  "\"value\":[" +
                                  $"{{\"{queryParameters.GroupBy}\":\"group1\",\"{queryParameters.Labels[0]}\":123,\"{queryParameters.Labels[1]}\":321}}," +
                                  $"{{\"{queryParameters.GroupBy}\":\"group2\",\"{queryParameters.Labels[0]}\":456,\"{queryParameters.Labels[1]}\":654}}" +
                                  "]}" +
                                  "]}";

            var expectedResponse = JObject.Parse(responseJson);

            var client = CreateQueryTestKeenClient(queryParameters, expectedResponse);

            var actualResults = await client.Queries.MultiAnalysis(
                queryParameters.EventCollection,
                queryParameters.GetMultiAnalysisParameters(),
                groupby : queryParameters.GroupBy,
                interval : queryParameters.Interval);

            var expectedResults = expectedResponse["result"];

            Assert.AreEqual(expectedResults.Count(), actualResults.Count());
            var results = expectedResults.Zip(actualResults, (expected, actual) => new { Expected = expected, Actual = actual });

            foreach (var result in results)
            {
                Assert.AreEqual(DateTime.Parse(result.Expected["timeframe"]["start"].Value <string>()), result.Actual.Start);
                Assert.AreEqual(DateTime.Parse(result.Expected["timeframe"]["end"].Value <string>()), result.Actual.End);

                foreach (var group in new string[] { "group1", "group2" })
                {
                    var expectedGroupResult = result.Expected["value"].Where((groupResult) => groupResult[queryParameters.GroupBy].Value <string>() == group).First();
                    var actualGroupResult   = result.Actual.Value.Where((groupResult) => groupResult.Group == group).First();

                    foreach (var label in queryParameters.Labels)
                    {
                        Assert.AreEqual(expectedGroupResult[label].Value <int>(), int.Parse(actualGroupResult.Value[label]));
                    }
                }
            }
        }