package org.ovirt.engine.arquillian; import javax.inject.Inject; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VmDao; import org.ovirt.engine.core.utils.transaction.TransactionSupport; import org.springframework.dao.DuplicateKeyException; @Category(IntegrationTest.class) public class RollbackTest extends TransactionalTestBase { @Inject VmDao vmDao; private final Guid VM1_GUID = Guid.createGuidFromString("0fe4bc81-5999-4ab6-80f8-7a4a2d4bfacd"); private final Guid VM2_GUID = Guid.createGuidFromString("0ff4bd81-5899-4ab6-80f8-7a4a2d4bfacd"); @Before public void setUp() { vmBuilder.id(VM1_GUID).cluster(clusterBuilder.reset().persist()).persist(); } @Deployment(name = "RollbackTest") public static JavaArchive deploy(){ return createDeployment(); } @Test(expected = DuplicateKeyException.class) public void shouldFailOnExistingEntity() { vmBuilder.id(VM1_GUID).persist(); } @Test public void shouldRollbackAfterPersistingPart1() { vmBuilder.id(VM2_GUID).persist(); } @Test public void shouldRollbackAfterPersistingPart2() { vmBuilder.id(VM2_GUID).persist(); } @Test public void shouldHaveAccessToMockedContainerTransactionManager() { TransactionSupport.executeInNewTransaction(() -> null); } }