@Test public void navigate() { NavigateAllListener beforeListener = Mockito.mock(NavigateAllListener.class); NavigateAllListener afterListener = Mockito.mock(NavigateAllListener.class); events().beforeNavigate(beforeListener); events().afterNavigate(afterListener); goTo(DEFAULT_URL); Mockito.verify(beforeListener, Mockito.times(1)) .on( Mockito.eq(DEFAULT_URL), Mockito.<WebDriver>anyObject(), Mockito.<NavigateAllListener.Direction>anyObject()); Mockito.verify(afterListener, Mockito.times(1)) .on( Mockito.eq(DEFAULT_URL), Mockito.<WebDriver>anyObject(), Mockito.<NavigateAllListener.Direction>anyObject()); getDriver().navigate().refresh(); Mockito.verify(beforeListener, Mockito.times(1)) .on( (String) Mockito.isNull(), Mockito.<WebDriver>anyObject(), Mockito.eq(NavigateAllListener.Direction.REFRESH)); Mockito.verify(afterListener, Mockito.times(1)) .on( (String) Mockito.isNull(), Mockito.<WebDriver>anyObject(), Mockito.eq(NavigateAllListener.Direction.REFRESH)); }
@Test public void testTransactionRollback() { final ODB odb = Mockito.mock(ODB.class); Mockito.when(odb.store(Mockito.isNull())).thenThrow(new RuntimeException()); PlatformTransactionManager tm = new NeoDatisTransactionManager(odb); TransactionTemplate tmpl = new TransactionTemplate(tm); Assert.assertFalse( "Should not have a resource", TransactionSynchronizationManager.hasResource(odb)); Assert.assertFalse( "There should no active synchronizations", TransactionSynchronizationManager.isSynchronizationActive()); try { tmpl.execute( new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) { Assert.assertTrue(TransactionSynchronizationManager.hasResource(odb)); NeoDatisTemplate neoDatisTemplate = new NeoDatisTemplate(odb); neoDatisTemplate.store(null); } }); } catch (RuntimeException e) { // is ok } Assert.assertFalse( "Should not have a resource", TransactionSynchronizationManager.hasResource(odb)); Assert.assertFalse( "There should no active synchronizations", TransactionSynchronizationManager.isSynchronizationActive()); Mockito.verify(odb, Mockito.times(1)).rollback(); }
@Test public void testWrongIsolationLevel() { final ODB odb = Mockito.mock(ODB.class); Mockito.when(odb.store(Mockito.isNull())).thenThrow(new RuntimeException()); PlatformTransactionManager tm = new NeoDatisTransactionManager(odb); TransactionTemplate tmpl = new TransactionTemplate(tm); Assert.assertFalse( "Should not have a resource", TransactionSynchronizationManager.hasResource(odb)); Assert.assertFalse( "There should no active synchronizations", TransactionSynchronizationManager.isSynchronizationActive()); tmpl.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); try { tmpl.execute( new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) { Assert.assertTrue(TransactionSynchronizationManager.hasResource(odb)); NeoDatisTemplate neoDatisTemplate = new NeoDatisTemplate(odb); neoDatisTemplate.store(null); transactionStatus.setRollbackOnly(); } }); Assert.fail("Should throw an exception."); } catch (InvalidIsolationLevelException e) { // is ok } Assert.assertFalse( "Should not have a resource", TransactionSynchronizationManager.hasResource(odb)); Assert.assertFalse( "There should no active synchronizations", TransactionSynchronizationManager.isSynchronizationActive()); }