/* * Copyright (c) JForum Team. All rights reserved. * * The software in this package is published under the terms of the LGPL * license a copy of which has been included with this distribution in the * license.txt file. * * The JForum Project * http://www.jforum.net */ package net.jforum.core.hibernate; import java.util.List; import net.jforum.entities.Group; import net.jforum.entities.Role; import net.jforum.repository.GroupRepository; import org.junit.Assert; import org.junit.Test; /** * @author Rafael Steil */ public class GroupDAOTestCase extends AbstractDAOTestCase<Group> { @Test public void removeAllPermissions() { GroupRepository dao = this.newDao(); Group group = this.newGroup(); Role r1 = new Role(); r1.setName("r1"); Role r2 = new Role(); r2.setName("r2"); r2.addRoleValue(1); r2.addRoleValue(2); group.addRole(r1); group.addRole(r2); this.insert(group, dao); group = dao.get(group.getId()); Assert.assertEquals(2, group.getRoles().size()); group.getRoles().clear(); this.update(group, dao); group = dao.get(group.getId()); Assert.assertEquals(0, group.getRoles().size()); } @Test public void clearAllRolesInsertOneNewUseJustOneUpdate() { GroupRepository dao = this.newDao(); Group group = this.newGroup(); Role role = new Role(); role.setName("r2"); role.addRoleValue(1); role.addRoleValue(2); group.addRole(role); this.insert(group, dao); group = dao.get(group.getId()); Assert.assertEquals(1, group.getRoles().size()); group.getRoles().clear(); role = new Role(); role.setName("r3"); group.addRole(role); this.update(group, dao); group = dao.get(group.getId()); Assert.assertEquals(1, group.getRoles().size()); Assert.assertEquals("r3", group.getRoles().get(0).getName()); } @Test public void addRoleWithoutRoleValue() { GroupRepository dao = this.newDao(); Group group = this.newGroup(); this.insert(group, dao); Role role = new Role(); role.setName("r1"); group.addRole(role); this.update(group, dao); Group loadedGroup = dao.get(group.getId()); Assert.assertEquals(1, loadedGroup.getRoles().size()); Assert.assertEquals(0, loadedGroup.getRoles().get(0).getRoleValues().size()); } @Test public void addTwoRolesOneWithRoleValues() { GroupRepository dao = this.newDao(); Group group = this.newGroup(); this.insert(group, dao); // Role 1 Role role1 = new Role(); role1.setName("r1"); role1.addRoleValue(1); role1.addRoleValue(5); role1.addRoleValue(9); group.addRole(role1); // Role 2 Role role2 = new Role(); role2.setName("r2"); group.addRole(role2); this.update(group, dao); Group loaded = dao.get(group.getId()); Assert.assertEquals(2, loaded.getRoles().size()); role1 = loaded.getRoles().get(0); Assert.assertEquals(3, role1.getRoleValues().size()); Assert.assertTrue(role1.getRoleValues().contains(1)); Assert.assertTrue(role1.getRoleValues().contains(5)); Assert.assertTrue(role1.getRoleValues().contains(9)); Assert.assertEquals(0, loaded.getRoles().get(1).getRoleValues().size()); } @Test public void insert() { GroupRepository dao = this.newDao(); Group group = this.newGroup(); this.insert(group, dao); Assert.assertTrue(group.getId() > 0); Group loaded = dao.get(group.getId()); Assert.assertEquals(group.getDescription(), loaded.getDescription()); Assert.assertEquals(group.getName(), loaded.getName()); } @Test public void update() { GroupRepository dao = this.newDao(); Group g = this.newGroup(); this.insert(g, dao); g = dao.get(g.getId()); g.setName("changed name"); g.setDescription("changed description"); this.update(g, dao); Group loaded = dao.get(g.getId()); Assert.assertEquals(g.getName(), loaded.getName()); Assert.assertEquals(g.getDescription(), loaded.getDescription()); } @Test public void delete() { GroupRepository dao = this.newDao(); Group parent = this.newGroup(); this.insert(parent, dao); Group loaded = dao.get(parent.getId()); Assert.assertNotNull(loaded); this.delete(loaded, dao); Assert.assertNull(dao.get(parent.getId())); } @Test public void allGroups() { GroupRepository dao = this.newDao(); Group g1 = new Group(); g1.setName("g1"); this.insert(g1, dao); Group g2 = new Group(); g1.setName("g2"); this.insert(g2, dao); Group g3 = new Group(); g1.setName("g3"); this.insert(g3, dao); List<Group> groups = dao.getAllGroups(); Assert.assertEquals(3, groups.size()); } private Group newGroup() { Group group = new Group(); group.setDescription("description"); group.setName("name"); return group; } private GroupRepository newDao() { return new GroupRepository(session()); } }