/*
* 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.util;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import net.jforum.entities.Group;
import net.jforum.entities.User;
import net.jforum.entities.UserSession;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.runners.MockitoJUnitRunner;
import br.com.caelum.vraptor.util.test.MockResult;
/**
* @author Rafael Steil, Jonatan Cloutier
*/
@RunWith(MockitoJUnitRunner.class)
public class GroupInteractionFilterTestCase {
@Mock private UserSession userSession;
@Spy private MockResult mockResult;
@Test
public void filterForumListing() {
User u1 = new User(); User u2 = new User(); User u3 = new User();
Group g1 = new Group(); g1.setId(1);
Group g2 = new Group(); g2.setId(2);
Group g3 = new Group(); g3.setId(3);
u1.addGroup(g1);
u2.addGroup(g1); u2.addGroup(g2);
u3.addGroup(g3);
final UserSession us1 = new UserSession(); us1.setSessionId("1"); us1.setUser(u1);
final UserSession us2 = new UserSession(); us2.setSessionId("2"); us2.setUser(u2);
final UserSession us3 = new UserSession(); us3.setSessionId("3"); us3.setUser(u3);
when(userSession.getUser()).thenReturn(u1);
Map<String, Object> m = new HashMap<String, Object>();
m.put("onlineUsers", Arrays.asList(us1, us2, us3));
when(mockResult.included()).thenReturn(m);
GroupInteractionFilter filter = new GroupInteractionFilter();
filter.filterForumListing(mockResult, userSession);
assertEquals(2, mockResult.included("totalLoggedUsers"));
assertEquals(new HashSet<UserSession>(Arrays.asList(us1, us2)), mockResult.included("onlineUsers"));
}
}