Package org.projectforge.user

Source Code of org.projectforge.user.GroupTest

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.user;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import org.junit.Assert;
import org.junit.Test;
import org.projectforge.test.TestBase;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;

import de.micromata.hibernate.history.HistoryEntry;
import de.micromata.hibernate.history.HistoryEntryType;

public class GroupTest extends TestBase
{
  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(GroupTest.class);

  private GroupDao groupDao;

  private TransactionTemplate txTemplate;

  public void setGroupDao(GroupDao groupDao)
  {
    this.groupDao = groupDao;
  }

  public void setTxTemplate(TransactionTemplate txTemplate)
  {
    this.txTemplate = txTemplate;
  }

  @Test
  public void testSaveAndUpdate()
  {
    txTemplate.execute(new TransactionCallback() {
      public Object doInTransaction(TransactionStatus status)
      {
        logon(TEST_ADMIN_USER);
        GroupDO group = new GroupDO();
        group.setName("testgroup");
        Set<PFUserDO> assignedUsers = new HashSet<PFUserDO>();
        group.setAssignedUsers(assignedUsers);
        assignedUsers.add(getUser(TEST_USER));
        Serializable id = groupDao.save(group);
        group = groupDao.getById(id);
        assertEquals("testgroup", group.getName());
        assertEquals(1, group.getAssignedUsers().size());
        assertTrue(group.getAssignedUsers().contains(getUser(TEST_USER)));
        PFUserDO user = getUser(TEST_USER2);
        Assert.assertNotNull(user);
        group.getAssignedUsers().add(user);
        groupDao.update(group);
        group = groupDao.getById(id);
        assertEquals(2, group.getAssignedUsers().size());
        assertTrue(group.getAssignedUsers().contains(getUser(TEST_USER)));
        assertTrue(group.getAssignedUsers().contains(user));
        return null;
      }
    });
  }

  @Test
  public void testHistory()
  {
    txTemplate.execute(new TransactionCallback() {
      public Object doInTransaction(TransactionStatus status)
      {
        PFUserDO histUser = logon(TEST_ADMIN_USER);

        GroupDO group = new GroupDO();
        group.setName("historyGroup");
        Set<PFUserDO> assignedUsers = new HashSet<PFUserDO>();
        assignedUsers.add(getUser(TEST_USER));
        assignedUsers.add(getUser(TEST_USER2));
        group.setAssignedUsers(assignedUsers);
        Serializable id = groupDao.save(group);

        group = groupDao.getById(id);
        assertEquals(2, group.getAssignedUsers().size());
        group.getAssignedUsers().remove(getUser(TEST_USER2));
        groupDao.update(group);

        group = groupDao.getById(id);
        assertEquals(1, group.getAssignedUsers().size());
        PFUserDO user = initTestDB.addUser("historyGroupUser");
        group.getAssignedUsers().add(user);
        groupDao.update(group);

        group = groupDao.getById(id);
        assertEquals(2, group.getAssignedUsers().size());

        HistoryEntry[] historyEntries = groupDao.getHistoryEntries(group);
        assertEquals(3, historyEntries.length);
        HistoryEntry entry = historyEntries[2];
        assertHistoryEntry(entry, group.getId(), histUser, HistoryEntryType.INSERT);
        entry = historyEntries[1];
        assertHistoryEntry(entry, group.getId(), histUser, HistoryEntryType.UPDATE, "assignedUsers", PFUserDO.class, getUser(TEST_USER2)
            .getId().toString(), "");
        entry = historyEntries[0];
        assertHistoryEntry(entry, group.getId(), histUser, HistoryEntryType.UPDATE, "assignedUsers", PFUserDO.class, "", getUser(
            "historyGroupUser").getId().toString());
        historyEntries = userDao.getHistoryEntries(getUser("historyGroupUser"));
        log.debug(entry);
        return null;
      }

    });
  }
}
TOP

Related Classes of org.projectforge.user.GroupTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.