Compare commits

..

2 Commits

Author SHA1 Message Date
Michael Hoennig
bc099ada40 explicitly fetch Dennis Krause in RemoveOperationsContactFromPartner 2024-10-30 07:22:08 +01:00
Michael Hoennig
e5cc1da71a add some comments to test-reports 2024-10-30 07:02:48 +01:00
7 changed files with 24 additions and 10 deletions

View File

@ -94,7 +94,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
@Requires("Operations-Contact: Dennis Krause for Test AG") @Requires("Operations-Contact: Dennis Krause for Test AG")
void shouldRemoveOperationsContactFromPartner() { void shouldRemoveOperationsContactFromPartner() {
new RemoveOperationsContactFromPartner(this) new RemoveOperationsContactFromPartner(this)
.given("operationContactRelationUuid", "%{Operations-Contact: Dennis Krause for Test AG}") .given("operationsContactPerson", "Dennis Krause")
.doRun(); .doRun();
} }

View File

@ -68,6 +68,7 @@ public abstract class ScenarioTest extends ContextBasedTest {
@AfterEach @AfterEach
void cleanup() { // final TestInfo testInfo void cleanup() { // final TestInfo testInfo
properties.clear(); properties.clear();
// FIXME: Delete all aliases as well to force HTTP GET queries in each scenario?
testReport.close(); testReport.close();
} }
@ -137,9 +138,10 @@ public abstract class ScenarioTest extends ContextBasedTest {
return aliases.containsKey(alias); return aliases.containsKey(alias);
} }
static UUID uuid(final String name) { static UUID uuid(final String nameWithPlaceholders) {
final UUID alias = ofNullable(knowVariables().get(name)).filter(v -> v instanceof UUID).map(UUID.class::cast).orElse(null); final var resoledName = resolve(nameWithPlaceholders);
assertThat(alias).as("alias '" + name + "' not found in aliases nor in properties [" + final UUID alias = ofNullable(knowVariables().get(resoledName)).filter(v -> v instanceof UUID).map(UUID.class::cast).orElse(null);
assertThat(alias).as("alias '" + resoledName + "' not found in aliases nor in properties [" +
knowVariables().keySet().stream().map(v -> "'" + v + "'").collect(Collectors.joining(", ")) + "]" knowVariables().keySet().stream().map(v -> "'" + v + "'").collect(Collectors.joining(", ")) + "]"
).isNotNull(); ).isNotNull();
return alias; return alias;

View File

@ -19,7 +19,7 @@ public class CreateSelfDebitorForPartner extends UseCase<CreateSelfDebitorForPar
httpGet("/api/hs/office/relations?relationType=PARTNER&personData=" + uriEncoded("%{partnerPersonTradeName}")) httpGet("/api/hs/office/relations?relationType=PARTNER&personData=" + uriEncoded("%{partnerPersonTradeName}"))
.expecting(OK).expecting(JSON), .expecting(OK).expecting(JSON),
response -> response.expectArrayElements(1).getFromBody("[0].holder.uuid"), response -> response.expectArrayElements(1).getFromBody("[0].holder.uuid"),
"From that output above, we're taking the UUID of the holder of the first result element.", "In production data this query could result in multiple outputs. In that case, you have to find out which is the right one.",
"**HINT**: With production data, you might get multiple results and have to decide which is the right one." "**HINT**: With production data, you might get multiple results and have to decide which is the right one."
); );

View File

