Exemplo n.º 1
0
  @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());
  }