Package org.eurekastreams.server.persistence.mappers

Source Code of org.eurekastreams.server.persistence.mappers.StreamDiscoverListsMapperTest

/*
* 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;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import junit.framework.Assert;

import org.eurekastreams.server.domain.dto.FeaturedStreamDTO;
import org.eurekastreams.server.domain.dto.StreamDTO;
import org.eurekastreams.server.domain.dto.StreamDiscoverListsDTO;
import org.eurekastreams.server.domain.dto.SublistWithResultCount;
import org.eurekastreams.server.persistence.mappers.requests.MapperRequest;
import org.eurekastreams.server.search.modelview.PersonModelView;
import org.eurekastreams.server.service.actions.strategies.RepopulateTempWeekdaysSinceDateStrategy;
import org.jmock.Expectations;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Test;

/**
* Test fixture for StreamDiscoverListsMapper.
*/
public class StreamDiscoverListsMapperTest
{
    /**
     * Context for mocking.
     */
    private final JUnit4Mockery context = new JUnit4Mockery()
    {
        {
            setImposteriser(ClassImposteriser.INSTANCE);
        }
    };

    /**
     * Mapper to retrieve featured stream DTOs.
     */
    private DomainMapper<MapperRequest< ? >, List<FeaturedStreamDTO>> featuredStreamDTOMapper = context.mock(
            DomainMapper.class, "featuredStreamDTOMapper");

    /**
     * Mapper to retrieve the most active stream DTOs.
     */
    private DomainMapper<Serializable, SublistWithResultCount<StreamDTO>> mostActiveStreamsMapper = context.mock(
            DomainMapper.class, "mostActiveStreamsMapper");

    /**
     * Mapper to retrieve the most viewed stream DTOs.
     */
    private DomainMapper<Serializable, List<StreamDTO>> mostViewedStreamsMapper = context.mock(DomainMapper.class,
            "mostViewedStreamsMapper");

    /**
     * Mapper to retrieve the most followed stream DTOs.
     */
    private DomainMapper<Serializable, List<StreamDTO>> mostFollowedStreamsMapper = context.mock(DomainMapper.class,
            "mostFollowedStreamsMapper");

    /**
     * Mapper to retrieve the most recent stream DTOs.
     */
    private DomainMapper<Serializable, List<StreamDTO>> mostRecentStreamsMapper = context.mock(DomainMapper.class,
            "mostRecentStreamsMapper");

    /**
     * Strategy to repopulate the TempWeekdaysSinceDate table.
     */
    private final RepopulateTempWeekdaysSinceDateStrategy repopulateTempWeekdaysSinceDateStrategy = context
            .mock(RepopulateTempWeekdaysSinceDateStrategy.class);

    /**
     * Number of days to generate weekday count data for.
     */
    private final long numberOfDaysOfWeekdayCountDataToGenerate = 999;

    /**
     * System under test.
     */
    private StreamDiscoverListsMapper sut = new StreamDiscoverListsMapper(featuredStreamDTOMapper,
            mostActiveStreamsMapper, mostViewedStreamsMapper, mostFollowedStreamsMapper, mostRecentStreamsMapper,
            repopulateTempWeekdaysSinceDateStrategy, numberOfDaysOfWeekdayCountDataToGenerate);

    /**
     * Test execute.
     */
    @Test
    public void testExecute()
    {
        final FeaturedStreamDTO featuredDTO = new FeaturedStreamDTO();
        final StreamDTO mostActiveDTO = new PersonModelView();
        final Long mostActiveCount = 82L;
        final StreamDTO mostViewedDTO = new PersonModelView();
        final StreamDTO mostFollowedDTO = new PersonModelView();
        final StreamDTO mostRecentDTO = new PersonModelView();

        final List<FeaturedStreamDTO> featuredDTOs = new ArrayList<FeaturedStreamDTO>();
        featuredDTOs.add(featuredDTO);

        final SublistWithResultCount<StreamDTO> mostActiveDTOs = new SublistWithResultCount<StreamDTO>();
        mostActiveDTOs.setResultsSublist(new ArrayList<StreamDTO>());
        mostActiveDTOs.getResultsSublist().add(mostActiveDTO);
        mostActiveDTOs.setTotalResultsCount(mostActiveCount);

        final List<StreamDTO> mostViewedDTOs = new ArrayList<StreamDTO>();
        mostViewedDTOs.add(mostViewedDTO);

        final List<StreamDTO> mostFollowedDTOs = new ArrayList<StreamDTO>();
        mostFollowedDTOs.add(mostFollowedDTO);

        final List<StreamDTO> mostRecentDTOs = new ArrayList<StreamDTO>();
        mostRecentDTOs.add(mostRecentDTO);

        context.checking(new Expectations()
        {
            {
                oneOf(repopulateTempWeekdaysSinceDateStrategy).execute(numberOfDaysOfWeekdayCountDataToGenerate);

                oneOf(featuredStreamDTOMapper).execute(null);
                will(returnValue(featuredDTOs));

                oneOf(mostActiveStreamsMapper).execute(null);
                will(returnValue(mostActiveDTOs));

                oneOf(mostViewedStreamsMapper).execute(null);
                will(returnValue(mostViewedDTOs));

                oneOf(mostFollowedStreamsMapper).execute(null);
                will(returnValue(mostFollowedDTOs));

                oneOf(mostRecentStreamsMapper).execute(null);
                will(returnValue(mostRecentDTOs));
            }
        });

        StreamDiscoverListsDTO result = sut.execute(null);

        Assert.assertSame(featuredDTO, result.getFeaturedStreams().get(0));
        Assert.assertSame(mostActiveDTO, result.getMostActiveStreams().getResultsSublist().get(0));
        Assert.assertEquals(mostActiveCount, result.getMostActiveStreams().getTotalResultsCount());
        Assert.assertSame(mostViewedDTO, result.getMostViewedStreams().get(0));
        Assert.assertSame(mostFollowedDTO, result.getMostFollowedStreams().get(0));
        Assert.assertSame(mostRecentDTO, result.getMostRecentStreams().get(0));

        context.assertIsSatisfied();
    }

}
TOP

Related Classes of org.eurekastreams.server.persistence.mappers.StreamDiscoverListsMapperTest

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.