@ -21,7 +21,8 @@ public class AddOperationsContactToPartner extends UseCase<AddOperationsContactT
keep("Person: %{partnerPersonTradeName}", () -> keep("Person: %{partnerPersonTradeName}", () ->
httpGet("/api/hs/office/persons?name=" + uriEncoded("%{partnerPersonTradeName}")) httpGet("/api/hs/office/persons?name=" + uriEncoded("%{partnerPersonTradeName}"))
.expecting(OK).expecting(JSON), .expecting(OK).expecting(JSON),
response -> response.expectArrayElements(1).getFromBody("[0].uuid") response -> response.expectArrayElements(1).getFromBody("[0].uuid"),
"In production data this query could result in multiple outputs. In that case, you have to find out which is the right one."
); );
keep("Person: %{operationsContactGivenName} %{operationsContactFamilyName}", keep("Person: %{operationsContactGivenName} %{operationsContactFamilyName}",

View File

@ -21,7 +21,8 @@ public class AddRepresentativeToPartner extends UseCase<AddRepresentativeToPartn
keep("Person: %{partnerPersonTradeName}", () -> keep("Person: %{partnerPersonTradeName}", () ->
httpGet("/api/hs/office/persons?name=" + uriEncoded("%{partnerPersonTradeName}")) httpGet("/api/hs/office/persons?name=" + uriEncoded("%{partnerPersonTradeName}"))
.expecting(OK).expecting(JSON), .expecting(OK).expecting(JSON),
response -> response.expectArrayElements(1).getFromBody("[0].uuid") response -> response.expectArrayElements(1).getFromBody("[0].uuid"),
"In production data this query could result in multiple outputs. In that case, you have to find out which is the right one."
); );
keep("Person: %{representativeGivenName} %{representativeFamilyName}", () -> keep("Person: %{representativeGivenName} %{representativeFamilyName}", () ->

View File

@ -24,7 +24,8 @@ public class CreatePartner extends UseCase<CreatePartner> {
keep("Person: Hostsharing eG", () -> keep("Person: Hostsharing eG", () ->
httpGet("/api/hs/office/persons?name=Hostsharing+eG") httpGet("/api/hs/office/persons?name=Hostsharing+eG")
.expecting(OK).expecting(JSON), .expecting(OK).expecting(JSON),
response -> response.expectArrayElements(1).getFromBody("[0].uuid") response -> response.expectArrayElements(1).getFromBody("[0].uuid"),
"Even in production data we expect this query to return just a single result." // TODO.impl: add constraint?
); );
keep("Person: %{tradeName}", () -> keep("Person: %{tradeName}", () ->

View File

@ -3,7 +3,9 @@ package net.hostsharing.hsadminng.hs.office.scenarios.subscription;
import net.hostsharing.hsadminng.hs.office.scenarios.UseCase; import net.hostsharing.hsadminng.hs.office.scenarios.UseCase;
import net.hostsharing.hsadminng.hs.office.scenarios.ScenarioTest; import net.hostsharing.hsadminng.hs.office.scenarios.ScenarioTest;
import static io.restassured.http.ContentType.JSON;
import static org.springframework.http.HttpStatus.NO_CONTENT; import static org.springframework.http.HttpStatus.NO_CONTENT;
import static org.springframework.http.HttpStatus.OK;
public class RemoveOperationsContactFromPartner extends UseCase<RemoveOperationsContactFromPartner> { public class RemoveOperationsContactFromPartner extends UseCase<RemoveOperationsContactFromPartner> {
@ -14,7 +16,14 @@ public class RemoveOperationsContactFromPartner extends UseCase<RemoveOperations
@Override @Override
protected HttpResponse run() { protected HttpResponse run() {
return httpDelete("/api/hs/office/relations/" + uuid("operationContactRelationUuid")) keep("Operations-Contact: %{operationsContactPerson}", () ->
httpGet("/api/hs/office/relations?relationType=OPERATIONS&name=" + uriEncoded("%{operationsContactPerson}"))
.expecting(OK).expecting(JSON),
response -> response.expectArrayElements(1).getFromBody("[0].uuid"),
"In production data this query could result in multiple outputs. In that case, you have to find out which is the right one."
);
return httpDelete("/api/hs/office/relations/" + uuid("Operations-Contact: %{operationsContactPerson}"))
.expecting(NO_CONTENT); .expecting(NO_CONTENT);
} }
} }