Skip to content

Commit

Permalink
Merge branch 'main' into studio-table-components
Browse files Browse the repository at this point in the history
  • Loading branch information
ErlingHauan committed May 15, 2024
2 parents 33a41bb + 240e2c7 commit 6657af5
Show file tree
Hide file tree
Showing 38 changed files with 260 additions and 195 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ await _fileSyncHandlerExecutor.ExecuteWithExceptionHandling(
var layoutSets = await repository.GetLayoutSetsFile(cancellationToken);
if (TryChangeDataType(layoutSets, notification.NewDataType, notification.ConnectedTaskId))
{
await repository.SaveLayoutSetsFile(layoutSets);
await repository.SaveLayoutSets(layoutSets);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ await _fileSyncHandlerExecutor.ExecuteWithExceptionHandling(
var layoutSets = await repository.GetLayoutSetsFile(cancellationToken);
if (TryChangeTaskIds(layoutSets, notification.OldId, notification.NewId))
{
await repository.SaveLayoutSetsFile(layoutSets);
await repository.SaveLayoutSets(layoutSets);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@ public async Task<LayoutSets> GetLayoutSetsFile(CancellationToken cancellationTo
throw new NotFoundException("No layout set was found for this app");
}

public async Task SaveLayoutSetsFile(LayoutSets layoutSets)
public async Task SaveLayoutSets(LayoutSets layoutSets)
{
if (AppUsesLayoutSets())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ private static async Task<LayoutSets> DeleteExistingLayoutSet(AltinnAppGitReposi
{
LayoutSetConfig layoutSetToDelete = layoutSets.Sets.Find(set => set.Id == layoutSetToDeleteId);
layoutSets.Sets.Remove(layoutSetToDelete);
await altinnAppGitRepository.SaveLayoutSetsFile(layoutSets);
await altinnAppGitRepository.SaveLayoutSets(layoutSets);
return layoutSets;
}

Expand All @@ -376,14 +376,14 @@ await altinnAppGitRepository.SaveLayout(layoutSet.Id, AltinnAppGitRepository.Ini
altinnAppGitRepository.InitialLayout);
await altinnAppGitRepository.SaveLayoutSettings(layoutSet.Id,
altinnAppGitRepository.InitialLayoutSettings);
await altinnAppGitRepository.SaveLayoutSetsFile(layoutSets);
await altinnAppGitRepository.SaveLayoutSets(layoutSets);
return layoutSets;
}

private async Task<LayoutSets> UpdateLayoutSetName(AltinnAppGitRepository altinnAppGitRepository, LayoutSets layoutSets, string oldLayoutSetName, string newLayoutSetName)
{
layoutSets.Sets.Find(set => set.Id == oldLayoutSetName).Id = newLayoutSetName;
await altinnAppGitRepository.SaveLayoutSetsFile(layoutSets);
await altinnAppGitRepository.SaveLayoutSets(layoutSets);
return layoutSets;
}

Expand Down
20 changes: 14 additions & 6 deletions backend/src/Designer/Services/Implementation/SchemaModelService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ public async Task DeleteSchema(AltinnRepoEditingContext altinnRepoEditingContext
var altinnCoreFile = altinnGitRepository.GetAltinnCoreFileByRelativePath(relativeFilePath);
var schemaName = altinnGitRepository.GetSchemaName(relativeFilePath);

await DeleteDatatypeFromApplicationMetadata(altinnAppGitRepository, schemaName);
await DeleteDatatypeFromApplicationMetadataAndLayoutSets(altinnAppGitRepository, schemaName);
DeleteRelatedSchemaFiles(altinnAppGitRepository, schemaName, altinnCoreFile.Directory);
}
else
Expand Down Expand Up @@ -338,15 +338,14 @@ private static void UpdateApplicationWithAppLogicModel(ApplicationMetadata appli
application.DataTypes = new List<DataType>();
}

DataType existingLogicElement = application.DataTypes.FirstOrDefault(d => d.AppLogic?.ClassRef != null);
DataType logicElement = application.DataTypes.SingleOrDefault(d => d.Id == dataTypeId);

if (logicElement == null)
{
logicElement = new DataType
{
Id = dataTypeId,
TaskId = existingLogicElement == null ? "Task_1" : null,
TaskId = null,
AllowedContentTypes = new List<string>() { "application/xml" },
MaxCount = 1,
MinCount = 1,
Expand Down Expand Up @@ -407,17 +406,26 @@ private static IEnumerable<string> GetRelatedSchemaFiles(string schemaName, stri
return new List<string>() { jsonSchemaFile, xsdFile, jsonMetadataFile, csharpModelFile };
}

private static async Task DeleteDatatypeFromApplicationMetadata(AltinnAppGitRepository altinnAppGitRepository, string id)
private static async Task DeleteDatatypeFromApplicationMetadataAndLayoutSets(AltinnAppGitRepository altinnAppGitRepository, string id)
{
var applicationMetadata = await altinnAppGitRepository.GetApplicationMetadata();

if (applicationMetadata.DataTypes != null)
{
DataType removeForm = applicationMetadata.DataTypes.Find(m => m.Id == id);
if (altinnAppGitRepository.AppUsesLayoutSets())
{
var layoutSets = await altinnAppGitRepository.GetLayoutSetsFile();
var layoutSet = layoutSets.Sets.Find(set => set.Tasks[0] == removeForm.TaskId);
if (layoutSet is not null)
{
layoutSet.DataType = null;
await altinnAppGitRepository.SaveLayoutSets(layoutSets);
}
}
applicationMetadata.DataTypes.Remove(removeForm);
await altinnAppGitRepository.SaveApplicationMetadata(applicationMetadata);
}

await altinnAppGitRepository.SaveApplicationMetadata(applicationMetadata);
}

private async Task<string> ProcessNewXsd(AltinnAppGitRepository altinnAppGitRepository, MemoryStream xsdMemoryStream, string filePath)
Expand Down
43 changes: 43 additions & 0 deletions backend/tests/Designer.Tests/Services/SchemaModelServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,49 @@ public async Task DeleteSchema_AppRepo_ShouldDelete()
}
}

[Fact]
public async Task DeleteSchema_AppRepoWithLayoutSets_ShouldDelete()
{
// Arrange
var org = "ttd";
var sourceRepository = "app-with-layoutsets";
var developer = "testUser";
var targetRepository = TestDataHelper.GenerateTestRepoName();
var editingContext = AltinnRepoEditingContext.FromOrgRepoDeveloper(org, targetRepository, developer);

await TestDataHelper.CopyRepositoryForTest(org, sourceRepository, developer, targetRepository);
try
{
string dataModelName = "datamodel";
var altinnGitRepositoryFactory = new AltinnGitRepositoryFactory(TestDataHelper.GetTestDataRepositoriesRootDirectory());

ISchemaModelService schemaModelService = new SchemaModelService(altinnGitRepositoryFactory, TestDataHelper.LogFactory, TestDataHelper.ServiceRepositorySettings, TestDataHelper.XmlSchemaToJsonSchemaConverter, TestDataHelper.JsonSchemaToXmlSchemaConverter, TestDataHelper.ModelMetadataToCsharpConverter);
var schemaFiles = schemaModelService.GetSchemaFiles(editingContext);
schemaFiles.Should().HaveCount(1);

var altinnAppGitRepository = altinnGitRepositoryFactory.GetAltinnAppGitRepository(org, targetRepository, developer);
var applicationMetadataBefore = await altinnAppGitRepository.GetApplicationMetadata();
var layoutSetsBefore = await altinnAppGitRepository.GetLayoutSetsFile();

// Act
var schemaToDelete = schemaFiles.First(s => s.FileName == $"{dataModelName}.schema.json");
await schemaModelService.DeleteSchema(editingContext, schemaToDelete.RepositoryRelativeUrl);

// Assert
schemaFiles = schemaModelService.GetSchemaFiles(editingContext);
schemaFiles.Should().HaveCount(0);
var applicationMetadataAfter = await altinnAppGitRepository.GetApplicationMetadata();
applicationMetadataAfter.DataTypes.Should().HaveCount(applicationMetadataBefore.DataTypes.Count - 1);
var layoutSetsAfter = await altinnAppGitRepository.GetLayoutSetsFile();
layoutSetsBefore.Sets.Exists(set => set.DataType == dataModelName).Should().BeTrue();
layoutSetsAfter.Sets.Exists(set => set.DataType == dataModelName).Should().BeFalse();
}
finally
{
TestDataHelper.DeleteAppRepository(org, targetRepository, developer);
}
}

[Fact]
public async Task DeleteSchema_ModelsRepo_ShouldDelete()
{
Expand Down
24 changes: 24 additions & 0 deletions development/data/gitea-teams.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@
"description": "Tilgang til ressursregister",
"includes_all_repositories": true
},
{
"name": "Resources-Publish-AT21",
"permission": "write",
"description": "Deploy av ressurser i AT21",
"includes_all_repositories": true
},
{
"name": "Resources-Publish-AT22",
"permission": "write",
Expand All @@ -65,12 +71,24 @@
"description": "Deploy av ressurser i AT23",
"includes_all_repositories": true
},
{
"name": "Resources-Publish-AT24",
"permission": "write",
"description": "Deploy av ressurser i AT24",
"includes_all_repositories": true
},
{
"name": "Resources-Publish-TT02",
"permission": "write",
"description": "Deploy av ressurser i TT02",
"includes_all_repositories": true
},
{
"name": "AccessLists-AT21",
"permission": "write",
"description": "Skriving av RRR tilgangslister i AT21",
"includes_all_repositories": true
},
{
"name": "AccessLists-AT22",
"permission": "write",
Expand All @@ -83,6 +101,12 @@
"description": "Skriving av RRR tilgangslister i AT23",
"includes_all_repositories": true
},
{
"name": "AccessLists-AT24",
"permission": "write",
"description": "Skriving av RRR tilgangslister i AT24",
"includes_all_repositories": true
},
{
"name": "AccessLists-TT02",
"permission": "write",
Expand Down
8 changes: 8 additions & 0 deletions development/setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,15 @@ const addUserToSomeTestDepTeams = async (env) => {
'Deploy-AT21',
'Deploy-AT22',
'Resources',
'Resources-Publish-AT21',
'Resources-Publish-AT22',
'Resources-Publish-AT23',
'Resources-Publish-AT24',
'Resources-Publish-TT02',
'AccessLists-AT21',
'AccessLists-AT22',
'AccessLists-AT23',
'AccessLists-AT24',
'AccessLists-TT02',
]) {
const existing = teams.find((t) => t.name === teamName);
Expand All @@ -106,11 +110,15 @@ const addUserToSomeTestDepTeams = async (env) => {
'Deploy-AT21',
'Deploy-AT22',
'Resources',
'Resources-Publish-AT21',
'Resources-Publish-AT22',
'Resources-Publish-AT23',
'Resources-Publish-AT24',
'Resources-Publish-TT02',
'AccessLists-AT21',
'AccessLists-AT22',
'AccessLists-AT23',
'AccessLists-AT24',
'AccessLists-TT02',
]) {
const existing = teams.find((t) => t.name === teamName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import postMessages from 'app-shared/utils/postMessages';
import type { PayloadAction } from '@reduxjs/toolkit';
import { HandleServiceInformationActions } from './handleServiceInformationSlice';
import type {
IFetchInitialCommitAction,
IFetchServiceAction,
IFetchServiceConfigAction,
IFetchServiceNameAction,
Expand Down Expand Up @@ -72,25 +71,6 @@ export function* watchHandleSaveServiceNameSaga(): SagaIterator {
yield takeLatest(HandleServiceInformationActions.saveServiceName, handleSaveServiceNameSaga);
}

export function* handleFetchInitialCommitSaga({
payload: { url },
}: PayloadAction<IFetchInitialCommitAction>): SagaIterator {
try {
const result = yield call(get, url);

yield put(HandleServiceInformationActions.fetchInitialCommitFulfilled({ result }));
} catch (error) {
yield put(HandleServiceInformationActions.fetchInitialCommitRejected({ error }));
}
}

export function* watchHandleFetchInitialCommitSaga(): SagaIterator {
yield takeLatest(
HandleServiceInformationActions.fetchInitialCommit,
handleFetchInitialCommitSaga,
);
}

export function* handleFetchServiceConfigSaga({
payload: { url },
}: PayloadAction<IFetchServiceConfigAction>): SagaIterator {
Expand All @@ -103,7 +83,7 @@ export function* handleFetchServiceConfigSaga({
}),
);
} catch (error) {
yield put(HandleServiceInformationActions.fetchInitialCommitRejected({ error }));
yield put(HandleServiceInformationActions.fetchServiceConfigRejected({ error }));

Check warning on line 86 in frontend/app-development/features/overview/handleServiceInformationSagas.ts

View check run for this annotation

Codecov / codecov/patch

frontend/app-development/features/overview/handleServiceInformationSagas.ts#L86

Added line #L86 was not covered by tests
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { PayloadAction } from '@reduxjs/toolkit';
import { createAction, createSlice } from '@reduxjs/toolkit';
import type { ICommit, IServiceDescription, IServiceId, IServiceName } from '../../types/global';
import type { IServiceDescription, IServiceId, IServiceName } from '../../types/global';
import type {
IFetchInitialCommitFulfilled,
IHandleServiceInformationActionRejected,
IFetchServiceFulfilled,
IFetchServiceConfigFulfilled,
Expand All @@ -14,7 +13,6 @@ import type {
IFetchServiceAction,
IFetchServiceConfigAction,
IFetchServiceNameAction,
IFetchInitialCommitAction,
} from './types';
import type { Repository } from 'app-shared/types/Repository';

Expand All @@ -23,7 +21,6 @@ export interface IHandleServiceInformationState {
serviceNameObj: IServiceName;
serviceDescriptionObj: IServiceDescription;
serviceIdObj: IServiceId;
initialCommit: ICommit;
error: Error;
}

Expand All @@ -41,7 +38,6 @@ const initialState: IHandleServiceInformationState = {
serviceId: '',
saving: false,
},
initialCommit: null,
error: null,
};

Expand All @@ -50,17 +46,6 @@ const handleServiceInformationSlice = createSlice({
name: moduleName,
initialState,
reducers: {
fetchInitialCommitFulfilled: (state, action: PayloadAction<IFetchInitialCommitFulfilled>) => {
const { result } = action.payload;
state.initialCommit = result;
},
fetchInitialCommitRejected: (
state,
action: PayloadAction<IHandleServiceInformationActionRejected>,
) => {
const { error } = action.payload;
state.error = error;
},
fetchServiceFulfilled: (state, action: PayloadAction<IFetchServiceFulfilled>) => {
const { repository } = action.payload;
state.repositoryInfo = repository;
Expand Down Expand Up @@ -148,7 +133,6 @@ const actions = {
fetchService: createAction<IFetchServiceAction>(`${moduleName}/fetchService`),
fetchServiceConfig: createAction<IFetchServiceConfigAction>(`${moduleName}/fetchServiceConfig`),
fetchServiceName: createAction<IFetchServiceNameAction>(`${moduleName}/fetchServiceName`),
fetchInitialCommit: createAction<IFetchInitialCommitAction>(`${moduleName}/fetchInitialCommit`),
};

export const HandleServiceInformationActions = {
Expand Down
8 changes: 0 additions & 8 deletions frontend/app-development/features/overview/types.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
import type { Repository } from 'app-shared/types/Repository';

export interface IFetchInitialCommitAction {
url: string;
}

export interface IFetchInitialCommitFulfilled {
result: any;
}

export interface IFetchServiceAction {
url: string;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export const useDeleteDatamodelMutation = () => {
queryClient.removeQueries({
queryKey: [QueryKey.JsonSchema, org, app, xsdPath],
});
queryClient.invalidateQueries({ queryKey: [QueryKey.AppMetadataModelIds, org, app] });
},
});
};
Expand Down
12 changes: 1 addition & 11 deletions frontend/app-development/layout/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,7 @@ import classes from './App.module.css';
import { useAppDispatch, useAppSelector } from '../hooks';
import { getRepositoryType } from 'app-shared/utils/repository';
import { RepositoryType } from 'app-shared/types/global';
import {
repoInitialCommitPath,
repoMetaPath,
serviceConfigPath,
serviceNamePath,
} from 'app-shared/api/paths';
import { repoMetaPath, serviceConfigPath, serviceNamePath } from 'app-shared/api/paths';
import i18next from 'i18next';
import { initReactI18next, useTranslation } from 'react-i18next';
import nb from '../../language/src/nb.json';
Expand Down Expand Up @@ -70,11 +65,6 @@ export function App() {
url: repoMetaPath(org, app),
}),
);
dispatch(
HandleServiceInformationActions.fetchInitialCommit({
url: repoInitialCommitPath(org, app),
}),
);

if (repositoryType === RepositoryType.App) {
dispatch(
Expand Down
Loading

0 comments on commit 6657af5

Please sign in to comment.