Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dataModelName parameter to GetModelMetadata endpoint #12826

Merged
merged 37 commits into from
May 28, 2024
Merged
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
eed3332
update use-cases yml
nkylstad Jan 30, 2024
36554c6
Begin work
ErlingHauan May 14, 2024
9ef815e
Merge branch 'main' of https://github.com/Altinn/altinn-studio into 1…
ErlingHauan May 14, 2024
506d979
Make route 'model-metadata' take optional parameter dataModelName
ErlingHauan May 14, 2024
2db56fd
Add dataModelName to frontend path
ErlingHauan May 14, 2024
27e8d28
Add dataModelName to frontend path
ErlingHauan May 14, 2024
5803a19
Merge branch '12741-update-endpoint-fetching-datamodel' of https://gi…
ErlingHauan May 14, 2024
85d864e
Add tests for dataModelName param
ErlingHauan May 15, 2024
94d284f
Add tests for dataModelName param
ErlingHauan May 15, 2024
2989174
Include layoutSet parameter in test
ErlingHauan May 16, 2024
aa6296c
Include layoutSet parameter in test
ErlingHauan May 16, 2024
bfff87e
Update path in paths.js
ErlingHauan May 16, 2024
3a35342
Fix 404 test
ErlingHauan May 21, 2024
1882a3c
Refactor arrange part of tests into a separate method
ErlingHauan May 21, 2024
f49613f
Write test GetModelMetadata_Should_Return_Empty_Metadata_Object_When_…
ErlingHauan May 21, 2024
17c6ddf
Update code comments
ErlingHauan May 21, 2024
20b9eff
Add 'null' value for dataModelName where it is used in frontend code
ErlingHauan May 21, 2024
462e74a
Add dataModelName param to datamodelMetadataPath
ErlingHauan May 21, 2024
d6a348a
Merge branch 'main', remote-tracking branch 'origin' into 12741-updat…
ErlingHauan May 22, 2024
b058e24
Add null parameter for dataModelName for all tests
ErlingHauan May 22, 2024
088c60e
Remove redundant test case
ErlingHauan May 22, 2024
ba89e63
Merge branch 'main' into 12741-update-endpoint-fetching-datamodel
ErlingHauan May 22, 2024
4ed5842
Merge branch 'main' into 12741-update-endpoint-fetching-datamodel
ErlingHauan May 22, 2024
56c373c
Merge branch '12741-update-endpoint-fetching-datamodel' of https://gi…
ErlingHauan May 22, 2024
c6e7453
Merge branch '12741-update-endpoint-fetching-datamodel' of https://gi…
ErlingHauan May 22, 2024
d91b76a
Merge branch '12741-update-endpoint-fetching-datamodel' of https://gi…
ErlingHauan May 22, 2024
388b31b
Make dataModelNames into 'undefined' instead of 'null', and into 'tes…
ErlingHauan May 24, 2024
9b9ba70
Add 'test-data-model' where missing
ErlingHauan May 24, 2024
78cfd43
Fix merge conflicts
ErlingHauan May 24, 2024
1bbb149
Fix failing tests
ErlingHauan May 24, 2024
582399b
Add GetModelNameFromLayoutSet method and delete old code
ErlingHauan May 27, 2024
6eeac5b
Add fallback to ApplicationMetadata in GetModelName
ErlingHauan May 28, 2024
3c8e0b9
Dotnet format
ErlingHauan May 28, 2024
39cf8d3
Move layoutSetMocks into a new file
ErlingHauan May 28, 2024
11fe166
Resolve merge conflict
ErlingHauan May 28, 2024
8a9db8e
Rename layoutSetMock -> layoutSetsMock
ErlingHauan May 28, 2024
71bf2c4
Rename layoutSetMock -> layoutSetsMock
ErlingHauan May 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add tests for dataModelName param
  • Loading branch information
