Skip to content
Snippets Groups Projects
Commit 679bd726 authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-6259-AnlegenEinerZusammenarbeitAnfrage' (#417) from...

Merge pull request 'OZG-6259-AnlegenEinerZusammenarbeitAnfrage' (#417) from OZG-6259-AnlegenEinerZusammenarbeitAnfrage into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/vorgang-manager/pulls/417


Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
parents 6a31e461 dd4c60e2
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.vorgang.common.migration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import io.mongock.api.annotations.ChangeUnit;
import io.mongock.api.annotations.Execution;
import io.mongock.api.annotations.RollbackExecution;
@ChangeUnit(id = "2024-07-29 17:30:00 OZG-6259", order = "M011", author = "mkuester", runAlways = true)
public class M011_SetDefaultCollaborationLevel { // NOSONAR
private static final String VORGANG_COLLECTION = "vorgang";
static final String HEADER_FIELD = "header";
static final String COLLABORATION_LEVEL_FIELD = "collaborationLevel";
static final String HEADER_COLLABORATION_LEVEL_FIELD = HEADER_FIELD + "." + COLLABORATION_LEVEL_FIELD;
private static final int DEFAULT_COLLABORATION_LEVEL = 0;
@Execution
public void doMigration(MongoTemplate template) {
template.updateMulti(createFilterQuery(), createUpdate(), VORGANG_COLLECTION);
}
private Query createFilterQuery() {
return new Query(Criteria.where(HEADER_COLLABORATION_LEVEL_FIELD).exists(false));
}
private Update createUpdate() {
return new Update().set(HEADER_COLLABORATION_LEVEL_FIELD, DEFAULT_COLLABORATION_LEVEL);
}
@RollbackExecution
public void rollback() {
// kein rollback implementiert
}
}
\ No newline at end of file
package de.ozgcloud.vorgang.common.migration;
import static org.assertj.core.api.Assertions.*;
import org.bson.Document;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.common.test.DataITCase;
@DataITCase
class M011_SetDefaultCollaborationLevelITCase {
private final M011_SetDefaultCollaborationLevel migration = new M011_SetDefaultCollaborationLevel();
private final String nameField = "name";
private final String nameFieldValue = LoremIpsum.getInstance().getWords(1);
private final String organisationsEinheitField = "organisationsEinheitId";
private final String organisationsEinheitFieldValue = LoremIpsum.getInstance().getWords(1);
@Autowired
private MongoTemplate template;
@Autowired
private MigrationDbTestUtils dbTestUtils;
@DisplayName("Do migration")
@Nested
class TestDoMigration {
@BeforeEach
void mock() {
dbTestUtils.dropVorgangCollection();
}
@DisplayName("on missing collaboration level")
@Nested
class TestOnMissingCollaborationLevel {
@BeforeEach
void initVorgang() {
dbTestUtils.saveVorgang(createVorgangWithName());
}
@Test
void shouldSetDefaultCollaborationLevel() {
migration.doMigration(template);
assertThat(getVorgangHeader()).containsEntry(M011_SetDefaultCollaborationLevel.COLLABORATION_LEVEL_FIELD, 0);
}
@Test
void shouldKeepVorgangData() {
migration.doMigration(template);
assertThat(getVorgang()).containsEntry(nameField, nameFieldValue);
}
@Test
void shouldKeepHeaderData() {
migration.doMigration(template);
assertThat(getVorgangHeader()).containsEntry(organisationsEinheitField,
organisationsEinheitFieldValue);
}
}
@DisplayName("on existing collaboration level")
@Nested
class TestOnExistingCollaborationLevel {
@BeforeEach
void initVorgang() {
dbTestUtils.saveVorgang(createVorgangWithCollaborationLevel());
}
@Test
void shouldKeepCollaborationLevel() {
migration.doMigration(template);
assertThat(getVorgangHeader()).containsEntry(M011_SetDefaultCollaborationLevel.COLLABORATION_LEVEL_FIELD, 1);
}
@Test
void shouldKeepVorgangData() {
migration.doMigration(template);
assertThat(getVorgang()).containsEntry(nameField, nameFieldValue);
}
@Test
void shouldKeepHeaderData() {
migration.doMigration(template);
assertThat(getVorgangHeader()).containsEntry(organisationsEinheitField,
organisationsEinheitFieldValue);
}
}
private Document createVorgangWithCollaborationLevel() {
var vorgang = createVorgangWithName();
vorgang.append(M011_SetDefaultCollaborationLevel.HEADER_FIELD, createHeaderWithCollaborationLevel());
return vorgang;
}
private Document createHeaderWithCollaborationLevel() {
var header = createHeaderWithOrganisationsEinheitId();
header.append(M011_SetDefaultCollaborationLevel.COLLABORATION_LEVEL_FIELD, 1);
return header;
}
private Document createVorgangWithName() {
var vorgang = new Document();
vorgang.append(nameField, nameFieldValue);
vorgang.append(M011_SetDefaultCollaborationLevel.HEADER_FIELD, createHeaderWithOrganisationsEinheitId());
return vorgang;
}
private Document createHeaderWithOrganisationsEinheitId() {
var header = new Document();
header.append(organisationsEinheitField, organisationsEinheitFieldValue);
return header;
}
private Document getVorgangHeader() {
return (Document) getVorgang().get(M011_SetDefaultCollaborationLevel.HEADER_FIELD);
}
private Document getVorgang() {
var vorgaenge = dbTestUtils.findVorgang(new Query());
assertThat(vorgaenge).hasSize(1);
return vorgaenge.get(0);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment