From 851c5a7e7e844fcc0d7dc6cf99135b554131ba8e Mon Sep 17 00:00:00 2001 From: Lars Johansson <lars.johansson@ess.eu> Date: Thu, 22 Jun 2023 13:13:29 +0200 Subject: [PATCH] Fix sorting Fix sorting. Fix equals method for beans. Add integration tests for sorting. --- .../repository/DeviceGroupRepository.java | 16 ++- .../repository/DeviceTypeRepository.java | 16 ++- .../repository/DisciplineRepository.java | 16 ++- .../names/repository/NameRepository.java | 23 +++- .../names/repository/SubsystemRepository.java | 16 ++- .../repository/SystemGroupRepository.java | 16 ++- .../names/repository/SystemRepository.java | 16 ++- .../beans/element/NameElementCommand.java | 4 - .../element/NameElementCommandConfirm.java | 4 - .../element/NameElementCommandCreate.java | 4 - .../StructureElementCommandConfirm.java | 4 - .../StructureElementCommandCreate.java | 4 - .../org/openepics/names/docker/NamesIT.java | 22 ++++ .../names/docker/StructuresDeviceGroupIT.java | 27 ++++ .../names/docker/StructuresDeviceTypeIT.java | 29 +++- .../names/docker/StructuresDisciplineIT.java | 29 +++- .../names/docker/StructuresSubsystemIT.java | 29 +++- .../names/docker/StructuresSystemGroupIT.java | 32 ++++- .../names/docker/StructuresSystemIT.java | 29 +++- .../rest/beans/element/NameElementTest.java | 123 +++++++++++++++++ .../beans/element/StructureElementTest.java | 124 ++++++++++++++++++ 21 files changed, 524 insertions(+), 59 deletions(-) create mode 100644 src/test/java/org/openepics/names/rest/beans/element/NameElementTest.java create mode 100644 src/test/java/org/openepics/names/rest/beans/element/StructureElementTest.java diff --git a/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java b/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java index f517546f..771fd79d 100644 --- a/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java +++ b/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java @@ -209,7 +209,9 @@ public class DeviceGroupRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -225,7 +227,9 @@ public class DeviceGroupRepository { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); @@ -444,7 +448,9 @@ public class DeviceGroupRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -460,7 +466,9 @@ public class DeviceGroupRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); diff --git a/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java b/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java index 91986672..a56c966b 100644 --- a/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java +++ b/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java @@ -209,7 +209,9 @@ public class DeviceTypeRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -225,7 +227,9 @@ public class DeviceTypeRepository { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); @@ -444,7 +448,9 @@ public class DeviceTypeRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -460,7 +466,9 @@ public class DeviceTypeRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); diff --git a/src/main/java/org/openepics/names/repository/DisciplineRepository.java b/src/main/java/org/openepics/names/repository/DisciplineRepository.java index 10826f77..b814225e 100644 --- a/src/main/java/org/openepics/names/repository/DisciplineRepository.java +++ b/src/main/java/org/openepics/names/repository/DisciplineRepository.java @@ -203,7 +203,9 @@ public class DisciplineRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -219,7 +221,9 @@ public class DisciplineRepository { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); @@ -430,7 +434,9 @@ public class DisciplineRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -446,7 +452,9 @@ public class DisciplineRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); diff --git a/src/main/java/org/openepics/names/repository/NameRepository.java b/src/main/java/org/openepics/names/repository/NameRepository.java index 31e2c1eb..e13e825f 100644 --- a/src/main/java/org/openepics/names/repository/NameRepository.java +++ b/src/main/java/org/openepics/names/repository/NameRepository.java @@ -201,10 +201,12 @@ public class NameRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldName.NAME.equals(orderBy)) { + if (FieldName.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldName.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME))); } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) { - cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE))); + cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE))); } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) { cq.orderBy(cb.asc(cb.function(NameStructure.FUNCTION_GET_MNEMONIC_PATH_SYSTEM_STRUCTURE, String.class, from.get(Name.FIELD_CONVENTION_NAME)))); } else if (FieldName.DEVICESTRUCTURE.equals(orderBy)) { @@ -219,7 +221,9 @@ public class NameRepository { cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME))); } } else { - if (FieldName.NAME.equals(orderBy)) { + if (FieldName.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldName.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME))); } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE))); @@ -410,7 +414,9 @@ public class NameRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldName.NAME.equals(orderBy)) { + if (FieldName.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldName.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME))); } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE))); @@ -428,7 +434,9 @@ public class NameRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldName.NAME.equals(orderBy)) { + if (FieldName.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldName.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME))); } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE))); @@ -533,7 +541,10 @@ public class NameRepository { if (orderBy != null) { sqlOrderBy.append(" order by "); - if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) { + if (FieldName.UUID.equals(orderBy)) { + sqlOrderBy.append("n."); + sqlOrderBy.append(NameStructure.FIELD_UUID); + } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) { sqlOrderBy.append("n."); sqlOrderBy.append(Name.FIELD_CONVENTION_NAME_EQUIVALENCE); } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) { diff --git a/src/main/java/org/openepics/names/repository/SubsystemRepository.java b/src/main/java/org/openepics/names/repository/SubsystemRepository.java index 5a1e667f..10109318 100644 --- a/src/main/java/org/openepics/names/repository/SubsystemRepository.java +++ b/src/main/java/org/openepics/names/repository/SubsystemRepository.java @@ -209,7 +209,9 @@ public class SubsystemRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -225,7 +227,9 @@ public class SubsystemRepository { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); @@ -444,7 +448,9 @@ public class SubsystemRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -460,7 +466,9 @@ public class SubsystemRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); diff --git a/src/main/java/org/openepics/names/repository/SystemGroupRepository.java b/src/main/java/org/openepics/names/repository/SystemGroupRepository.java index cdce2192..aa126129 100644 --- a/src/main/java/org/openepics/names/repository/SystemGroupRepository.java +++ b/src/main/java/org/openepics/names/repository/SystemGroupRepository.java @@ -200,7 +200,9 @@ public class SystemGroupRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -216,7 +218,9 @@ public class SystemGroupRepository { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); @@ -427,7 +431,9 @@ public class SystemGroupRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -443,7 +449,9 @@ public class SystemGroupRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); diff --git a/src/main/java/org/openepics/names/repository/SystemRepository.java b/src/main/java/org/openepics/names/repository/SystemRepository.java index f3ba1296..021d263e 100644 --- a/src/main/java/org/openepics/names/repository/SystemRepository.java +++ b/src/main/java/org/openepics/names/repository/SystemRepository.java @@ -209,7 +209,9 @@ public class SystemRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -225,7 +227,9 @@ public class SystemRepository { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); @@ -444,7 +448,9 @@ public class SystemRepository { if (orderBy != null) { if (BooleanUtils.toBoolean(isAsc)) { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.asc(from.get(Structure.FIELD_MNEMONIC))); @@ -460,7 +466,9 @@ public class SystemRepository { cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)), cb.asc(from.get(Persistable.FIELD_ID))); } } else { - if (FieldStructure.NAME.equals(orderBy)) { + if (FieldStructure.UUID.equals(orderBy)) { + cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID))); + } else if (FieldStructure.NAME.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_NAME))); } else if (FieldStructure.MNEMONIC.equals(orderBy)) { cq.orderBy(cb.desc(from.get(Structure.FIELD_MNEMONIC))); diff --git a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java index 32ee57d2..ece6d3f9 100644 --- a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java +++ b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java @@ -135,10 +135,6 @@ public class NameElementCommand implements Serializable { if (other == null) return false; - if (!super.equals(other)) { - return false; - } - if (getUuid() == null) { if (other.getUuid() != null) return false; diff --git a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandConfirm.java b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandConfirm.java index 719dd458..c305db94 100644 --- a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandConfirm.java +++ b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandConfirm.java @@ -66,10 +66,6 @@ public class NameElementCommandConfirm implements Serializable { if (other == null) return false; - if (!super.equals(other)) { - return false; - } - if (getUuid() == null) { if (other.getUuid() != null) return false; diff --git a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandCreate.java b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandCreate.java index daff80ba..cfc9b5fa 100644 --- a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandCreate.java +++ b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommandCreate.java @@ -97,10 +97,6 @@ public class NameElementCommandCreate implements Serializable { if (other == null) return false; - if (!super.equals(other)) { - return false; - } - if (getParentSystemStructure() == null) { if (other.getParentSystemStructure() != null) return false; diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java index 736d78c3..d7a2fb92 100644 --- a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java +++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java @@ -78,10 +78,6 @@ public class StructureElementCommandConfirm implements Serializable { if (other == null) return false; - if (!super.equals(other)) { - return false; - } - if (getUuid() == null) { if (other.getUuid() != null) return false; diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java index 190680a5..2b6a201e 100644 --- a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java +++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java @@ -110,10 +110,6 @@ public class StructureElementCommandCreate implements Serializable { if (other == null) return false; - if (!super.equals(other)) { - return false; - } - if (getType() == null) { if (other.getType() != null) return false; diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java index 9b4dc22c..dd49aa45 100644 --- a/src/test/java/org/openepics/names/docker/NamesIT.java +++ b/src/test/java/org/openepics/names/docker/NamesIT.java @@ -38,6 +38,7 @@ import org.openepics.names.rest.beans.element.NameElementCommandUpdate; import org.openepics.names.rest.beans.element.StructureElement; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; +import org.openepics.names.rest.beans.response.ResponsePageNameElements; import org.openepics.names.util.NameCommand; import org.openepics.names.util.NameElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -908,6 +909,7 @@ class NamesIT { NameElementCommandUpdate nameElementCommandUpdate = null; NameElementCommandConfirm nameElementCommandConfirm = null; NameElement responseNameElement = null; + ResponsePageNameElements response, response2 = null; UUID uuid, uuid2 = null; NameElement nameElement1, nameElement7, nameElement8 = null; @@ -981,6 +983,12 @@ class NamesIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilNameElement.assertRead("", 13, -1); @@ -1036,6 +1044,13 @@ class NamesIT { ITUtilNameElement.assertRead("?deviceStructure=EMR-FS&page=2&pageSize=3", 2); ITUtilNameElement.assertRead("?deviceStructure=EMR-FS&page=3&pageSize=3", 0); + response = ITUtilNameElement.assertRead("?index=00_&page=0&pageSize=3&orderBy=WHEN&isAsc=true", 3); + response2 = ITUtilNameElement.assertRead("?index=00_&page=2&pageSize=3&orderBy=WHEN&isAsc=false", 2); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilNameElement.assertRead("?index=00_&page=0&pageSize=3&orderBy=WHEN&isAsc=false", 3); + response2 = ITUtilNameElement.assertRead("?index=00_&page=2&pageSize=3&orderBy=WHEN&isAsc=true", 2); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // name or uuid // /{name} ITUtilNameElement.assertRead("/" + systemGroupAcc.toString(), 0); @@ -1097,6 +1112,13 @@ class NamesIT { ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=1&pageSize=5", 5); ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=2&pageSize=5", 2); ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=3&pageSize=5", 0); + + response = ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=0&pageSize=5&orderBy=WHEN&isAsc=true", 5); + response2 = ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=2&pageSize=5&orderBy=WHEN&isAsc=false", 2); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + response = ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=0&pageSize=5&orderBy=WHEN&isAsc=false", 5); + response2 = ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS&page=2&pageSize=5&orderBy=WHEN&isAsc=true", 2); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); } catch (Exception e) { fail(); } diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java index 240a5bc0..ae18fec6 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java @@ -34,6 +34,7 @@ import org.openepics.names.rest.beans.element.StructureElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; import org.openepics.names.rest.beans.element.StructureElementCommandUpdate; +import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -1612,6 +1613,7 @@ class StructuresDeviceGroupIT { StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElement createdStructureElement = null; + ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; @@ -1900,6 +1902,12 @@ class StructuresDeviceGroupIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2", 30); ITUtilStructureElement.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonicPath=Di2", 5); @@ -1968,6 +1976,18 @@ class StructuresDeviceGroupIT { ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=2&pageSize=12", 6); ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=3&pageSize=12", 0); + ITUtilStructureElement.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=0&pageSize=12", 12); + ITUtilStructureElement.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=1&pageSize=12", 12); + ITUtilStructureElement.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=2&pageSize=12", 1); + ITUtilStructureElement.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=3&pageSize=12", 0); + + response = ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=12&orderBy=WHEN&isAsc=true", 12); + response2 = ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=2&pageSize=12&orderBy=WHEN&isAsc=false", 6); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=12&orderBy=WHEN&isAsc=false", 12); + response2 = ITUtilStructureElement.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=2&pageSize=12&orderBy=WHEN&isAsc=true", 6); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description @@ -2026,6 +2046,13 @@ class StructuresDeviceGroupIT { ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%&page=2&pageSize=15", 10); ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%&page=3&pageSize=15", 0); + ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%&page=0&pageSize=15&orderBy=WHEN&isAsc=true", 15); + ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%&page=2&pageSize=15&orderBy=WHEN&isAsc=false", 10); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%&page=0&pageSize=15&orderBy=WHEN&isAsc=false", 15); + ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%&page=2&pageSize=15&orderBy=WHEN&isAsc=true", 10); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di2", Boolean.FALSE); } catch (Exception e) { fail(); diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java index a79869ab..7a686552 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java @@ -34,6 +34,7 @@ import org.openepics.names.rest.beans.element.StructureElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; import org.openepics.names.rest.beans.element.StructureElementCommandUpdate; +import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -1620,6 +1621,7 @@ class StructuresDeviceTypeIT { StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElement createdStructureElement = null; + ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; @@ -1908,6 +1910,12 @@ class StructuresDeviceTypeIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__", 45); ITUtilStructureElement.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=A__", 10); @@ -1978,6 +1986,18 @@ class StructuresDeviceTypeIT { ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__&page=2&pageSize=20", 5); ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructureElement.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructureElement.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructureElement.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructureElement.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); + + response = ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=true", 20); + response2 = ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=false", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=false", 20); + response2 = ITUtilStructureElement.assertRead("/DEVICETYPE?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description @@ -2036,7 +2056,7 @@ class StructuresDeviceTypeIT { ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&description=%other%", 40); ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&who=%wh%", 100, -1); - ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid2.toString() + "&description=more%", 8); + ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid2.toString() + "&description=more%", 8); ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=100", 20); ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=100", 0); @@ -2047,6 +2067,13 @@ class StructuresDeviceTypeIT { ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=2&pageSize=8", 4); ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=3&pageSize=8", 0); + ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=true", 8); + ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=false", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=false", 8); + ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=true", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-AA1", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-AA2", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-AA3", Boolean.TRUE); diff --git a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java index 6a07a4a8..109a74ce 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java @@ -33,6 +33,7 @@ import org.openepics.names.rest.beans.element.StructureElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; import org.openepics.names.rest.beans.element.StructureElementCommandUpdate; +import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -1517,6 +1518,7 @@ class StructuresDisciplineIT { StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElement createdStructureElement = null; + ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); @@ -1806,6 +1808,12 @@ class StructuresDisciplineIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__", 45); ITUtilStructureElement.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=A__", 10); @@ -1873,6 +1881,18 @@ class StructuresDisciplineIT { ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__&page=2&pageSize=20", 5); ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructureElement.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructureElement.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructureElement.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructureElement.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); + + response = ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=true", 20); + response2 = ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=false", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=false", 20); + response2 = ITUtilStructureElement.assertRead("/DISCIPLINE?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description @@ -1913,7 +1933,7 @@ class StructuresDisciplineIT { ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&description=%other%", 40); ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&who=%wh%", 100, -1); - ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid2.toString() + "&description=more%", 8); + ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid2.toString() + "&description=more%", 8); ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=100", 20); ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=100", 0); @@ -1924,6 +1944,13 @@ class StructuresDisciplineIT { ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=2&pageSize=8", 4); ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=3&pageSize=8", 0); + ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=true", 8); + ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=false", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=false", 8); + ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=true", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertExists(Type.DISCIPLINE, "AA1", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.DISCIPLINE, "AA2", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.DISCIPLINE, "AA3", Boolean.TRUE); diff --git a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java index f605160f..32f8948e 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java @@ -34,6 +34,7 @@ import org.openepics.names.rest.beans.element.StructureElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; import org.openepics.names.rest.beans.element.StructureElementCommandUpdate; +import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -1668,6 +1669,7 @@ class StructuresSubsystemIT { StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElement createdStructureElement = null; + ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; @@ -1956,6 +1958,12 @@ class StructuresSubsystemIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__", 45); ITUtilStructureElement.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=A__", 10); @@ -2026,6 +2034,18 @@ class StructuresSubsystemIT { ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__&page=2&pageSize=20", 5); ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructureElement.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructureElement.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructureElement.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructureElement.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); + + response = ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=true", 20); + response2 = ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=false", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=false", 20); + response2 = ITUtilStructureElement.assertRead("/SUBSYSTEM?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description @@ -2094,7 +2114,7 @@ class StructuresSubsystemIT { ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&description=%other%", 40); ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&who=%wh%", 100, -1); - ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid2.toString() + "&description=more%", 8); + ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid2.toString() + "&description=more%", 8); ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=100", 20); ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=100", 0); @@ -2105,6 +2125,13 @@ class StructuresSubsystemIT { ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=2&pageSize=8", 4); ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=3&pageSize=8", 0); + ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=true", 8); + ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=false", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=false", 8); + ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=true", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys-AA1", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys-AA2", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys-AA3", Boolean.TRUE); diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java index d3c6d6bc..ffb14091 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java @@ -34,6 +34,7 @@ import org.openepics.names.rest.beans.element.StructureElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; import org.openepics.names.rest.beans.element.StructureElementCommandUpdate; +import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -1579,6 +1580,7 @@ class StructuresSystemGroupIT { StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElement createdStructureElement = null; + ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); @@ -1868,6 +1870,12 @@ class StructuresSystemGroupIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__", 45); ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=A__", 10); @@ -1935,10 +1943,17 @@ class StructuresSystemGroupIT { ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__&page=2&pageSize=20", 5); ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__&page=3&pageSize=20", 0); - ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); - ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); - ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); - ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); + ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructureElement.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); + + response = ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=true", 20); + response2 = ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=false", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=false", 20); + response2 = ITUtilStructureElement.assertRead("/SYSTEMGROUP?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); // children // /children/{uuid} @@ -1980,7 +1995,7 @@ class StructuresSystemGroupIT { ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&description=%other%", 40); ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&who=%wh%", 100, -1); - ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid2.toString() + "&description=more%", 8); + ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid2.toString() + "&description=more%", 8); ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=100", 20); ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=100", 0); @@ -1991,6 +2006,13 @@ class StructuresSystemGroupIT { ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=2&pageSize=8", 4); ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=3&pageSize=8", 0); + ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=true", 8); + ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=false", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=false", 8); + ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=true", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "AA1", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "AA2", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "AA3", Boolean.TRUE); diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java index 6438d2f2..bcfb360b 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java @@ -34,6 +34,7 @@ import org.openepics.names.rest.beans.element.StructureElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommandConfirm; import org.openepics.names.rest.beans.element.StructureElementCommandCreate; import org.openepics.names.rest.beans.element.StructureElementCommandUpdate; +import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; import org.testcontainers.containers.DockerComposeContainer; @@ -1601,6 +1602,7 @@ class StructuresSystemIT { StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElement createdStructureElement = null; + ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; @@ -1889,6 +1891,12 @@ class StructuresSystemIT { // pagination // page, pageSize // default pageSize 100 + // sorting + // FieldStructure + // data content give what kind of sorting may be done and tested in this way + // compare in query result for sorting asc and desc + // content for field in first and last items - always possible + // first and last items - not always possible ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__", 45); ITUtilStructureElement.assertRead("/SYSTEM?statuses=PENDING&mnemonic=A__", 10); @@ -1957,6 +1965,18 @@ class StructuresSystemIT { ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__&page=2&pageSize=20", 5); ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructureElement.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructureElement.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructureElement.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructureElement.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); + + response = ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=true", 20); + response2 = ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=false", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + response = ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=20&orderBy=WHEN&isAsc=false", 20); + response2 = ITUtilStructureElement.assertRead("/SYSTEM?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); + assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description @@ -2006,7 +2026,7 @@ class StructuresSystemIT { ITUtilStructureElement.assertRead("/history?type=SYSTEM&description=%other%", 40); ITUtilStructureElement.assertRead("/history?type=SYSTEM&who=%wh%", 100, -1); - ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid2.toString() + "&description=more%", 8); + ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid2.toString() + "&description=more%", 8); ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=0&pageSize=100", 20); ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=1&pageSize=100", 0); @@ -2017,6 +2037,13 @@ class StructuresSystemIT { ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=2&pageSize=8", 4); ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=3&pageSize=8", 0); + ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=true", 8); + ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=false", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=0&pageSize=8&orderBy=WHEN&isAsc=false", 8); + ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_&page=2&pageSize=8&orderBy=WHEN&isAsc=true", 4); + assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); + ITUtilStructureElement.assertExists(Type.SYSTEM, "AA1", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.SYSTEM, "AA2", Boolean.TRUE); ITUtilStructureElement.assertExists(Type.SYSTEM, "AA3", Boolean.TRUE); diff --git a/src/test/java/org/openepics/names/rest/beans/element/NameElementTest.java b/src/test/java/org/openepics/names/rest/beans/element/NameElementTest.java new file mode 100644 index 00000000..ad82eee1 --- /dev/null +++ b/src/test/java/org/openepics/names/rest/beans/element/NameElementTest.java @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2023 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.rest.beans.element; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.fail; + +import java.util.Date; +import java.util.UUID; + +import org.junit.jupiter.api.Test; +import org.openepics.names.rest.beans.Status; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * Unit tests for NameElement class. + * + * @author Lars Johansson + * + * @see NameElement + */ +class NameElementTest { + + @Test + void equals() { + NameElement ne1 = null, ne2 = null; + Date date = new Date(); + + ne1 = new NameElement( + UUID.fromString("45bdc415-cf5a-4650-b6dd-478540830c2a"), UUID.fromString("eb7e55c2-012b-419d-881a-58a858894e92"), null, null, + "System structure only", null, + "Acc", null, "Acc", + Status.APPROVED, true, false, + date, "test who"); + ne2 = new NameElement( + UUID.fromString("45bdc415-cf5a-4650-b6dd-478540830c2a"), UUID.fromString("eb7e55c2-012b-419d-881a-58a858894e92"), null, null, + "System structure only", null, + "Acc", null, "Acc", + Status.APPROVED, true, false, + date, "test who"); + + assertEquals(ne1, ne2); + } + + @Test + void equals2() { + ObjectMapper mapper = new ObjectMapper(); + NameElement ne1 = null, ne2 = null; + String json = "{\"uuid\": \"45bdc415-cf5a-4650-b6dd-478540830c2a\", \"parentSystemStructure\": \"eb7e55c2-012b-419d-881a-58a858894e92\", \"parentDeviceStructure\": null, \"systemStructure\": \"Acc\", \"deviceStructure\": null, \"index\": null, \"name\": \"Acc\", \"description\": \"System structure only\", \"status\": \"APPROVED\", \"latest\": true, \"deleted\": false, \"when\": null, \"who\": \"test who\", \"comment\": null}"; + + try { + ne1 = mapper.readValue(json, NameElement.class); + ne2 = mapper.readValue(json, NameElement.class); + } catch (JsonMappingException e) { + fail(); + } catch (JsonProcessingException e) { + fail(); + } + + assertEquals(ne1, ne2); + } + + @Test + void notEquals() { + NameElement ne1 = null, ne2 = null; + Date date = new Date(); + + ne1 = new NameElement( + UUID.fromString("45bdc415-cf5a-4650-b6dd-478540830c2a"), UUID.fromString("eb7e55c2-012b-419d-881a-58a858894e92"), null, null, + "System structure only", null, + "Acc", null, "Acc", + Status.APPROVED, true, false, + date, "test who"); + ne2 = new NameElement( + UUID.fromString("55bdc415-cf5a-4650-b6dd-478540830c2a"), UUID.fromString("eb7e55c2-012b-419d-881a-58a858894e92"), null, null, + "System structure only", null, + "Acc", null, "Acc", + Status.APPROVED, true, false, + date, "test who"); + + assertNotEquals(ne1, ne2); + } + + @Test + void notEquals2() { + ObjectMapper mapper = new ObjectMapper(); + NameElement ne1 = null, ne2 = null; + String json = "{\"uuid\": \"45bdc415-cf5a-4650-b6dd-478540830c2a\", \"parentSystemStructure\": \"eb7e55c2-012b-419d-881a-58a858894e92\", \"parentDeviceStructure\": null, \"systemStructure\": \"Acc\", \"deviceStructure\": null, \"index\": null, \"name\": \"Acc\", \"description\": \"System structure only\", \"status\": \"APPROVED\", \"latest\": true, \"deleted\": false, \"when\": null, \"who\": \"test who\", \"comment\": null}"; + String json2 = "{\"uuid\": \"55bdc415-cf5a-4650-b6dd-478540830c2a\", \"parentSystemStructure\": \"eb7e55c2-012b-419d-881a-58a858894e92\", \"parentDeviceStructure\": null, \"systemStructure\": \"Acc\", \"deviceStructure\": null, \"index\": null, \"name\": \"Acc\", \"description\": \"System structure only\", \"status\": \"APPROVED\", \"latest\": true, \"deleted\": false, \"when\": null, \"who\": \"test who\", \"comment\": null}"; + + try { + ne1 = mapper.readValue(json, NameElement.class); + ne2 = mapper.readValue(json2, NameElement.class); + } catch (JsonMappingException e) { + fail(); + } catch (JsonProcessingException e) { + fail(); + } + + assertNotEquals(ne1, ne2); + } + +} diff --git a/src/test/java/org/openepics/names/rest/beans/element/StructureElementTest.java b/src/test/java/org/openepics/names/rest/beans/element/StructureElementTest.java new file mode 100644 index 00000000..dfa483c6 --- /dev/null +++ b/src/test/java/org/openepics/names/rest/beans/element/StructureElementTest.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2023 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.rest.beans.element; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.fail; + +import java.util.Date; +import java.util.UUID; + +import org.junit.jupiter.api.Test; +import org.openepics.names.rest.beans.Status; +import org.openepics.names.rest.beans.Type; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * Unit tests for StructureElement class. + * + * @author Lars Johansson + * + * @see StructureElement + */ +class StructureElementTest { + + @Test + void equals() { + StructureElement se1 = null, se2 = null; + Date date = new Date(); + + se1 = new StructureElement( + UUID.fromString("a14a8565-de10-4026-97e3-ab129ffaba96"), Type.SYSTEM, UUID.fromString("05d52f1c-391e-41e3-a48f-dc8f36f8329b"), "name", "AA1", + "description", "comment", + "AA1", 2, + Status.APPROVED, true, false, + date, "test who"); + se2 = new StructureElement( + UUID.fromString("a14a8565-de10-4026-97e3-ab129ffaba96"), Type.SYSTEM, UUID.fromString("05d52f1c-391e-41e3-a48f-dc8f36f8329b"), "name", "AA1", + "description", "comment", + "AA1", 2, + Status.APPROVED, true, false, + date, "test who"); + + assertEquals(se1, se2); + } + + @Test + void equals2() { + ObjectMapper mapper = new ObjectMapper(); + StructureElement se1 = null, se2 = null; + String json = "{\"uuid\": \"a14a8565-de10-4026-97e3-ab129ffaba96\", \"type\": \"SYSTEM\", \"parent\": \"05d52f1c-391e-41e3-a48f-dc8f36f8329b\", \"name\": \"name\", \"mnemonic\": \"AA1\", \"mnemonicPath\": \"AA1\", \"level\": \"2\", \"description\": \"description\", \"status\": \"APPROVED\", \"latest\": true, \"deleted\": false, \"when\": null, \"who\": \"test who\", \"comment\": \"comment\"};"; + + try { + se1 = mapper.readValue(json, StructureElement.class); + se2 = mapper.readValue(json, StructureElement.class); + } catch (JsonMappingException e) { + fail(); + } catch (JsonProcessingException e) { + fail(); + } + + assertEquals(se1, se2); + } + + @Test + void notEquals() { + StructureElement se1 = null, se2 = null; + Date date = new Date(); + + se1 = new StructureElement( + UUID.fromString("a14a8565-de10-4026-97e3-ab129ffaba96"), Type.SYSTEM, UUID.fromString("05d52f1c-391e-41e3-a48f-dc8f36f8329b"), "name", "AA1", + "description", "comment", + "AA1", 2, + Status.APPROVED, true, false, + date, "test who"); + se2 = new StructureElement( + UUID.fromString("b14a8565-de10-4026-97e3-ab129ffaba96"), Type.SYSTEM, UUID.fromString("05d52f1c-391e-41e3-a48f-dc8f36f8329b"), "name", "AA1", + "description", "comment", + "AA1", 2, + Status.APPROVED, true, false, + date, "test who"); + + assertNotEquals(se1, se2); + } + + @Test + void notEquals2() { + ObjectMapper mapper = new ObjectMapper(); + StructureElement se1 = null, se2 = null; + String json = "{\"uuid\": \"a14a8565-de10-4026-97e3-ab129ffaba96\", \"type\": \"SYSTEM\", \"parent\": \"05d52f1c-391e-41e3-a48f-dc8f36f8329b\", \"name\": \"name\", \"mnemonic\": \"AA1\", \"mnemonicPath\": \"AA1\", \"level\": \"2\", \"description\": \"description\", \"status\": \"APPROVED\", \"latest\": true, \"deleted\": false, \"when\": null, \"who\": \"test who\", \"comment\": \"comment\"};"; + String json2 = "{\"uuid\": \"b14a8565-de10-4026-97e3-ab129ffaba96\", \"type\": \"SYSTEM\", \"parent\": \"05d52f1c-391e-41e3-a48f-dc8f36f8329b\", \"name\": \"name\", \"mnemonic\": \"AA1\", \"mnemonicPath\": \"AA1\", \"level\": \"2\", \"description\": \"description\", \"status\": \"APPROVED\", \"latest\": true, \"deleted\": false, \"when\": null, \"who\": \"test who\", \"comment\": \"comment\"};"; + + try { + se1 = mapper.readValue(json, StructureElement.class); + se2 = mapper.readValue(json2, StructureElement.class); + } catch (JsonMappingException e) { + fail(); + } catch (JsonProcessingException e) { + fail(); + } + + assertNotEquals(se1, se2); + } + +} -- GitLab