@Test public void delete_characteristic() { DbSession batchSession = mock(DbSession.class); when(dbClient.openSession(true)).thenReturn(batchSession); when(ruleDao.findRulesByDebtSubCharacteristicId(batchSession, subCharacteristicDto.getId())) .thenReturn( newArrayList( new RuleDto() .setSubCharacteristicId(subCharacteristicDto.getId()) .setRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.toString()) .setRemediationCoefficient("2h") .setRemediationOffset("5min"))); when(dao.selectCharacteristicsByParentId(1, batchSession)) .thenReturn(newArrayList(subCharacteristicDto)); when(dao.selectById(1, batchSession)).thenReturn(characteristicDto); service.delete(1); verify(ruleDao).update(eq(batchSession), ruleCaptor.capture()); verify(dao, times(2)).update(characteristicCaptor.capture(), eq(batchSession)); CharacteristicDto subCharacteristicDto = characteristicCaptor.getAllValues().get(0); CharacteristicDto characteristicDto = characteristicCaptor.getAllValues().get(1); // Sub characteristic is disable assertThat(subCharacteristicDto.getId()).isEqualTo(2); assertThat(subCharacteristicDto.isEnabled()).isFalse(); assertThat(subCharacteristicDto.getUpdatedAt()).isEqualTo(now); // Characteristic is disable assertThat(characteristicDto.getId()).isEqualTo(1); assertThat(characteristicDto.isEnabled()).isFalse(); assertThat(characteristicDto.getUpdatedAt()).isEqualTo(now); }
@Test public void update_characteristics_when_restoring_characteristics() { when(dao.selectEnabledCharacteristics(session)) .thenReturn( newArrayList( // Order and name have changed new CharacteristicDto() .setId(1) .setKey("PORTABILITY") .setName("Portability updated") .setOrder(2) .setCreatedAt(oldDate) .setUpdatedAt(oldDate), new CharacteristicDto() .setId(2) .setKey("COMPILER") .setName("Compiler updated") .setParentId(1) .setCreatedAt(oldDate) .setUpdatedAt(oldDate))); debtModelBackup.restoreCharacteristics( new DebtModel() .addRootCharacteristic( new DefaultDebtCharacteristic() .setKey("PORTABILITY") .setName("Portability") .setOrder(1)) .addSubCharacteristic( new DefaultDebtCharacteristic().setKey("COMPILER").setName("Compiler"), "PORTABILITY"), now, session); verify(dao, times(2)).update(characteristicCaptor.capture(), eq(session)); CharacteristicDto dto1 = characteristicCaptor.getAllValues().get(0); assertThat(dto1.getId()).isEqualTo(1); assertThat(dto1.getKey()).isEqualTo("PORTABILITY"); assertThat(dto1.getName()).isEqualTo("Portability"); assertThat(dto1.getParentId()).isNull(); assertThat(dto1.getOrder()).isEqualTo(1); assertThat(dto1.getCreatedAt()).isEqualTo(oldDate); assertThat(dto1.getUpdatedAt()).isEqualTo(now); CharacteristicDto dto2 = characteristicCaptor.getAllValues().get(1); assertThat(dto2.getId()).isEqualTo(2); assertThat(dto2.getKey()).isEqualTo("COMPILER"); assertThat(dto2.getName()).isEqualTo("Compiler"); assertThat(dto2.getParentId()).isEqualTo(1); assertThat(dto2.getOrder()).isNull(); assertThat(dto2.getCreatedAt()).isEqualTo(oldDate); assertThat(dto2.getUpdatedAt()).isEqualTo(now); }
private static DebtCharacteristic toDebtCharacteristic(CharacteristicDto characteristic) { return new DefaultDebtCharacteristic() .setId(characteristic.getId()) .setKey(characteristic.getKey()) .setName(characteristic.getName()) .setOrder(characteristic.getOrder()) .setParentId(characteristic.getParentId()) .setCreatedAt(characteristic.getCreatedAt()) .setUpdatedAt(characteristic.getUpdatedAt()); }
@Test public void create_characteristics_when_restoring_characteristics() { when(dao.selectEnabledCharacteristics(session)) .thenReturn(Collections.<CharacteristicDto>emptyList()); debtModelBackup.restoreCharacteristics( new DebtModel() .addRootCharacteristic( new DefaultDebtCharacteristic() .setKey("PORTABILITY") .setName("Portability") .setOrder(1)) .addSubCharacteristic( new DefaultDebtCharacteristic().setKey("COMPILER").setName("Compiler"), "PORTABILITY"), now, session); verify(dao, times(2)).insert(characteristicCaptor.capture(), eq(session)); CharacteristicDto dto1 = characteristicCaptor.getAllValues().get(0); assertThat(dto1.getId()).isEqualTo(10); assertThat(dto1.getKey()).isEqualTo("PORTABILITY"); assertThat(dto1.getName()).isEqualTo("Portability"); assertThat(dto1.getParentId()).isNull(); assertThat(dto1.getOrder()).isEqualTo(1); assertThat(dto1.getCreatedAt()).isEqualTo(now); assertThat(dto1.getUpdatedAt()).isNull(); CharacteristicDto dto2 = characteristicCaptor.getAllValues().get(1); assertThat(dto2.getId()).isEqualTo(11); assertThat(dto2.getKey()).isEqualTo("COMPILER"); assertThat(dto2.getName()).isEqualTo("Compiler"); assertThat(dto2.getParentId()).isEqualTo(10); assertThat(dto2.getOrder()).isNull(); assertThat(dto2.getCreatedAt()).isEqualTo(now); assertThat(dto2.getUpdatedAt()).isNull(); }
@Test public void delete_sub_characteristic() { DbSession batchSession = mock(DbSession.class); when(dbClient.openSession(true)).thenReturn(batchSession); when(ruleDao.findRulesByDebtSubCharacteristicId(batchSession, 2)) .thenReturn( newArrayList( new RuleDto() .setSubCharacteristicId(2) .setRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.toString()) .setRemediationCoefficient("2h") .setRemediationOffset("5min") .setDefaultSubCharacteristicId(10) .setDefaultRemediationFunction( DebtRemediationFunction.Type.LINEAR_OFFSET.toString()) .setDefaultRemediationCoefficient("4h") .setDefaultRemediationOffset("15min"))); when(dao.selectById(2, batchSession)).thenReturn(subCharacteristicDto); service.delete(2); verify(ruleDao).update(eq(batchSession), ruleCaptor.capture()); RuleDto ruleDto = ruleCaptor.getValue(); assertThat(ruleDto.getUpdatedAt()).isEqualTo(now); // Overridden debt data are disabled assertThat(ruleDto.getSubCharacteristicId()).isEqualTo(-1); assertThat(ruleDto.getRemediationFunction()).isNull(); assertThat(ruleDto.getRemediationCoefficient()).isNull(); assertThat(ruleDto.getRemediationOffset()).isNull(); // Default debt data should not be touched assertThat(ruleDto.getDefaultSubCharacteristicId()).isEqualTo(10); assertThat(ruleDto.getDefaultRemediationFunction()).isEqualTo("LINEAR_OFFSET"); assertThat(ruleDto.getDefaultRemediationCoefficient()).isEqualTo("4h"); assertThat(ruleDto.getDefaultRemediationOffset()).isEqualTo("15min"); verify(dao).update(characteristicCaptor.capture(), eq(batchSession)); CharacteristicDto characteristicDto = characteristicCaptor.getValue(); // Sub characteristic is disable assertThat(characteristicDto.getId()).isEqualTo(2); assertThat(characteristicDto.isEnabled()).isFalse(); assertThat(characteristicDto.getUpdatedAt()).isEqualTo(now); }