@Test public void delete_descendants() { initRules(); // create parent and child profiles db.qualityProfileDao() .insert( dbSession, QProfileTesting.newXooP1(), QProfileTesting.newXooP2(), QProfileTesting.newXooP3()); tester.get(RuleActivator.class).setParent(dbSession, XOO_P2_KEY, XOO_P1_KEY); tester.get(RuleActivator.class).setParent(dbSession, XOO_P3_KEY, XOO_P1_KEY); tester .get(RuleActivator.class) .activate(dbSession, new RuleActivation(RuleTesting.XOO_X1), XOO_P1_KEY); dbSession.commit(); dbSession.clearCache(); assertThat(db.qualityProfileDao().selectAll(dbSession)).hasSize(3); assertThat(db.activeRuleDao().selectAll(dbSession)).hasSize(3); factory.delete(XOO_P1_KEY); dbSession.clearCache(); assertThat(db.qualityProfileDao().selectAll(dbSession)).isEmpty(); assertThat(db.activeRuleDao().selectAll(dbSession)).isEmpty(); assertThat(db.activeRuleDao().selectAllParams(dbSession)).isEmpty(); assertThat(index.get(ActiveRuleIndex.class).findByProfile(XOO_P1_KEY)).isEmpty(); assertThat(index.get(ActiveRuleIndex.class).findByProfile(XOO_P2_KEY)).isEmpty(); assertThat(index.get(ActiveRuleIndex.class).findByProfile(XOO_P3_KEY)).isEmpty(); }
@Test public void do_not_delete_if_default_descendant() { db.qualityProfileDao() .insert( dbSession, QProfileTesting.newXooP1(), QProfileTesting.newXooP2(), QProfileTesting.newXooP3()); tester.get(RuleActivator.class).setParent(dbSession, XOO_P2_KEY, XOO_P1_KEY); tester.get(RuleActivator.class).setParent(dbSession, XOO_P3_KEY, XOO_P1_KEY); factory.setDefault(dbSession, XOO_P3_KEY); dbSession.commit(); dbSession.clearCache(); try { factory.delete(XOO_P1_KEY); fail(); } catch (BadRequestException e) { assertThat(e).hasMessage("The profile marked as default can not be deleted: XOO_P3"); assertThat(db.qualityProfileDao().selectAll(dbSession)).hasSize(3); } }