Exemple #1
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)));
        }