Package org.zanata.webtrans.client.service

Source Code of org.zanata.webtrans.client.service.UserSessionServiceTest

package org.zanata.webtrans.client.service;

import org.hamcrest.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.model.TestFixture;
import org.zanata.webtrans.client.events.EnterWorkspaceEvent;
import org.zanata.webtrans.client.events.ExitWorkspaceEvent;
import org.zanata.webtrans.client.events.TransUnitEditEvent;
import org.zanata.webtrans.client.presenter.WorkspaceUsersPresenter;
import org.zanata.webtrans.client.ui.HasManageUserPanel;
import org.zanata.webtrans.shared.auth.EditorClientId;
import org.zanata.webtrans.shared.model.Person;
import org.zanata.webtrans.shared.model.TransUnit;
import org.zanata.webtrans.shared.model.UserPanelSessionItem;
import org.zanata.webtrans.shared.rpc.HasTransUnitEditData;

import net.customware.gwt.presenter.client.EventBus;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/**
* @author Patrick Huang <a
*         href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@Test(groups = "unit-tests")
public class UserSessionServiceTest {
    private UserSessionService service;
    @Mock
    private EventBus eventBus;
    @Mock
    private DistinctColor distinctColor;
    @Mock
    private HasManageUserPanel panel;
    @Mock
    private HasTransUnitEditData hasTransUnitData;
    @Mock
    private WorkspaceUsersPresenter workspaceUsersPresenter;
    @Mock
    private TranslatorInteractionService translatorInteractionService;

    @BeforeMethod
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        service =
                new UserSessionService(eventBus, distinctColor,
                        workspaceUsersPresenter, translatorInteractionService);

        verify(eventBus).addHandler(TransUnitEditEvent.getType(), service);
    }

    private static EditorClientId editorClientId() {
        return new EditorClientId("session", 1);
    }

    @Test
    public void onTransUnitEditEvent() {
        // Given:
        EditorClientId editorClientId = editorClientId();
        UserPanelSessionItem sessionItem =
                new UserPanelSessionItem(panel, TestFixture.person());
        TransUnit transUnit = TestFixture.makeTransUnit(2);
        service.getUserSessionMap().put(editorClientId, sessionItem);
        when(hasTransUnitData.getEditorClientId()).thenReturn(editorClientId);
        when(hasTransUnitData.getSelectedTransUnitId()).thenReturn(
                transUnit.getId());

        // When:
        service.onTransUnitEdit(new TransUnitEditEvent(hasTransUnitData));

        // Then:
        assertThat(service.getUserSessionMap().get(editorClientId)
                .getSelectedId(), Matchers.sameInstance(transUnit.getId()));
        assertThat(service.getUserSessionMap().get(editorClientId)
                .getSelectedId(), Matchers.sameInstance(transUnit.getId()));
    }

    @Test
    public void onEnterWorkspace() {
        EnterWorkspaceEvent event = mock(EnterWorkspaceEvent.class);
        EditorClientId editorClientId = editorClientId();
        Person person = TestFixture.person();
        when(event.getEditorClientId()).thenReturn(editorClientId);
        when(event.getPerson()).thenReturn(person);
        when(workspaceUsersPresenter.addNewUser(person)).thenReturn(panel);
        when(distinctColor.getOrCreateColor(editorClientId)).thenReturn("red");

        service.onEnterWorkspace(event);

        assertThat(service.getUserSessionMap(), Matchers.hasKey(editorClientId));
        UserPanelSessionItem userPanel =
                service.getUserSessionMap().get(editorClientId);
        assertThat(userPanel.getPanel(), Matchers.sameInstance(panel));
        verify(panel).setColor("red");
        assertThat(userPanel.getSelectedId(), Matchers.nullValue());
    }

    @Test
    public void onExitWorkspace() {
        ExitWorkspaceEvent event = mock(ExitWorkspaceEvent.class);
        EditorClientId editorClientId = editorClientId();
        Person person = TestFixture.person();
        when(event.getEditorClientId()).thenReturn(editorClientId);
        when(event.getPerson()).thenReturn(person);
        UserPanelSessionItem sessionItem =
                new UserPanelSessionItem(panel, person);
        TransUnit selectedTransUnit = TestFixture.makeTransUnit(1);
        sessionItem.setSelectedId(selectedTransUnit.getId());
        service.getUserSessionMap().put(editorClientId, sessionItem);

        service.onExitWorkspace(event);

        verify(workspaceUsersPresenter).removeUser(panel,
                person.getId().toString());
        verify(translatorInteractionService).personExit(person,
                selectedTransUnit.getId());
        assertThat(service.getUserSessionMap().size(), Matchers.is(0));
    }

}
TOP

Related Classes of org.zanata.webtrans.client.service.UserSessionServiceTest

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.