From 0457f41da27491345b01eccac9089d6cff477c43 Mon Sep 17 00:00:00 2001 From: benedwards Date: Fri, 15 Dec 2023 16:02:39 +0000 Subject: [PATCH] Added postpone tests --- .../uk/gov/hmcts/juror/performance/Util.java | 9 +- .../scenario/AvailablePoolsScenario.java | 74 +++++++++++ .../JurorRecordDeferralScenario.java | 65 ++++++++++ .../JurorRecordExcusalScenario.java | 57 +++++++++ .../JurorRecordPostponeScenario.java | 39 ++++++ .../JurorRecordUpdateScenario.java | 121 +++--------------- ...imulation.java => DeferralSimulation.java} | 9 +- ...Simulation.java => ExcusalSimulation.java} | 9 +- .../simulation/PostponeSimulation.java | 47 +++++++ 9 files changed, 316 insertions(+), 114 deletions(-) create mode 100644 src/gatling/java/uk/gov/hmcts/juror/performance/scenario/AvailablePoolsScenario.java create mode 100644 src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordDeferralScenario.java create mode 100644 src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordExcusalScenario.java create mode 100644 src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordPostponeScenario.java rename src/gatling/java/uk/gov/hmcts/juror/performance/simulation/{summonsreply/SummonsManagementDeferralSimulation.java => DeferralSimulation.java} (89%) rename src/gatling/java/uk/gov/hmcts/juror/performance/simulation/{summonsreply/SummonsManagementExcusalSimulation.java => ExcusalSimulation.java} (88%) create mode 100644 src/gatling/java/uk/gov/hmcts/juror/performance/simulation/PostponeSimulation.java diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/Util.java b/src/gatling/java/uk/gov/hmcts/juror/performance/Util.java index f34a2ea0..283b6a8b 100644 --- a/src/gatling/java/uk/gov/hmcts/juror/performance/Util.java +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/Util.java @@ -11,7 +11,6 @@ import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -28,6 +27,8 @@ public class Util { public static final Map PASSWORD_MAP; public static final List OWNER_LIST; + public static final DateTimeFormatter STANDARD_DATE_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + private static final LocalDateGeneratorImpl LOCAL_DATE_GENERATOR = new LocalDateGeneratorImpl( LocalDate.now().plusWeeks(10),//Must be after jurorPool ret_date (check data generation library) LocalDate.now().plusWeeks(25) @@ -143,4 +144,10 @@ private static String formatNumber(int value) { public static void resetCounter() { COUNTER.set(0); } + + public static String convertStringDate(String postponeNewServiceStart, String fromPattern, String toPattern) { + return LocalDate.parse(postponeNewServiceStart, + DateTimeFormatter.ofPattern(fromPattern)) + .format(DateTimeFormatter.ofPattern(toPattern)); + } } diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/AvailablePoolsScenario.java b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/AvailablePoolsScenario.java new file mode 100644 index 00000000..b622796f --- /dev/null +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/AvailablePoolsScenario.java @@ -0,0 +1,74 @@ +package uk.gov.hmcts.juror.performance.scenario; + +import io.gatling.javaapi.core.ChainBuilder; +import io.gatling.javaapi.http.HttpRequestActionBuilder; +import uk.gov.hmcts.juror.performance.Util; +import uk.gov.hmcts.juror.support.generation.generators.value.RandomFromCollectionGeneratorImpl; + +import static io.gatling.javaapi.core.CoreDsl.css; +import static io.gatling.javaapi.core.CoreDsl.exec; +import static io.gatling.javaapi.core.CoreDsl.group; +import static io.gatling.javaapi.core.CoreDsl.substring; +import static io.gatling.javaapi.http.HttpDsl.http; + +public class AvailablePoolsScenario { + private static final String GROUP_NAME = "Available Pools"; + private static final String BASE_URL = "/juror-management/juror/#{juror_number}/available-pools"; + + + public static ChainBuilder postDeferralMaintenance() { + return postDeferralMaintenance(Util.getNewScenarioId()); + } + + public static ChainBuilder postDeferralMaintenance(String scenarioId) { + return postPoolRequestInternal(scenarioId, "Deferral Maintenance"); + } + + public static HttpRequestActionBuilder applyChecks(HttpRequestActionBuilder http) { + return http + //Validates we are on either the select a pool for this date or no active pools screen + .check(css("h1.govuk-heading-l") + .transform(value -> { + if (value != null && ( + value.equals("There are no active pools for this date") + || value.equals("Select a pool for this date")) + ) { + return value; + } + return null; + }).notNull().saveAs("headingValue")) + //If we are on select pool screen sae all the shown pools for later use + .checkIf(session -> { + String headingValue = session.getString("headingValue"); + return headingValue != null + && headingValue.equals("Select a pool for this date"); + }).then(css("input[name=\"deferralDateAndPool\"]","value") + .findAll().notNull().saveAs("deferralDateAndPools") + ); + } + + public static ChainBuilder postPoolRequest() { + return postPoolRequest(Util.getNewScenarioId()); + } + + public static ChainBuilder postPoolRequest(String scenarioId) { + return exec(session -> session.set("deferralDateAndPoolDate", + new RandomFromCollectionGeneratorImpl<>(session.getList("deferralDateAndPools")) + .generate())) + .exec(postPoolRequestInternal(scenarioId, "Pool Request")); + } + + public static ChainBuilder postPoolRequestInternal(String scenarioId, String name) { + return group(scenarioId + GROUP_NAME + " - POST - " + name) + .on(exec( + http("POST - Available pools - " + name) + .post(BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("deferralDateAndPool", "#{deferralDateAndPoolDate}") + .formParam("_csrf", "#{csrf}") + .check(Util.validatePageIdentifier("juror record - overview")) + .check(substring("Juror record updated: Postponed")) + ) + ); + } +} diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordDeferralScenario.java b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordDeferralScenario.java new file mode 100644 index 00000000..cb7f4de1 --- /dev/null +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordDeferralScenario.java @@ -0,0 +1,65 @@ +package uk.gov.hmcts.juror.performance.scenario.jurorrecord; + +import io.gatling.javaapi.core.ChainBuilder; +import uk.gov.hmcts.juror.performance.Feeders; +import uk.gov.hmcts.juror.performance.Util; + +import static io.gatling.javaapi.core.CoreDsl.feed; +import static io.gatling.javaapi.core.CoreDsl.group; +import static io.gatling.javaapi.core.CoreDsl.substring; +import static io.gatling.javaapi.http.HttpDsl.http; + +public class JurorRecordDeferralScenario { + private static final String GROUP_NAME = JurorRecordUpdateScenario.GROUP_NAME + " - deferral"; + private static final String BASE_URL = JurorRecordUpdateScenario.BASE_URL + "/deferral"; + + public static ChainBuilder postDeferalGrant() { + return postDeferalGrant(Util.getNewScenarioId()); + } + + public static ChainBuilder postDeferalGrant(String scenarioId) { + return group(scenarioId + GROUP_NAME + " - POST - GRANT") + .on( + feed(Feeders.DEFERAL_CODE_FEEDER).exec( + http("POST - Juror Record - Update Record - deferral - GRANT") + .post(BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("deferralReason", "#{exc_code}") + .formParam("deferralDecision", "GRANT") + .formParam("deferralDateSelection", "otherDate") + .formParam("deferralDate", Util.createDateString(Util.STANDARD_DATE_FORMATTER)) + .formParam("hearingDate", "") + .formParam("jurorNumber", "#{juror_number}") + .formParam("_csrf", "#{csrf}") + .formParam("version", "") + .check(Util.validatePageIdentifier("juror record - overview")) + .check(substring("Deferral granted")) + ) + ); + } + + public static ChainBuilder postDeferalRefuse() { + return postDeferalRefuse(Util.getNewScenarioId()); + } + + public static ChainBuilder postDeferalRefuse(String scenarioId) { + return group(scenarioId + GROUP_NAME + " - POST - REFUSE") + .on( + feed(Feeders.DEFERAL_CODE_FEEDER) + .exec( + http("POST - Juror Record - Update Record - deferral - REFUSE") + .post(BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("deferralReason", "#{exc_code}") + .formParam("deferralDecision", "REFUSE") + .formParam("deferralDate", "") + .formParam("hearingDate", "") + .formParam("jurorNumber", "#{juror_number}") + .formParam("_csrf", "#{csrf}") + .formParam("version", "") + .check(Util.validatePageIdentifier("juror record - overview")) + .check(substring("Deferral refused")) + ) + ); + } +} diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordExcusalScenario.java b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordExcusalScenario.java new file mode 100644 index 00000000..3a0c8638 --- /dev/null +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordExcusalScenario.java @@ -0,0 +1,57 @@ +package uk.gov.hmcts.juror.performance.scenario.jurorrecord; + +import io.gatling.javaapi.core.ChainBuilder; +import uk.gov.hmcts.juror.performance.Feeders; +import uk.gov.hmcts.juror.performance.Util; + +import static io.gatling.javaapi.core.CoreDsl.feed; +import static io.gatling.javaapi.core.CoreDsl.group; +import static io.gatling.javaapi.core.CoreDsl.substring; +import static io.gatling.javaapi.http.HttpDsl.http; + +public class JurorRecordExcusalScenario { + private static final String GROUP_NAME = JurorRecordUpdateScenario.GROUP_NAME + " - excusal"; + private static final String BASE_URL = JurorRecordUpdateScenario.BASE_URL + "/excusal"; + + public static ChainBuilder postExcusalGrant() { + return postExcusalGrant(Util.getNewScenarioId()); + } + + public static ChainBuilder postExcusalGrant(String scenarioId) { + return group(scenarioId + GROUP_NAME + " - POST - GRANT") + .on( + feed(Feeders.EXCUSAL_CODE_FEEDER) + .exec( + http("POST - Juror Record - Update Record - Excusal - GRANT") + .post(BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("excusalCode", "#{exc_code}") + .formParam("excusalDecision", "GRANT") + .formParam("_csrf", "#{csrf}") + .check(Util.validatePageIdentifier("juror record - overview")) + .check(substring("Excusal granted")) + ) + ); + } + + public static ChainBuilder postExcusalRefuse() { + return postExcusalRefuse(Util.getNewScenarioId()); + } + + public static ChainBuilder postExcusalRefuse(String scenarioId) { + return group(scenarioId + GROUP_NAME + " - POST - REFUSE") + .on( + feed(Feeders.EXCUSAL_CODE_FEEDER) + .exec( + http("POST - Juror Record - Update Record - Excusal - REFUSE") + .post(BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("excusalCode", "#{exc_code}") + .formParam("excusalDecision", "REFUSE") + .formParam("_csrf", "#{csrf}") + .check(Util.validatePageIdentifier("juror record - overview")) + .check(substring("Excusal refused")) + ) + ); + } +} diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordPostponeScenario.java b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordPostponeScenario.java new file mode 100644 index 00000000..6bb36e41 --- /dev/null +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordPostponeScenario.java @@ -0,0 +1,39 @@ +package uk.gov.hmcts.juror.performance.scenario.jurorrecord; + +import io.gatling.javaapi.core.ChainBuilder; +import uk.gov.hmcts.juror.performance.Util; +import uk.gov.hmcts.juror.performance.scenario.AvailablePoolsScenario; +import uk.gov.hmcts.juror.support.generation.util.RandomGenerator; + +import java.time.LocalDate; + +import static io.gatling.javaapi.core.CoreDsl.exec; +import static io.gatling.javaapi.core.CoreDsl.group; +import static io.gatling.javaapi.http.HttpDsl.http; + +public class JurorRecordPostponeScenario { + private static final String GROUP_NAME = JurorRecordUpdateScenario.GROUP_NAME + " - postpone"; + + private static final String BASE_URL = JurorRecordUpdateScenario.BASE_URL + "/postpone-date"; + + public static ChainBuilder postPostponeDate() { + return group(Util.getNewScenarioId() + GROUP_NAME + " - POST - date") + .on( + exec(session -> { + String minDate = session.getString("postponeNewServiceStartMinDateStr"); + + assert minDate != null; + LocalDate newDate = LocalDate.from(Util.STANDARD_DATE_FORMATTER.parse(minDate)) + .plusWeeks(RandomGenerator.nextInt(1, 3)); + return session.set("postponeNewServiceStart", Util.STANDARD_DATE_FORMATTER.format(newDate)); + }).exec( + AvailablePoolsScenario.applyChecks(http("POST - Juror Record - Update Record - postpone - date") + .post(BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("postponeTo", "#{postponeNewServiceStart}") + .formParam("_csrf", "#{csrf}") + ) + ) + ); + } +} diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordUpdateScenario.java b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordUpdateScenario.java index 015c14b1..ec5f2f30 100644 --- a/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordUpdateScenario.java +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/scenario/jurorrecord/JurorRecordUpdateScenario.java @@ -1,27 +1,20 @@ package uk.gov.hmcts.juror.performance.scenario.jurorrecord; import io.gatling.javaapi.core.ChainBuilder; -import uk.gov.hmcts.juror.performance.Feeders; import uk.gov.hmcts.juror.performance.Util; -import java.time.format.DateTimeFormatter; - -import static io.gatling.javaapi.core.CoreDsl.bodyString; +import static io.gatling.javaapi.core.CoreDsl.css; import static io.gatling.javaapi.core.CoreDsl.exec; -import static io.gatling.javaapi.core.CoreDsl.exitHere; -import static io.gatling.javaapi.core.CoreDsl.feed; import static io.gatling.javaapi.core.CoreDsl.group; -import static io.gatling.javaapi.core.CoreDsl.substring; import static io.gatling.javaapi.http.HttpDsl.http; public final class JurorRecordUpdateScenario { - private static final String GROUP_NAME = "Juror Record - Update"; + public static final String GROUP_NAME = "Juror Record - Update"; public static final String BASE_URL = "/juror-management/juror/#{juror_number}/update"; - private static final DateTimeFormatter deferralDateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private JurorRecordUpdateScenario() { @@ -58,101 +51,19 @@ public static ChainBuilder postUpdateRecordExcusal() { ); } - public static class Deferral { - public static ChainBuilder postDeferalGrant() { - return postDeferalGrant(Util.getNewScenarioId()); - } - - public static ChainBuilder postDeferalGrant(String scenarioId) { - return group(scenarioId + GROUP_NAME + " - POST - deferral - GRANT") - .on( - feed(Feeders.DEFERAL_CODE_FEEDER).exec( - http("POST - Juror Record - Update Record - deferral - GRANT") - .post(JurorRecordUpdateScenario.BASE_URL + "/deferral") - .headers(Util.COMMON_HEADERS) - .formParam("deferralReason", "#{exc_code}") - .formParam("deferralDecision", "GRANT") - .formParam("deferralDateSelection", "otherDate") - .formParam("deferralDate", Util.createDateString(deferralDateFormatter)) - .formParam("hearingDate", "") - .formParam("jurorNumber", "#{juror_number}") - .formParam("_csrf", "#{csrf}") - .formParam("version", "") - .check(Util.validatePageIdentifier("juror record - overview")) - .check(substring("Deferral granted")) - ) - ); - } - - public static ChainBuilder postDeferalRefuse() { - return postDeferalRefuse(Util.getNewScenarioId()); - } - - public static ChainBuilder postDeferalRefuse(String scenarioId) { - return group(scenarioId + GROUP_NAME + " - POST - deferral - REFUSE") - .on( - feed(Feeders.DEFERAL_CODE_FEEDER) - .exec( - http("POST - Juror Record - Update Record - deferral - REFUSE") - .post(JurorRecordUpdateScenario.BASE_URL + "/deferral") - .headers(Util.COMMON_HEADERS) - .formParam("deferralReason", "#{exc_code}") - .formParam("deferralDecision", "REFUSE") - .formParam("deferralDate", "") - .formParam("hearingDate", "") - .formParam("jurorNumber", "#{juror_number}") - .formParam("_csrf", "#{csrf}") - .formParam("version", "") - .check(bodyString()) - .check(Util.validatePageIdentifier("juror record - overview")) - .check(substring("Deferral refused")) - ) - ); - } - } - - public static class Excusal { - - public static ChainBuilder postExcusalGrant() { - return postExcusalGrant(Util.getNewScenarioId()); - } - public static ChainBuilder postExcusalGrant(String scenarioId) { - return group(scenarioId + GROUP_NAME + " - POST - deferral - GRANT") - .on( - feed(Feeders.EXCUSAL_CODE_FEEDER) - .exec( - http("POST - Juror Record - Update Record - Excusal - GRANT") - .post(JurorRecordUpdateScenario.BASE_URL + "/excusal") - .headers(Util.COMMON_HEADERS) - .formParam("excusalCode", "#{exc_code}") - .formParam("excusalDecision", "GRANT") - .formParam("_csrf", "#{csrf}") - .check(bodyString()) - .check(Util.validatePageIdentifier("juror record - overview")) - .check(substring("Excusal granted")) - ) - ); - } - - public static ChainBuilder postExcusalRefuse() { - return postExcusalRefuse(Util.getNewScenarioId()); - } - public static ChainBuilder postExcusalRefuse(String scenarioId) { - return group(scenarioId + GROUP_NAME + " - POST - deferral - REFUSE") - .on( - feed(Feeders.EXCUSAL_CODE_FEEDER) - .exec( - http("POST - Juror Record - Update Record - Excusal - REFUSE") - .post(JurorRecordUpdateScenario.BASE_URL + "/excusal") - .headers(Util.COMMON_HEADERS) - .formParam("excusalCode", "#{exc_code}") - .formParam("excusalDecision", "REFUSE") - .formParam("_csrf", "#{csrf}") - .check(bodyString()) - .check(Util.validatePageIdentifier("juror record - overview")) - .check(substring("Excusal refused")) - ) - ); - } + public static ChainBuilder postUpdateRecordPostpone() { + return group(Util.getNewScenarioId() + GROUP_NAME + " - POST - postpone") + .on( + exec( + http("POST - Juror Record - Update Record - postpone") + .post(JurorRecordUpdateScenario.BASE_URL) + .headers(Util.COMMON_HEADERS) + .formParam("jurorRecordUpdate", "postpone") + .formParam("jurorDeceased", "") + .formParam("_csrf", "#{csrf}") + .check(Util.validatePageIdentifier("Update Juror Record - Postpone")) + .check(css("#postponeTo", "data-mindate").exists().saveAs("postponeNewServiceStartMinDateStr")) + ) + ); } } diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/summonsreply/SummonsManagementDeferralSimulation.java b/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/DeferralSimulation.java similarity index 89% rename from src/gatling/java/uk/gov/hmcts/juror/performance/simulation/summonsreply/SummonsManagementDeferralSimulation.java rename to src/gatling/java/uk/gov/hmcts/juror/performance/simulation/DeferralSimulation.java index fe845f5d..a740d33d 100644 --- a/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/summonsreply/SummonsManagementDeferralSimulation.java +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/DeferralSimulation.java @@ -1,4 +1,4 @@ -package uk.gov.hmcts.juror.performance.simulation.summonsreply; +package uk.gov.hmcts.juror.performance.simulation; import io.gatling.javaapi.core.ChainBuilder; import io.gatling.javaapi.core.Choice; @@ -7,6 +7,7 @@ import uk.gov.hmcts.juror.performance.Util; import uk.gov.hmcts.juror.performance.scenario.JurorRecordSearchScenario; import uk.gov.hmcts.juror.performance.scenario.LoginScenario; +import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordDeferralScenario; import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordScenario; import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordSummonsScenario; import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordUpdateScenario; @@ -21,7 +22,7 @@ import static io.gatling.javaapi.core.CoreDsl.randomSwitchOrElse; import static io.gatling.javaapi.core.CoreDsl.scenario; -public class SummonsManagementDeferralSimulation extends AbstractJurorSimulation { +public class DeferralSimulation extends AbstractJurorSimulation { @Override protected ScenarioBuilder getScenario() { ChainBuilder responded = group("Juror Record - RESPONDED").on( @@ -32,9 +33,9 @@ protected ScenarioBuilder getScenario() { JurorRecordUpdateScenario.postUpdateRecordDeferral(), randomSwitchOrElse().on( Choice.withWeight(87, - JurorRecordUpdateScenario.Deferral.postDeferalGrant(Util.getNewScenarioId())), + JurorRecordDeferralScenario.postDeferalGrant(Util.getNewScenarioId())), Choice.withWeight(13, - JurorRecordUpdateScenario.Deferral.postDeferalRefuse(Util.getLastScenarioId())) + JurorRecordDeferralScenario.postDeferalRefuse(Util.getLastScenarioId())) ).orElse(exitHere()) ) ); diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/summonsreply/SummonsManagementExcusalSimulation.java b/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/ExcusalSimulation.java similarity index 88% rename from src/gatling/java/uk/gov/hmcts/juror/performance/simulation/summonsreply/SummonsManagementExcusalSimulation.java rename to src/gatling/java/uk/gov/hmcts/juror/performance/simulation/ExcusalSimulation.java index a53e0238..9fe54b9b 100644 --- a/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/summonsreply/SummonsManagementExcusalSimulation.java +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/ExcusalSimulation.java @@ -1,4 +1,4 @@ -package uk.gov.hmcts.juror.performance.simulation.summonsreply; +package uk.gov.hmcts.juror.performance.simulation; import io.gatling.javaapi.core.ChainBuilder; import io.gatling.javaapi.core.Choice; @@ -7,6 +7,7 @@ import uk.gov.hmcts.juror.performance.Util; import uk.gov.hmcts.juror.performance.scenario.JurorRecordSearchScenario; import uk.gov.hmcts.juror.performance.scenario.LoginScenario; +import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordExcusalScenario; import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordScenario; import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordSummonsScenario; import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordUpdateScenario; @@ -22,7 +23,7 @@ import static io.gatling.javaapi.core.CoreDsl.randomSwitchOrElse; import static io.gatling.javaapi.core.CoreDsl.scenario; -public class SummonsManagementExcusalSimulation extends AbstractJurorSimulation { +public class ExcusalSimulation extends AbstractJurorSimulation { @Override protected ScenarioBuilder getScenario() { @@ -34,9 +35,9 @@ protected ScenarioBuilder getScenario() { JurorRecordUpdateScenario.postUpdateRecordExcusal(), randomSwitch().on( Choice.withWeight(66, - JurorRecordUpdateScenario.Excusal.postExcusalGrant(Util.getNewScenarioId())), + JurorRecordExcusalScenario.postExcusalGrant(Util.getNewScenarioId())), Choice.withWeight(34, - JurorRecordUpdateScenario.Excusal.postExcusalRefuse(Util.getLastScenarioId())) + JurorRecordExcusalScenario.postExcusalRefuse(Util.getLastScenarioId())) ) ) ); diff --git a/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/PostponeSimulation.java b/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/PostponeSimulation.java new file mode 100644 index 00000000..5978ddcc --- /dev/null +++ b/src/gatling/java/uk/gov/hmcts/juror/performance/simulation/PostponeSimulation.java @@ -0,0 +1,47 @@ +package uk.gov.hmcts.juror.performance.simulation; + +import io.gatling.javaapi.core.ChainBuilder; +import io.gatling.javaapi.core.ScenarioBuilder; +import uk.gov.hmcts.juror.performance.Feeders; +import uk.gov.hmcts.juror.performance.Util; +import uk.gov.hmcts.juror.performance.scenario.AvailablePoolsScenario; +import uk.gov.hmcts.juror.performance.scenario.JurorRecordSearchScenario; +import uk.gov.hmcts.juror.performance.scenario.LoginScenario; +import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordPostponeScenario; +import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordScenario; +import uk.gov.hmcts.juror.performance.scenario.jurorrecord.JurorRecordUpdateScenario; + +import static io.gatling.javaapi.core.CoreDsl.doIfOrElse; +import static io.gatling.javaapi.core.CoreDsl.exec; +import static io.gatling.javaapi.core.CoreDsl.feed; +import static io.gatling.javaapi.core.CoreDsl.group; +import static io.gatling.javaapi.core.CoreDsl.scenario; + +public class PostponeSimulation extends AbstractJurorSimulation { + @Override + protected ScenarioBuilder getScenario() { + ChainBuilder responded = group("Juror Record - RESPONDED").on( + feed(Feeders.JUROR_NUMBER_FEEDER_BY_STATUS_MAP.get("2")).exec( + LoginScenario.login(), + JurorRecordSearchScenario.jurorRecordSearch(), + JurorRecordScenario.getUpdateRecord(), + JurorRecordUpdateScenario.postUpdateRecordPostpone(), + JurorRecordPostponeScenario.postPostponeDate(), + doIfOrElse(session -> { + String headingValue = session.getString("headingValue"); + return headingValue != null && headingValue.equals("Select a pool for this date"); + }).then( + exec(AvailablePoolsScenario.postPoolRequest()) + ).orElse( + exec(session -> session.set("deferralDateAndPoolDate", + Util.convertStringDate(session.getString("postponeNewServiceStart"), "dd/MM/yyyy", + "yyyy-MM-dd")) + ).exec(AvailablePoolsScenario.postDeferralMaintenance(Util.getLastScenarioId())) + ) + ) + ); + + return scenario("Juror Record update - postpone") + .exitBlockOnFail(exec(responded)); + } +}