Package fr.ippon.tatami.service

Source Code of fr.ippon.tatami.service.TrendServiceTest

package fr.ippon.tatami.service;

import fr.ippon.tatami.AbstractCassandraTatamiTest;
import fr.ippon.tatami.domain.User;
import fr.ippon.tatami.security.AuthenticationService;
import fr.ippon.tatami.web.rest.dto.Trend;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;

import javax.inject.Inject;
import java.util.ArrayList;
import java.util.Collection;

import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class TrendServiceTest extends AbstractCassandraTatamiTest {

    @Inject
    public StatusUpdateService statusUpdateService;

    @Inject
    public TrendService trendService;

    @Test
    public void testSearchTags() {
        mockAuthentication("currentuser@domain.com");
        String domain = "domain.com";
        Collection<String> tags = trendService.searchTags(domain, "Te", 1);
        assertEquals(0, tags.size());
        tags = trendService.searchTags(domain, "Test", 1);
        assertEquals(0, tags.size());
        statusUpdateService.postStatus("Message #Test", false, new ArrayList<String>(), null);
        tags = trendService.searchTags(domain, "Te", 1);
        assertEquals(1, tags.size());
        tags = trendService.searchTags(domain, "Test", 1);
        assertEquals(1, tags.size());
    }

    @Test
    public void testCurrentTrends() {
        mockAuthentication("currentuser@domain.com");
        String domain = "domain.com";
        Collection<Trend> trends = trendService.getCurrentTrends(domain);
        for (Trend trend : trends) {
            if (trend.getTag().equals("TheTrend")) {
                fail("#TheTrend shoud not be trending yet");
            }
        }
        for (int i = 0; i < 5; i++) {
            statusUpdateService.postStatus("Trending message " + i + " #Trending", false, new ArrayList<String>(), null);
        }
        trends = trendService.getCurrentTrends(domain);
        boolean foundTrend = false;
        for (Trend trend : trends) {
            if (trend.getTag().equals("Trending")) {
                foundTrend = true;
                assertTrue(trend.isTrendingUp());
            }
        }
        if (!foundTrend) {
            fail("#Trending should have been trending");
        }
        for (int i = 0; i < 7; i++) {
            statusUpdateService.postStatus("New trending message " + i + " #NewTrend", false, new ArrayList<String>(), null);
        }
        trends = trendService.getCurrentTrends(domain);
        foundTrend = false;
        boolean foundNewTrend = false;
        for (Trend trend : trends) {
            if (trend.getTag().equals("Trending")) {
                foundTrend = true;
                assertFalse(trend.isTrendingUp());
            } else if (trend.getTag().equals("NewTrend")) {
                foundNewTrend = true;
                assertTrue(trend.isTrendingUp());
            }
        }
        if (!foundTrend) {
            fail("#Trending should have been trending");
        }
        if (!foundNewTrend) {
            fail("#NewTrend should have been trending");
        }
    }

    @Test
    public void testUserTrends() {
        String login = "currentuser@domain.com";
        mockAuthentication(login);
        Collection<Trend> trends = trendService.getTrendsForUser(login);
        for (Trend trend : trends) {
            if (trend.getTag().equals("MyTrend")) {
                fail("#MyTrend shoud not be trending yet");
            }
        }
        for (int i = 0; i < 5; i++) {
            statusUpdateService.postStatus("User trending message " + i + " #MyTrend", false, new ArrayList<String>(), null);
        }
        trends = trendService.getTrendsForUser(login);
        boolean foundTrend = false;
        for (Trend trend : trends) {
            if (trend.getTag().equals("MyTrend")) {
                foundTrend = true;
                assertTrue(trend.isTrendingUp());
            }
        }
        if (!foundTrend) {
            fail("#MyTrend should have been trending");
        }
    }

    @Test
    public void testPrivateMessagesNotInTrends() {
        String login = "currentuser@domain.com";
        mockAuthentication(login);

        for (int i = 0; i < 5; i++) {
            statusUpdateService.postStatus("@anotheruser private message " + i + " #NoTrend", true, new ArrayList<String>(), null);
        }

        Collection<Trend> trends = trendService.getCurrentTrends("domain.com");
        boolean foundTrend = false;
        for (Trend trend : trends) {
            if (trend.getTag().equals("NoTrend")) {
                foundTrend = true;
            }
        }
        if (foundTrend) {
            fail("#NoTrend should not have been trending");
        }

        trendService.getTrendsForUser(login);
        foundTrend = false;
        for (Trend trend : trends) {
            if (trend.getTag().equals("NoTrend")) {
                foundTrend = true;
            }
        }
        if (foundTrend) {
            fail("#NoTrend should not have been trending");
        }
    }

    private void mockAuthentication(String login) {
        User authenticateUser = constructAUser(login);
        AuthenticationService mockAuthenticationService = mock(AuthenticationService.class);
        when(mockAuthenticationService.getCurrentUser()).thenReturn(authenticateUser);
        ReflectionTestUtils.setField(statusUpdateService, "authenticationService", mockAuthenticationService);
    }
}
TOP

Related Classes of fr.ippon.tatami.service.TrendServiceTest

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.