Skip to content

Commit

Permalink
Spsh 1172 (#723)
Browse files Browse the repository at this point in the history
* add technical user with role

* seed technical users

* remove setting kcid in migration

* fix technical user seeding

* adjust test seeding

* rename seeding file

* adjust test

* remove unnecessary code

* test no id in technical user seeding

* implementing overrideID's

* add overrideID to rolle, service-provider, personenkext

* add technical User override Id, add uuid validation

* write tests for isValidUuid

* writing test for personenkontext seeding overrideId

* writing test for rolle seeding with overrideId

* add overrideId to service-provider factory

* add overrideId test for service-provider

* move validation functions

* remove overrideId from repos, adjust tests, set create in repos to public

* adding rolle integration test for overrideIDd

* addings tests and test files for seeding

* change id to number, remove empty space, wrap in if clause, move position id position in PersonCreationParama

* fix test for organisation seeding

---------

Co-authored-by: Timo K <[email protected]>
Co-authored-by: Niklas Koopmann <[email protected]>
  • Loading branch information
3 people authored Nov 4, 2024
1 parent c889272 commit ffbf6e4
Show file tree
Hide file tree
Showing 22 changed files with 268 additions and 24 deletions.
31 changes: 28 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
"redis": "^4.6.13",
"reflect-metadata": "^0.1.14",
"rxjs": "^7.2.0",
"uuid": "^10.0.0",
"winston": "^3.13.0"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion seeding/dev/01/07_organisation.json
Original file line number Diff line number Diff line change
Expand Up @@ -5302,4 +5302,4 @@
"zugehoerigZu": 64
}
]
}
}
26 changes: 26 additions & 0 deletions seeding/seeding-integration-test/all/01/02_person.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,32 @@
"auskunftssperre": null,
"dataProvider": "431d8433-759c-4dbe-aaab-00b9a781f467"
},
{
"id": 3,
"overrideId": "8b60298f-8d9e-4764-a48f-ad8e17275e5e",
"referrer": null,
"mandant": "023c68a8-83a8-487f-812e-e4662c9862e1",
"stammorganisation": null,
"vorname": "Max",
"familienname": "Mustermann",
"initialenfamilienname": null,
"initialenvorname": null,
"rufname": null,
"titel": null,
"anrede": null,
"namenssuffix": null,
"namenspraefix": null,
"sortierindex": null,
"geburt": {
"datum": "2023-08-26T20:28:01.000Z",
"geburtsort": "Hamburg"
},
"geschlecht": "m",
"loaklisierung": null,
"vertrauensstufe": null,
"auskunftssperre": null,
"dataProvider": "431d8433-759c-4dbe-aaab-00b9a781f467"
},
{
"password": "test",
"vorname": "Unused person without Id",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"entityName": "Organisation",
"entities": [
{
"id": 1,
"overrideId": "85a5a9e2-865d-4c79-bbe9-0cff8cc57883",
"kennung": "Organisation1",
"name": "Schule1",
"namensergaenzung": "Keine",
"kuerzel": "01",
"typ": "SCHULE",
"traegerschaft": "05",
"administriertVon": 0
}
]
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"entityName": "Personenkontext",
"entities": [
{
"personId": 1234,
"overrideId": "85a5a9e2-865d-4c79-bbe9-0cff8cc57883",
"organisationId": 1234,
"rolleId": 1234
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"entityName": "Rolle",
"entities": [
{
"id": 0,
"overrideId": "85a5a9e2-865d-4c79-bbe9-0cff8cc57883",
"name": "Rolle1",
"administeredBySchulstrukturknoten": 0,
"rollenart": "LERN",
"merkmale": [],
"systemrechte": [],
"serviceProviderIds": [],
"istTechnisch": false,
"serviceProviderData": []
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"entityName": "ServiceProvider",
"entities": [
{
"name": "itslearning",
"overrideId": "d12f5972-2391-4e9a-9e91-65a917fb4dd0",
"target": "URL",
"url": "https://itslearning.com/de",
"kategorie": "UNTERRICHT",
"logoMimeType": "image/png",
"logoBase64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==",
"providedOnSchulstrukturknoten": 111,
"requires2fa": false
}
]
}
74 changes: 73 additions & 1 deletion src/console/dbseed/domain/db-seed.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,21 @@ describe('DbSeedService', () => {
});
});

describe('with overrideId', () => {
it('should insert one entity in database', async () => {
const fileContentAsStr: string = fs.readFileSync(
`./seeding/seeding-integration-test/organisation/08_organisation_with_overrideId.json`,
'utf-8',
);
const persistedOrganisation: Organisation<true> = DoFactory.createOrganisationAggregate(true);

organisationRepositoryMock.saveSeedData.mockResolvedValueOnce(persistedOrganisation);
await expect(dbSeedService.seedOrganisation(fileContentAsStr)).resolves.not.toThrow(
EntityNotFoundError,
);
});
});

describe('with existing administriertVon', () => {
it('should not throw EntityNotFoundError', async () => {
const fileContentAsStr: string = fs.readFileSync(
Expand Down Expand Up @@ -268,6 +283,25 @@ describe('DbSeedService', () => {
});

describe('seedRolle', () => {
describe('with existing overrideId in seeding file', () => {
it('should insert one entity in database with overrideId as id', async () => {
const fileContentAsStr: string = fs.readFileSync(
`./seeding/seeding-integration-test/rolle/09_rolle_with_override_id.json`,
'utf-8',
);
const persistedRolle: Rolle<true> = DoFactory.createRolle(true);
const serviceProviderMocked: ServiceProvider<true> = createMock<ServiceProvider<true>>();

dbSeedReferenceRepoMock.findUUID.mockResolvedValueOnce(faker.string.uuid()); //mock UUID of referenced serviceProvider
serviceProviderRepoMock.findById.mockResolvedValueOnce(serviceProviderMocked);
dbSeedReferenceRepoMock.findUUID.mockResolvedValueOnce(faker.string.uuid()); //mock UUID of referenced parent
organisationRepositoryMock.findById.mockResolvedValue(createMock<Organisation<true>>()); // mock get-SSK

rolleRepoMock.create.mockResolvedValueOnce(persistedRolle);
await expect(dbSeedService.seedRolle(fileContentAsStr)).resolves.not.toThrow(EntityNotFoundError);
});
});

describe('with existing organisation for administeredBySchulstrukturknoten and ID', () => {
it('should insert one entity in database', async () => {
const fileContentAsStr: string = fs.readFileSync(
Expand All @@ -282,7 +316,7 @@ describe('DbSeedService', () => {
dbSeedReferenceRepoMock.findUUID.mockResolvedValueOnce(faker.string.uuid()); //mock UUID of referenced parent
organisationRepositoryMock.findById.mockResolvedValue(createMock<Organisation<true>>()); // mock get-SSK

rolleRepoMock.save.mockResolvedValueOnce(persistedRolle);
rolleRepoMock.create.mockResolvedValueOnce(persistedRolle);
await expect(dbSeedService.seedRolle(fileContentAsStr)).resolves.not.toThrow(EntityNotFoundError);
});
});
Expand Down Expand Up @@ -375,6 +409,19 @@ describe('DbSeedService', () => {
EntityNotFoundError,
);
});

it('should not throw an error and use the overrideId as id', async () => {
const fileContentAsStr: string = fs.readFileSync(
`./seeding/seeding-integration-test/serviceProvider/04_service-provider-with-overrideId.json`,
'utf-8',
);
dbSeedReferenceRepoMock.findUUID.mockResolvedValue(faker.string.uuid()); //mock UUID providedOnSchulstrukturknoten
organisationRepositoryMock.findById.mockResolvedValue(createMock<Organisation<true>>()); // mock get-SSK

await expect(dbSeedService.seedServiceProvider(fileContentAsStr)).resolves.not.toThrow(
EntityNotFoundError,
);
});
});
});

Expand Down Expand Up @@ -479,6 +526,31 @@ describe('DbSeedService', () => {
);
});
});

describe('with overrideId', () => {
it('should use the overrideId as id', async () => {
const fileContentAsStr: string = fs.readFileSync(
`./seeding/seeding-integration-test/personenkontext/06_personenkontext-with-overrideId.json`,
'utf-8',
);
dbSeedReferenceRepoMock.findUUID.mockResolvedValue(faker.string.uuid()); //mock UUID in seeding-ref-table
personRepoMock.findById.mockResolvedValue(createMock<Person<true>>()); // mock getReferencedPerson

dbSeedReferenceRepoMock.findUUID.mockResolvedValue(faker.string.uuid()); //mock UUID in seeding-ref-table
organisationRepositoryMock.findById.mockResolvedValue(createMock<Organisation<true>>()); // mock getReferencedOrganisation

dbSeedReferenceRepoMock.findUUID.mockResolvedValue(faker.string.uuid()); //mock UUID in seeding-ref-table
rolleRepoMock.findById.mockResolvedValue(
createMock<Rolle<true>>({ merkmale: [RollenMerkmal.BEFRISTUNG_PFLICHT] }),
); // mock getReferencedRolle

personenkontextServiceMock.checkSpecifications.mockResolvedValueOnce(null);

await expect(dbSeedService.seedPersonenkontext(fileContentAsStr)).resolves.not.toThrow(
EntityNotFoundError,
);
});
});
});

describe('getReferencedPerson', () => {
Expand Down
Loading

0 comments on commit ffbf6e4

Please sign in to comment.