Exemplo n.º 1
0
        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);
        }