create relation with holder- and contact-data, and search for contact emailAddress + relation mark #136
@ -31,7 +31,7 @@ import net.hostsharing.hsadminng.hs.office.scenarios.partner.CreatePartner;
|
|||||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.DeletePartner;
|
import net.hostsharing.hsadminng.hs.office.scenarios.partner.DeletePartner;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.person.ShouldUpdatePersonData;
|
import net.hostsharing.hsadminng.hs.office.scenarios.person.ShouldUpdatePersonData;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.RemoveOperationsContactFromPartner;
|
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.RemoveOperationsContactFromPartner;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.SubscribeToMailinglist;
|
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.SubscribeNewPersonAndContactToMailinglist;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.UnsubscribeFromMailinglist;
|
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.UnsubscribeFromMailinglist;
|
||||||
import net.hostsharing.hsadminng.hs.scenarios.Produces;
|
import net.hostsharing.hsadminng.hs.scenarios.Produces;
|
||||||
import net.hostsharing.hsadminng.hs.scenarios.Requires;
|
import net.hostsharing.hsadminng.hs.scenarios.Requires;
|
||||||
@ -564,7 +564,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
|||||||
@Requires("Person: Test AG")
|
@Requires("Person: Test AG")
|
||||||
@Produces("Subscription: Michael Miller to operations-announce")
|
@Produces("Subscription: Michael Miller to operations-announce")
|
||||||
void shouldSubscribeNewPersonAndContactToMailinglist() {
|
void shouldSubscribeNewPersonAndContactToMailinglist() {
|
||||||
new SubscribeToMailinglist(scenarioTest)
|
new SubscribeNewPersonAndContactToMailinglist(scenarioTest)
|
||||||
// TODO.spec: do we need the personType? or is an operational contact always a natural person? what about distribution lists?
|
// TODO.spec: do we need the personType? or is an operational contact always a natural person? what about distribution lists?
|
||||||
.given("partnerPersonTradeName", "Test AG")
|
.given("partnerPersonTradeName", "Test AG")
|
||||||
.given("subscriberFamilyName", "Miller")
|
.given("subscriberFamilyName", "Miller")
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
package net.hostsharing.hsadminng.hs.office.scenarios.subscription;
|
||||||
|
|
||||||
|
import net.hostsharing.hsadminng.hs.scenarios.UseCase;
|
||||||
|
import net.hostsharing.hsadminng.hs.scenarios.ScenarioTest;
|
||||||
|
|
||||||
|
import static io.restassured.http.ContentType.JSON;
|
||||||
|
import static org.springframework.http.HttpStatus.CREATED;
|
||||||
|
import static org.springframework.http.HttpStatus.OK;
|
||||||
|
|
||||||
|
public class SubscribeNewPersonAndContactToMailinglist extends UseCase<SubscribeNewPersonAndContactToMailinglist> {
|
||||||
|
|
||||||
|
public SubscribeNewPersonAndContactToMailinglist(final ScenarioTest testSuite) {
|
||||||
|
super(testSuite);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected HttpResponse run() {
|
||||||
|
|
||||||
|
obtain("Person: %{partnerPersonTradeName}", () ->
|
||||||
|
httpGet("/api/hs/office/persons?name=" + uriEncoded("%{partnerPersonTradeName}"))
|
||||||
|
.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 httpPost("/api/hs/office/relations", usingJsonBody("""
|
||||||
|
{
|
||||||
|
"type": "SUBSCRIBER",
|
||||||
|
"mark": ${mailingList},
|
||||||
|
"anchor.uuid": ${Person: %{partnerPersonTradeName}},
|
||||||
|
"holder": {
|
||||||
|
"personType": "NATURAL_PERSON",
|
||||||
|
"familyName": ${subscriberFamilyName},
|
||||||
|
"givenName": ${subscriberGivenName}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"caption": "%{subscriberGivenName} %{subscriberFamilyName}",
|
||||||
|
"emailAddresses": {
|
||||||
|
"main": ${subscriberEMailAddress}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""))
|
||||||
|
.expecting(CREATED).expecting(JSON);
|
||||||
|
}
|
||||||
|
}
|
@ -1,62 +0,0 @@
|
|||||||
package net.hostsharing.hsadminng.hs.office.scenarios.subscription;
|
|
||||||
|
|
||||||
import io.restassured.http.ContentType;
|
|
||||||
import net.hostsharing.hsadminng.hs.scenarios.UseCase;
|
|
||||||
import net.hostsharing.hsadminng.hs.scenarios.ScenarioTest;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
|
|
||||||
import static io.restassured.http.ContentType.JSON;
|
|
||||||
import static org.springframework.http.HttpStatus.CREATED;
|
|
||||||
import static org.springframework.http.HttpStatus.OK;
|
|
||||||
|
|
||||||
public class SubscribeToMailinglist extends UseCase<SubscribeToMailinglist> {
|
|
||||||
|
|
||||||
public SubscribeToMailinglist(final ScenarioTest testSuite) {
|
|
||||||
super(testSuite);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected HttpResponse run() {
|
|
||||||
|
|
||||||
obtain("Person: %{partnerPersonTradeName}", () ->
|
|
||||||
httpGet("/api/hs/office/persons?name=" + uriEncoded("%{partnerPersonTradeName}"))
|
|
||||||
.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."
|
|
||||||
);
|
|
||||||
|
|
||||||
obtain("Person: %{subscriberGivenName} %{subscriberFamilyName}", () ->
|
|
||||||
httpPost("/api/hs/office/persons", usingJsonBody("""
|
|
||||||
{
|
|
||||||
"personType": "NATURAL_PERSON",
|
|
||||||
"familyName": ${subscriberFamilyName},
|
|
||||||
"givenName": ${subscriberGivenName}
|
|
||||||
}
|
|
||||||
"""))
|
|
||||||
.expecting(HttpStatus.CREATED).expecting(ContentType.JSON)
|
|
||||||
);
|
|
||||||
|
|
||||||
obtain("Contact: %{subscriberGivenName} %{subscriberFamilyName}", () ->
|
|
||||||
httpPost("/api/hs/office/contacts", usingJsonBody("""
|
|
||||||
{
|
|
||||||
"caption": "%{subscriberGivenName} %{subscriberFamilyName}",
|
|
||||||
"emailAddresses": {
|
|
||||||
"main": ${subscriberEMailAddress}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"""))
|
|
||||||
.expecting(CREATED).expecting(JSON)
|
|
||||||
);
|
|
||||||
|
|
||||||
return httpPost("/api/hs/office/relations", usingJsonBody("""
|
|
||||||
{
|
|
||||||
"type": "SUBSCRIBER",
|
|
||||||
"mark": ${mailingList},
|
|
||||||
"anchor.uuid": ${Person: %{partnerPersonTradeName}},
|
|
||||||
"holder.uuid": ${Person: %{subscriberGivenName} %{subscriberFamilyName}},
|
|
||||||
"contact.uuid": ${Contact: %{subscriberGivenName} %{subscriberFamilyName}}
|
|
||||||
}
|
|
||||||
"""))
|
|
||||||
.expecting(CREATED).expecting(JSON);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user