ErlingHauan committed May 15, 2024
commit 94d284f01f1066e339a162c8040072f084facce7
Original file line number Diff line number Diff line change
@@ -278,7 +278,7 @@ public async Task<IActionResult> GetAppMetadataDataModelIds(string org, string a
[HttpGet]
[UseSystemTextJson]
[Route("model-metadata")]
public async Task<IActionResult> GetModelMetadata(string org, string app, [FromQuery] string layoutSetName, [FromQuery] [CanBeNull] string dataModelName, CancellationToken cancellationToken)
public async Task<IActionResult> GetModelMetadata(string org, string app, [FromQuery] string layoutSetName, [FromQuery] string dataModelName, CancellationToken cancellationToken)
{
string developer = AuthenticationHelper.GetDeveloperUserName(HttpContext);
ModelMetadata modelMetadata = await _appDevelopmentService.GetModelMetadata(AltinnRepoEditingContext.FromOrgRepoDeveloper(org, app, developer), layoutSetName, dataModelName, cancellationToken);
Original file line number Diff line number Diff line change
@@ -199,7 +199,7 @@ public async Task<ModelMetadata> GetModelMetadata(AltinnRepoEditingContext altin
string modelPath;
ModelMetadata modelMetadata;

if (!string.IsNullOrEmpty(dataModelName))
if (dataModelName != null)
standeren marked this conversation as resolved.
Show resolved Hide resolved
{
modelPath = $"App/models/{dataModelName}.schema.json";
modelMetadata = await _schemaModelService.GenerateModelMetadataFromJsonSchema(altinnRepoEditingContext, modelPath, cancellationToken);
Original file line number Diff line number Diff line change
@@ -20,16 +20,38 @@ public GetModelMetadataTests(WebApplicationFactory<Program> factory) : base(fact
}

[Theory]
[InlineData("ttd", "app-with-layoutsets", "testUser", "layoutSet1", "TestData/Model/Metadata/datamodel.json")]
[InlineData("ttd", "app-without-layoutsets", "testUser", null, "TestData/Model/Metadata/datamodel.json")]
public async Task GetModelMetadata_Should_Return_ModelMetadata(string org, string app, string developer, string layoutSetName, string expectedModelMetadataPath)
[InlineData("ttd", "app-with-layoutsets", "testUser", "layoutSet1", null, "TestData/Model/Metadata/datamodel.json")]
[InlineData("ttd", "app-without-layoutsets", "testUser", null, null, "TestData/Model/Metadata/datamodel.json")]
public async Task GetModelMetadata_Should_Return_ModelMetadata_From_LayoutSetParam(string org, string app, string developer, string layoutSetName, string dataModelName, string expectedModelMetadataPath)
{
string targetRepository = TestDataHelper.GenerateTestRepoName();
await CopyRepositoryForTest(org, app, developer, targetRepository);

string expectedModelMetadata = await AddModelMetadataToRepo(TestRepoPath, expectedModelMetadataPath);

string url = $"{VersionPrefix(org, targetRepository)}/model-metadata?layoutSetName={layoutSetName}";
string url = $"{VersionPrefix(org, targetRepository)}/model-metadata?layoutSetName={layoutSetName}&dataModelName={dataModelName}";
using var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url);

using var response = await HttpClient.SendAsync(httpRequestMessage);
response.StatusCode.Should().Be(HttpStatusCode.OK);

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

responseContent.Should().Be(expectedModelMetadata);
JsonUtils.DeepEquals(expectedModelMetadata, responseContent).Should().BeTrue();
}

[Theory]
[InlineData("ttd", "app-with-layoutsets", "testUser", null, "datamodel", "TestData/Model/Metadata/datamodel.json")]
[InlineData("ttd", "app-without-layoutsets", "testUser", null, "datamodel", "TestData/Model/Metadata/datamodel.json")]
public async Task GetModelMetadata_Should_Return_ModelMetadata_From_DataModelNameParam(string org, string app, string developer, string layoutSetName, string dataModelName, string expectedModelMetadataPath)
{
string targetRepository = TestDataHelper.GenerateTestRepoName();
await CopyRepositoryForTest(org, app, developer, targetRepository);

string expectedModelMetadata = await AddModelMetadataToRepo(TestRepoPath, expectedModelMetadataPath);

string url = $"{VersionPrefix(org, targetRepository)}/model-metadata?layoutSetName={layoutSetName}&dataModelName={dataModelName}";
using var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url);

using var response = await HttpClient.SendAsync(httpRequestMessage);
@@ -44,7 +66,7 @@ public async Task GetModelMetadata_Should_Return_ModelMetadata(string org, strin
[Theory]
[InlineData("ttd", "app-with-layoutsets", "testUser", "layoutSet3")]
[InlineData("ttd", "app-without-layoutsets-mismatch-modelname", "testUser", null)]
public async Task GetModelMetadata_Should_Return_404_When_No_Corresponding_Datamodel_Exists(string org, string app, string developer, string layoutSetName)
public async Task GetModelMetadata_Should_Return_404_When_No_Datamodel_Exists_FromLayoutSetParam(string org, string app, string developer, string layoutSetName)
{
string targetRepository = TestDataHelper.GenerateTestRepoName();
await CopyRepositoryForTest(org, app, developer, targetRepository);
@@ -56,6 +78,21 @@ public async Task GetModelMetadata_Should_Return_404_When_No_Corresponding_Datam
response.StatusCode.Should().Be(HttpStatusCode.NotFound);
}

[Theory]
[InlineData("ttd", "app-with-layoutsets", "testUser", "datamodel3")]
[InlineData("ttd", "app-without-layoutsets-mismatch-modelname", "testUser", null)]
public async Task GetModelMetadata_Should_Return_404_When_No_Datamodel_Exists_FromDataModelNameParam(string org, string app, string developer, string dataModelName)
{
string targetRepository = TestDataHelper.GenerateTestRepoName();
await CopyRepositoryForTest(org, app, developer, targetRepository);

string url = $"{VersionPrefix(org, targetRepository)}/model-metadata?dataModelName={dataModelName}";
using var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url);

using var response = await HttpClient.SendAsync(httpRequestMessage);
response.StatusCode.Should().Be(HttpStatusCode.NotFound);
}

private async Task<string> AddModelMetadataToRepo(string createdFolderPath, string expectedModelMetadataPath)
{
string modelMetadata = SharedResourcesHelper.LoadTestDataAsString(expectedModelMetadataPath);