I need to compare one PatientDTO dto
object with other one PatientModel model
object.
Both classes are quite similar:
class PatientDTO {
private String name;
private List<AddressDTO> address;
// Constructors, getters and setters
}
class PatientModel {
private String id;
private String nameElement;
private List<AddressModel> addressElement;
// Constructors, getters and setters
}
class AddressDTO {
private String city;
private String country;
private List<String> linesElement;
// Constructors, getters and setters
}
class AddressModel {
private String city;
private String countryElement;
private List<String> linesElement;
// Constructors, getters and setters
}
Main differences are:
- Some fields are not present on
DTO
s:PatientDTO.id
doesn't exist. - Some field names contains suffixes on
Model
classes:PatientDTO.name <> PatientModel.nameElement
.
Other issue I like to solve, is that:
Address
related assertion should be shared. I mean,Address
-like classes are present on other classes, for exemple,Organization
,Practitioner
...
I'd like to build an assertion like this:
PatientDTO patientDTO;
PatientModel patientModel;
assertThat(patientDTO).isEqual(patientModel);
Shortly:
- Should I build a custom assertion?
- Should I have an assertion for
Address
an other one forPatient
containing previousAddress
assertion? How could I get this? - What aboud
Address
assertion forPatient
,Organization
What I want to avoid is code like this:
assertThat(patientDTO).anySatisfy(p->{
assertThat(p.getName()).withFailMessage("expected name: "+ p.getAddress().getCity()).isEqualTo(patientModel.getNameElement());
assertThat(p.getAddress().getCity()).withFailMessage("expected city: "+ p.getAddress().getCity()).isEqualTo(patientModel.getCityElement());
assertThat(p.getAddress().getCountry()).withFailMessage("expected country: "+ p.getAddress().getCountry()).isEqualTo(patientModel.getCountryElement());
...
}
);
I want to avoid above code since Patient
classes are really large. Here I've shorted them for clarity purpouses.
Any ideas?