public async Task Load_VariousFacetConfigs_HasExpectedSqlQuery(string uri, bool checkNotEmpty, params string[] expectedJoins) { // Arrange var facetsConfig = MockService.FakeFacetsConfig(uri); var json = JsonConvert.SerializeObject(facetsConfig); var payload = new StringContent(json, Encoding.UTF8, "application/json"); // Act /* using */ var response = await Fixture.Client.PostAsync("api/facets/load", payload); // Assert response.EnsureSuccessStatusCode(); var responseContent = await response.Content.ReadAsStringAsync(); var facetContent = JsonConvert.DeserializeObject <FacetContent>(responseContent); Assert.NotNull(facetContent); if (checkNotEmpty) { Assert.NotEmpty(facetContent.Items); } // CompareLogic compare = new CompareLogic(); // compare.Config.MembersToIgnore.AddRange(new string[] { "DomainFacet", "TargetFacet", "Facet", "Text" }); // var areEqual = compare.Compare(facetsConfig, facetContent.FacetsConfig).AreEqual; // Will fail if bogus picks are removed // Assert.True(areEqual); var sqlQuery = facetContent.SqlQuery.Squeeze(); var matcher = CategoryCountSqlCompilerMatcher.Create(facetsConfig.TargetFacet.FacetTypeId); var match = matcher.Match(sqlQuery); Assert.True(match.Success); Assert.Equal("count", match.AggregateType); Assert.True(match.InnerSelect.Success); Assert.NotEmpty(match.InnerSelect.Tables); Assert.True(expectedJoins.All(x => match.InnerSelect.Tables.Contains(x))); }
public void Compile_VariousConfigs_ExpectedBehavior(string uri) { // Arrange var fakeFacetsConfig = FakeFacetsConfig(uri); var fakeQuerySetup = FakeCountOrContentQuerySetup(fakeFacetsConfig); var facet = fakeQuerySetup.Facet; var intervalQuery = "( #INTERVAL-QUERY# )"; var countColumn = "dummy_column"; // Act var rangeCategoryCountSqlCompiler = new RangeCategoryCountSqlCompiler(); var result = rangeCategoryCountSqlCompiler.Compile(fakeQuerySetup, facet, intervalQuery, countColumn); // Assert result = result.Squeeze(); var match = CategoryCountSqlCompilerMatcher .Create(facet.FacetTypeId).Match(result); Assert.True(match.Success); Assert.True(match.InnerSelect.Success); Assert.NotEmpty(match.InnerSelect.Tables); }