Как я могу написать UnitTest для метода обслуживания с REQUIRES_NEW и ограничением в БД - PullRequest
0 голосов
/ 07 декабря 2018

Как я могу создать UnitTest для этого метода?

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    @Override
    public Charge saveInNewTransaction(Charge charge) {
        if (charge.getIsDuplicate()) {
            charge.setIsActive(false);
        } else {
            Charge chargeOrigin = charge.getChargeOrigin();
            chargeOrigin.setIsActive(false);
            chargesRepository.saveAndFlush(chargeOrigin);
        }

        return chargesRepository.saveAndFlush(charge);
    }

У меня есть ограничение - только один может быть isActive = true

Я не знаю, как написать тест для этого метода.

Краткая справка.Я получаю список сборов, например, 10, и в цикле я пытаюсь их сохранить.если я получаю исключение ограничения - мне нужно его игнорировать (и продолжать сохранять другие платежи. Мне не нужно откатывать основную транзакцию).

поэтому у меня есть такой метод, который выполняется в транзакции REQUIRES_NEW.

РЕДАКТИРОВАТЬ

Я пытаюсь:

@MockBean
private ChargeRepository chargeRepository;

@Before
public void setUp() throws Exception {
    chargeService = new ChargeServiceImpl(chargeRepository);
}

@Test
public void saveInNewTransaction() {

    Charge charge = new Charge();
    charge.setIsDuplicate(true);

    Charge originCharge = new Charge();
    originCharge.setIsDuplicate(false);

    charge.setChargeOrigin(originCharge);

    //when(???).thenReturn(???);

    Charge savedCharge = chargeService.saveInNewTransaction(testCharge);

     //assertThat(???);
}
...