//[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))); }