Esempio n. 1
0
        public async Task LoadTabular_DomainFacetsWithSingleChildFacet_HasExpectedSqlQuery(string uri, string resultFacetCode, string specificationKey, string viewType)
        {
            // Arrange
            var payload = FakeLoadResultPayload(uri, resultFacetCode, specificationKey, viewType);

            // Act
            /* using */ var response = await Fixture.Client.PostAsync("api/result/load", payload);

            // Assert
            response.EnsureSuccessStatusCode();

            var responseContent = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <ResultContentSet>(responseContent);

            Assert.NotNull(result);
            Assert.NotNull(result.Data);
            Assert.NotNull(result.Data.DataCollection);
            Assert.NotNull(result.Meta);
            Assert.NotNull(result.Meta.Columns);
            Assert.NotEmpty(result.Query);

            var sqlQuery = result.Query.Squeeze();

            var matcher = new TabularResultSqlCompilerMatcher();
            var match   = matcher.Match(sqlQuery);

            Assert.True(match.Success);
            Assert.True(match.InnerSelect.Success);
            Assert.NotEmpty(match.InnerSelect.Tables);
        }
Esempio n. 2
0
        public void Compile_StateUnderTest_ExpectedBehavior(string uri, string resultFacetCode, string specificationKey, string viewType)
        {
            // Arrange
            var fakeFacetsConfig = FakeFacetsConfig(uri);
            var fakeQuerySetup   = FakeResultQuerySetup(fakeFacetsConfig, resultFacetCode, specificationKey);
            var facet            = fakeQuerySetup.Facet;
            var fields           = FakeResultConfig(resultFacetCode, specificationKey, viewType).GetSortedFields();

            // Act
            var compiler = new TabularResultSqlCompiler();
            var result   = compiler.Compile(fakeQuerySetup, facet, fields);

            var match = new TabularResultSqlCompilerMatcher().Match(result);

            // Assert
            Assert.True(match.Success);
            Assert.True(match.InnerSelect.Success);
            Assert.NotEmpty(match.InnerSelect.Tables);
        }
Esempio n. 3
0
        //[InlineData("palaeoentomology://*****:*****@3", "tbl_data_types", "tbl_analysis_entities", "tbl_datasets")]
        public async Task Load_VariousFacetConfigs_HasExpectedSqlQuery(string uri, params string[] expectedJoins)
        {
            // Arrange
            var facetsConfig = MockService.FakeFacetsConfig(uri);
            var resultConfig = MockService.FakeResultConfig("result_facet", "site_level", "tabular");
            var bothConfigs  = new LoadPayload {
                facetsConfig = facetsConfig, resultConfig = resultConfig
            };
            var json    = JsonConvert.SerializeObject(bothConfigs);
            var payload = new StringContent(json, Encoding.UTF8, "application/json");

            // Act
            using var response = await Fixture.Client.PostAsync("api/result/load", payload);

            // Assert
            response.EnsureSuccessStatusCode();

            var responseContent = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <ResultContentSet>(responseContent);

            Assert.NotNull(result);
            Assert.NotNull(result.Data);
            Assert.NotNull(result.Data.DataCollection);
            Assert.NotNull(result.Meta);
            Assert.NotNull(result.Meta.Columns);
            Assert.NotEmpty(result.Query);

            var sqlQuery = result.Query.Squeeze();

            var matcher = new TabularResultSqlCompilerMatcher();
            var match   = matcher.Match(sqlQuery);

            Assert.True(match.Success);
            Assert.True(match.InnerSelect.Success);
            Assert.NotEmpty(match.InnerSelect.Tables);

            Assert.True(expectedJoins.All(x => match.InnerSelect.Tables.Contains(x)));
        }