/** Test getting the set of root personal items */
  @Test
  public void getRootPersonalItemsDAOTest() throws Exception {

    UserEmail userEmail = new UserEmail("user@email");

    UserManager userManager = new UserManager();
    IrUser user = userManager.createUser("passowrd", "userName");
    user.addUserEmail(userEmail, true);
    user.setAccountExpired(true);
    user.setAccountLocked(true);
    user.setCredentialsExpired(true);

    userDAO.makePersistent(user);

    TransactionStatus ts = tm.getTransaction(td);

    IrUser other = userDAO.getById(user.getId(), false);
    GenericItem genericItem = new GenericItem("aItem");
    VersionedItem versionedItem = new VersionedItem(user, genericItem);
    PersonalItem personalItem = other.createRootPersonalItem(versionedItem);

    // complete the transaction
    tm.commit(ts);

    ts = tm.getTransaction(td);
    other = userDAO.getById(user.getId(), false);
    assert other != null : "Other should not be null";

    Set<PersonalItem> personalItems = other.getRootPersonalItems();

    assert personalItems != null : "Should be able to find the personal items";
    assert personalItems.size() == 1
        : "Root personal items should be 1 but is " + personalItems.size();

    tm.commit(ts);

    ts = tm.getTransaction(td);
    personalItemDAO.makeTransient(personalItemDAO.getById(personalItem.getId(), false));
    versionedItemDAO.makeTransient(versionedItemDAO.getById(versionedItem.getId(), false));
    itemDAO.makeTransient(itemDAO.getById(genericItem.getId(), false));
    userDAO.makeTransient(userDAO.getById(other.getId(), false));
    tm.commit(ts);

    assert userDAO.getById(other.getId(), false) == null : "Should not be able to find other";
  }