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
DTOs:PatientDTO.iddoesn't exist. - Some field names contains suffixes on
Modelclasses:PatientDTO.name <> PatientModel.nameElement.
Other issue I like to solve, is that:
Addressrelated 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
Addressan other one forPatientcontaining previousAddressassertion? How could I get this? - What aboud
Addressassertion 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?