private CharacteristicDto restoreCharacteristic( DebtCharacteristic targetCharacteristic, @Nullable Integer parentId, List<CharacteristicDto> sourceCharacteristics, Date updateDate, DbSession session) { CharacteristicDto sourceCharacteristic = characteristicByKey(targetCharacteristic.key(), sourceCharacteristics, false); if (sourceCharacteristic == null) { CharacteristicDto newCharacteristic = toDto(targetCharacteristic, parentId).setCreatedAt(updateDate); dbClient.debtCharacteristicDao().insert(newCharacteristic, session); return newCharacteristic; } else { // Update only if modifications if (ObjectUtils.notEqual(sourceCharacteristic.getName(), targetCharacteristic.name()) || ObjectUtils.notEqual(sourceCharacteristic.getOrder(), targetCharacteristic.order()) || ObjectUtils.notEqual(sourceCharacteristic.getParentId(), parentId)) { sourceCharacteristic.setName(targetCharacteristic.name()); sourceCharacteristic.setOrder(targetCharacteristic.order()); sourceCharacteristic.setParentId(parentId); sourceCharacteristic.setUpdatedAt(updateDate); dbClient.debtCharacteristicDao().update(sourceCharacteristic, session); } return sourceCharacteristic; } }
private static CharacteristicDto toDto( DebtCharacteristic characteristic, @Nullable Integer parentId) { return new CharacteristicDto() .setKey(characteristic.key()) .setName(characteristic.name()) .setOrder(characteristic.order()) .setParentId(parentId) .setEnabled(true) .setCreatedAt(((DefaultDebtCharacteristic) characteristic).createdAt()) .setUpdatedAt(((DefaultDebtCharacteristic) characteristic).updatedAt()); }
@Test public void move_down() { when(dao.selectById(10, session)) .thenReturn(new CharacteristicDto().setId(10).setKey("MEMORY_EFFICIENCY").setOrder(2)); when(dao.selectEnabledRootCharacteristics(session)) .thenReturn( newArrayList( new CharacteristicDto().setId(10).setKey("MEMORY_EFFICIENCY").setOrder(2), new CharacteristicDto().setId(2).setKey("PORTABILITY").setOrder(3))); DebtCharacteristic result = service.moveDown(10); verify(dao, times(2)).update(characteristicCaptor.capture(), eq(session)); assertThat(result.order()).isEqualTo(3); assertThat(characteristicCaptor.getAllValues().get(0).getOrder()).isEqualTo(2); assertThat(characteristicCaptor.getAllValues().get(0).getUpdatedAt()).isEqualTo(now); assertThat(characteristicCaptor.getAllValues().get(1).getOrder()).isEqualTo(3); assertThat(characteristicCaptor.getAllValues().get(1).getUpdatedAt()).isEqualTo(now); }