Package org.zanata.webtrans.client.presenter

Source Code of org.zanata.webtrans.client.presenter.EditorTranslatorsTest

package org.zanata.webtrans.client.presenter;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
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.service.UserSessionService;
import org.zanata.webtrans.client.ui.ToggleEditor;
import org.zanata.webtrans.client.view.TargetContentsDisplay;
import org.zanata.webtrans.shared.auth.EditorClientId;
import org.zanata.webtrans.shared.auth.Identity;
import org.zanata.webtrans.shared.model.Person;
import org.zanata.webtrans.shared.model.TransUnitId;
import org.zanata.webtrans.shared.model.UserPanelSessionItem;

import java.util.List;
import java.util.Map;

import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
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 EditorTranslatorsTest {
    private EditorTranslators editorTranslators;
    @Mock
    private UserSessionService sessionService;
    @Mock
    private Identity identity;
    private List<ToggleEditor> editors;
    @Mock
    private ToggleEditor editor1;
    @Mock
    private ToggleEditor editor2;
    @Mock
    private TargetContentsDisplay display;
    @Mock
    private UserPanelSessionItem panelSessionItem;

    @BeforeMethod
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        editors = Lists.newArrayList(editor1, editor2);

        editorTranslators = new EditorTranslators(sessionService, identity);
    }

    @Test
    public void testUpdateEditorTranslatorsWithConcurrentEdit() {
        // Given: user in session map has selected same trans unit
        EditorClientId editorClientId = new EditorClientId("sessionId", 1);
        Map<EditorClientId, UserPanelSessionItem> sessionMap =
                ImmutableMap.<EditorClientId, UserPanelSessionItem> builder()
                        .put(editorClientId, panelSessionItem).build();
        when(sessionService.getUserSessionMap()).thenReturn(sessionMap);
        when(sessionService.getColor(editorClientId)).thenReturn("red");
        when(panelSessionItem.getSelectedId()).thenReturn(
                TestFixture.makeTransUnit(1).getId());
        Person person = TestFixture.person();
        when(panelSessionItem.getPerson()).thenReturn(person);
        EditorClientId ourClientId = new EditorClientId("another client id", 2);
        when(identity.getEditorClientId()).thenReturn(ourClientId);

        // When:
        editorTranslators.updateTranslator(display, new TransUnitId(1));

        // Then:
        verify(display).addTranslator("admin", "red");
        verify(display).addTranslator("admin", "red");
    }

    @Test
    public void testUpdateEditorTranslatorsWithoutConcurrentEdit() {
        // Given: user in session map has selected different trans unit
        EditorClientId editorClientId = new EditorClientId("sessionId", 1);
        Map<EditorClientId, UserPanelSessionItem> sessionMap =
                ImmutableMap.<EditorClientId, UserPanelSessionItem> builder()
                        .put(editorClientId, panelSessionItem).build();
        when(sessionService.getUserSessionMap()).thenReturn(sessionMap);
        when(sessionService.getColor(editorClientId)).thenReturn("red");
        when(panelSessionItem.getSelectedId()).thenReturn(
                TestFixture.makeTransUnit(1).getId());
        Person person = TestFixture.person();
        when(panelSessionItem.getPerson()).thenReturn(person);
        EditorClientId ourClientId = new EditorClientId("another client id", 2);
        when(identity.getEditorClientId()).thenReturn(ourClientId);

        // When:
        editorTranslators.updateTranslator(display, new TransUnitId(2)); // different
                                                                         // id

        // Then:
        verify(display).removeTranslator("admin", "red");
        verify(display).removeTranslator("admin", "red");
    }

    @Test
    public void sessionMapClientHasNoSelectedTransUnitYet() {
        // Given: user in session map don't have selected trans unit
        EditorClientId editorClientId = new EditorClientId("sessionId", 1);
        Map<EditorClientId, UserPanelSessionItem> sessionMap =
                ImmutableMap.<EditorClientId, UserPanelSessionItem> builder()
                        .put(editorClientId, panelSessionItem).build();
        when(sessionService.getUserSessionMap()).thenReturn(sessionMap);
        when(panelSessionItem.getSelectedId()).thenReturn(null);

        // When:
        editorTranslators.updateTranslator(display, new TransUnitId(1));

        // Then:
        verifyZeroInteractions(editor1, editor2);
    }
}
TOP

Related Classes of org.zanata.webtrans.client.presenter.EditorTranslatorsTest

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.