Skip to content

Step Data management

Ričardas edited this page Nov 17, 2022 · 1 revision

Step data ideally should be passed by variables within StepDefs classes. Example:

public class SystemApiStepDefs extends BaseStepDefs {
  @Autowired
  private FeignSystemApi feignSystemApi;

  private ResponseEntity<SystemStatusDto> response;

  @Then("System status is requested")
  public void systemStatusIsRequested() {
    response = feignSystemApi.getSystemStatus();
  }

  @Then("System status is validated")
  public void systemStatusIsValidated() {
    final Validation.Builder validationBuilder = new Validation.Builder()
      .context(response)
      .title("Validate response")
      .assertion(equalsStatusCodeAssertion(HttpStatus.OK));
    validationService.validate(validationBuilder.build());
  }
}

In cases where data is shared cross StepDefs use stepData management methods from BaseStepDefs class. Step data key is an enum, any new key must be defined in BaseStepDefs.StepDataKey

Example:

public class SystemApiStepDefs extends BaseStepDefs {
  @Autowired
  private FeignSystemApi feignSystemApi;

  @Then("System status is requested")
  public void systemStatusIsRequested() {
    var response = feignSystemApi.getSystemStatus();

    putStepData(StepDataKey.RESPONSE, response);
  }

  @Then("System status is validated")
  public void systemStatusIsValidated() {
    ResponseEntity<SystemStatusDto> response = getRequiredStepData(StepDataKey.RESPONSE);

    final Validation.Builder validationBuilder = new Validation.Builder()
      .context(response)
      .title("Validate response")
      .assertion(equalsStatusCodeAssertion(HttpStatus.OK));
    validationService.validate(validationBuilder.build());
  }
}
Clone this wiki locally