/*
* Copyright (c) 2011 Lockheed Martin Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.server.persistence.mappers.db;
import java.util.List;
import junit.framework.Assert;
import org.eurekastreams.server.domain.Follower;
import org.eurekastreams.server.persistence.mappers.MapperTest;
import org.eurekastreams.server.persistence.mappers.requests.SuggestedStreamsRequest;
import org.eurekastreams.server.search.modelview.PersonModelView;
import org.junit.Before;
import org.junit.Test;
/**
* Test fixture for GetSuggestedPeopleForPersonDbMapper.
*/
public class GetSuggestedPeopleForPersonDbMapperTest extends MapperTest
{
/**
* System under test.
*/
private GetSuggestedPeopleForPersonDbMapper sut;
/**
* Setup.
*/
@Before
public void setup()
{
sut = new GetSuggestedPeopleForPersonDbMapper();
sut.setEntityManager(getEntityManager());
}
/**
* Test execute.
*/
@Test
public void testExecute()
{
getEntityManager().createQuery("DELETE FROM Follower").executeUpdate();
// person 42 is following 98, 4507
getEntityManager().persist(new Follower(42L, 98));
getEntityManager().persist(new Follower(42L, 4507));
// -- ask for more than exist
// 98 and 4507 are following 142
getEntityManager().persist(new Follower(98, 142));
getEntityManager().persist(new Follower(4507, 142));
// 98 is following 99
getEntityManager().persist(new Follower(98, 99));
List<PersonModelView> suggestions = sut.execute(new SuggestedStreamsRequest(42, 5));
Assert.assertEquals(2, suggestions.size());
Assert.assertEquals(142, suggestions.get(0).getId());
Assert.assertEquals("fordp2", suggestions.get(0).getAccountId());
Assert.assertEquals("Volgon-Vwatter Prefect", suggestions.get(0).getDisplayName());
Assert.assertEquals(2, suggestions.get(0).getFollowersCount());
Assert.assertEquals(99L, suggestions.get(1).getId());
Assert.assertEquals("mrburns", suggestions.get(1).getAccountId());
Assert.assertEquals("Mr.Burns Burns", suggestions.get(1).getDisplayName());
Assert.assertEquals(1, suggestions.get(1).getFollowersCount());
// -- now only ask for 1
suggestions = sut.execute(new SuggestedStreamsRequest(42, 1));
Assert.assertEquals(1, suggestions.size());
Assert.assertEquals(142L, suggestions.get(0).getId());
Assert.assertEquals("fordp2", suggestions.get(0).getAccountId());
Assert.assertEquals("Volgon-Vwatter Prefect", suggestions.get(0).getDisplayName());
Assert.assertEquals(2, suggestions.get(0).getFollowersCount());
// -- now follow 99, which will no longer suggest it
getEntityManager().persist(new Follower(42, 99));
suggestions = sut.execute(new SuggestedStreamsRequest(42, 5));
Assert.assertEquals(1, suggestions.size());
Assert.assertEquals(142L, suggestions.get(0).getId());
Assert.assertEquals("fordp2", suggestions.get(0).getAccountId());
Assert.assertEquals("Volgon-Vwatter Prefect", suggestions.get(0).getDisplayName());
Assert.assertEquals(2, suggestions.get(0).getFollowersCount());
}
}