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