Skip to content

Commit

Permalink
feat: fix tests [DHIS2-14458]
Browse files Browse the repository at this point in the history
  • Loading branch information
david-mackessy committed Dec 6, 2023
1 parent f799edb commit a224b7a
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Set;
import javax.annotation.Nonnull;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hisp.dhis.common.UID;

/**
Expand All @@ -42,11 +41,11 @@
* @author david mackessy
*/
@Data
@Builder
@NoArgsConstructor
public class MergeParams {
@JsonProperty @Nonnull private Set<UID> sources;
@JsonProperty private Set<UID> sources;

@JsonProperty @Nonnull private UID target;
@JsonProperty private UID target;

@JsonProperty private boolean deleteSources;
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public interface MergeParamsProcessor {
* @param mergeType {@link MergeType}
* @return updated {@link MergeReport} with any errors
*/
default MergeReport processMergeQuery(
default MergeReport processMergeParams(
@Nonnull MergeService mergeService,
@Nonnull MergeParams mergeParams,
@Nonnull MergeType mergeType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ public Set<UID> getSources() {
return Set.copyOf(sources);
}

public static <T extends IdentifiableObject> MergeRequest empty() {
public static MergeRequest empty() {
return MergeRequest.builder().build();
}

@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("sources", sources)
.add("target", target)
.add("sources", sources.toString())
.add("target", target.toString())
.add("deleteSources", deleteSources)
.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,14 @@ private void getSourcesAndVerify(Set<UID> uids, MergeReport report, Set<UID> ind
}

private MergeRequest getTargetAndVerify(
UID target, MergeReport report, Set<UID> indicatorTypes, MergeParams query) {
UID target, MergeReport report, Set<UID> indicatorTypes, MergeParams params) {
return getAndVerifyIndicatorType(target, report, "Target")
.map(
t ->
MergeRequest.<IndicatorType>builder()
MergeRequest.builder()
.sources(indicatorTypes)
.target(t)
.deleteSources(query.isDeleteSources())
.deleteSources(params.isDeleteSources())
.build())
.orElse(MergeRequest.empty());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,17 @@ public void setUpTest() {

@Test
@DisplayName(
"Transform a valid merge query, producing a valid merge request and an error free merge report")
void testGetFromQuery() {
"Transform valid merge params, producing a valid merge request and an error free merge report")
void testGetFromParams() {
// given
MergeParams query =
MergeParams.builder().sources(Set.of(uidA, uidB)).target(uidC).deleteSources(true).build();
MergeParams params = new MergeParams();
params.setSources(Set.of(uidA, uidB));
params.setTarget(uidC);
params.setDeleteSources(true);
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);

// when
MergeRequest request = service.validate(query, mergeReport);
MergeRequest request = service.validate(params, mergeReport);

// then
assertEquals(2, request.getSources().size());
Expand All @@ -106,14 +108,14 @@ void testGetFromQuery() {

@Test
@DisplayName(
"Transform a merge query with missing sources and target, producing an empty merge request and a merge report with errors")
void testGetFromQueryWithErrors() {
"Transform merge params with missing sources and target, producing an empty merge request and a merge report with errors")
void testGetFromParamsWithErrors() {
// given
MergeParams query = MergeParams.builder().build();
MergeParams params = new MergeParams();
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);

// when
MergeRequest request = service.validate(query, mergeReport);
MergeRequest request = service.validate(params, mergeReport);

// then
assertRequestIsEmpty(request);
Expand All @@ -128,14 +130,16 @@ void testGetFromQueryWithErrors() {

@Test
@DisplayName(
"Transform a merge query with invalid source uid, producing an empty merge request and a merge report with an error")
"Transform merge params with invalid source uid, producing an empty merge request and a merge report with an error")
void testSourceNotFound() {
// given
MergeParams query = MergeParams.builder().sources(Set.of(uidA, uidX)).target(uidC).build();
MergeParams params = new MergeParams();
params.setSources(Set.of(uidA, uidX));
params.setTarget(uidC);
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);

// when
MergeRequest request = service.validate(query, mergeReport);
MergeRequest request = service.validate(params, mergeReport);

// then
assertEquals(1, request.getSources().size());
Expand All @@ -148,14 +152,16 @@ void testSourceNotFound() {

@Test
@DisplayName(
"Transform a merge query with invalid target uid, producing an empty merge request and a merge report with error")
"Transform merge params with invalid target uid, producing an empty merge request and a merge report with error")
void testTargetNotFound() {
// given
MergeParams query = MergeParams.builder().sources(Set.of(uidA, uidB)).target(uidX).build();
MergeParams params = new MergeParams();
params.setSources(Set.of(uidA, uidB));
params.setTarget(uidX);
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);

// when
MergeRequest request = service.validate(query, mergeReport);
MergeRequest request = service.validate(params, mergeReport);

// then
assertRequestIsEmpty(request);
Expand All @@ -182,8 +188,10 @@ void testValidate() {
assertEquals(itA, iA.getIndicatorType());
assertEquals(itB, iB.getIndicatorType());
assertEquals(itC, iC.getIndicatorType());
MergeParams params =
MergeParams.builder().sources(Set.of(uidA, uidB)).target(uidC).deleteSources(true).build();
MergeParams params = new MergeParams();
params.setSources(Set.of(uidA, uidB));
params.setTarget(uidC);
params.setDeleteSources(true);

// when an indicator merge request is validated
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);
Expand All @@ -209,8 +217,10 @@ void testValidateWithErrorNoSources() {

assertNotNull(idObjectManager.get(IndicatorType.class, itC.getUid()));
assertEquals(itC, iC.getIndicatorType());
MergeParams params =
MergeParams.builder().sources(Set.of()).target(uidC).deleteSources(true).build();
MergeParams params = new MergeParams();
params.setSources(Set.of());
params.setTarget(uidC);
params.setDeleteSources(true);

// when an indicator merge request is validated
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);
Expand All @@ -222,7 +232,9 @@ void testValidateWithErrorNoSources() {

// and the merge report has errors and the merge request is empty
assertTrue(mergeReport.hasErrorMessages());
assertRequestIsEmpty(validatedRequest);
assertEquals(Set.of(), validatedRequest.getSources());
assertEquals(uidC, validatedRequest.getTarget());
assertTrue(validatedRequest.isDeleteSources());
assertMatchesErrorCodes(mergeReport, Set.of(ErrorCode.E1530));
assertMatchesErrorMessages(
mergeReport, Set.of("At least one source indicator type must be specified"));
Expand All @@ -241,8 +253,10 @@ void testValidateWithErrorNoTarget() {
assertNotNull(idObjectManager.get(IndicatorType.class, itB.getUid()));
assertEquals(itA, iA.getIndicatorType());
assertEquals(itB, iB.getIndicatorType());
MergeParams params =
MergeParams.builder().sources(Set.of(uidA, uidB)).target(null).deleteSources(true).build();
MergeParams params = new MergeParams();
params.setSources(Set.of(uidA, uidB));
params.setTarget(null);
params.setDeleteSources(true);

// when an indicator merge request is validated
MergeReport mergeReport = new MergeReport(MergeType.INDICATOR_TYPE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,15 @@ public class IndicatorTypeController extends AbstractCrudController<IndicatorTyp
@ResponseStatus(HttpStatus.OK)
@PreAuthorize("hasRole('ALL') or hasRole('F_INDICATOR_TYPE_MERGE')")
@PostMapping(value = "/merge", produces = APPLICATION_JSON_VALUE)
public @ResponseBody WebMessage mergeIndicatorTypes(@RequestBody MergeParams query)
public @ResponseBody WebMessage mergeIndicatorTypes(@RequestBody MergeParams params)
throws ConflictException {
log.info("Indicator type merge request received");
log.info("Indicator type merge received with params: {}", params);

MergeReport report =
(new MergeParamsProcessor() {}.processMergeQuery(
indicatorTypeMergeService, query, MergeType.INDICATOR_TYPE));
(new MergeParamsProcessor() {}.processMergeParams(
indicatorTypeMergeService, params, MergeType.INDICATOR_TYPE));

log.info("Indicator type merge request processed: {}", report);
log.info("Indicator type merge processed with report: {}", report);
return WebMessageUtils.mergeReport(report);
}
}

0 comments on commit a224b7a

Please sign in to comment.