Package fr.ippon.tatami.service

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

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.service.dto.StatusDTO;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;

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

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class TimelineServiceTest extends AbstractCassandraTatamiTest {

    @Inject
    public TimelineService timelineService;

    @Test
    public void shouldGetUserline() throws Exception {
        String username = "userWithStatus";
        String login = "userWithStatus@ippon.fr";
        mockAuthenticationOnTimelineServiceWithACurrentUser(login);
        Collection<StatusDTO> status = timelineService.getUserline(username, 10, null, null);
        assertThatLineForUserWithStatusIsOk(username, status);
    }

    @Test
    public void shouldGetAuthenticateUserUserlineWithNullLoginSet() throws Exception {
        String login = "userWithStatus@ippon.fr";
        mockAuthenticationOnTimelineServiceWithACurrentUser("userWithStatus@ippon.fr");
        Collection<StatusDTO> status = timelineService.getUserline(null, 10, null, null);
        assertThatLineForUserWithStatusIsOk("userWithStatus", status);
    }

    @Test
    public void shouldGetAuthenticateUserUserlineWithEmptyLoginSet() throws Exception {
        String username = "userWithStatus";
        mockAuthenticationOnTimelineServiceWithACurrentUser("userWithStatus@ippon.fr");
        Collection<StatusDTO> status = timelineService.getUserline("", 10, null, null);
        assertThatLineForUserWithStatusIsOk(username, status);
    }

    @Test
    public void shouldGetTimeline() throws Exception {
        String login = "userWithStatus@ippon.fr";
        String username = "userWithStatus";
        mockAuthenticationOnTimelineServiceWithACurrentUser(login);
        Collection<StatusDTO> status = timelineService.getTimeline(10, null, null);
        assertThatLineForUserWithStatusIsOk(username, status);
    }

    @Test
    public void shouldGetTagline() throws Exception {
        String login = "userWithStatus@ippon.fr";
        String username = "userWithStatus";
        mockAuthenticationOnTimelineServiceWithACurrentUser(login);
        String hashtag = "ippon";
        Collection<StatusDTO> status = timelineService.getTagline(hashtag, 10, null, null);
        assertThatLineForUserWithStatusIsOk(username, status);
    }

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

    private void assertThatLineForUserWithStatusIsOk(String username, Collection<StatusDTO> status) {
        assertThat(status, notNullValue());
        assertThat(status.size(), is(2));

        StatusDTO firstStatus = (StatusDTO) status.toArray()[0];
        assertThat(firstStatus.getStatusId(), is("fa2bd770-9848-11e1-a6ca-e0f847068d52"));
        assertThat(firstStatus.getUsername(), is(username));
        assertThat(firstStatus.getContent(), is("Tatami is an enterprise social network"));

        StatusDTO secondStatus = (StatusDTO) status.toArray()[1];
        assertThat(secondStatus.getStatusId(), is("f97d6470-9847-11e1-a6ca-e0f847068d52"));
        assertThat(secondStatus.getUsername(), is(username));
        assertThat(secondStatus.getContent(), is("Tatami is fully Open Source"));

    }
}
TOP

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

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.