Package org.zanata.webtrans.client.service

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

package org.zanata.webtrans.client.service;

import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hamcrest.Matchers;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.common.ContentState;
import org.zanata.model.TestFixture;
import org.zanata.webtrans.client.presenter.UserConfigHolder;
import org.zanata.webtrans.shared.model.TransUnit;
import org.zanata.webtrans.shared.model.TransUnitId;
import org.zanata.webtrans.shared.rpc.NavOption;

import com.google.common.collect.Lists;

import lombok.extern.slf4j.Slf4j;

@Test(groups = { "unit-tests" })
@Slf4j
public class ModalNavigationStateHolderTest {
    private ModalNavigationStateHolder navigationStateHolder;

    // @formatter:off
    private final List<TransUnit> tuList = Lists.newArrayList(
        TestFixture.makeTransUnit(0, ContentState.New),
        TestFixture.makeTransUnit(1, ContentState.New),
        TestFixture.makeTransUnit(2, ContentState.NeedReview),
        TestFixture.makeTransUnit(3, ContentState.Approved),
        TestFixture.makeTransUnit(4, ContentState.NeedReview),
        TestFixture.makeTransUnit(5, ContentState.New),
        TestFixture.makeTransUnit(6, ContentState.NeedReview),
        TestFixture.makeTransUnit(7, ContentState.Approved),
        TestFixture.makeTransUnit(8, ContentState.New),
        TestFixture.makeTransUnit(9, ContentState.New),
        TestFixture.makeTransUnit(10, ContentState.NeedReview)
    );
    private Map<TransUnitId,ContentState> transIdStateMap;
    private List<TransUnitId> idIndexList;
    private UserConfigHolder configHolder;
    // @formatter:on

    @BeforeClass
    protected void setUpTestData() {
        log.info("TransUnit list size: {}", tuList.size());
        log.info("transIdStateMap : \n\t{}", transIdStateMap);
        log.info("idIndexList : \n\t{}", idIndexList);
    }

    @BeforeMethod
    protected void setUp() throws Exception {
        transIdStateMap = new HashMap<TransUnitId, ContentState>();
        idIndexList = new ArrayList<TransUnitId>();

        for (TransUnit tu : tuList) {
            transIdStateMap.put(tu.getId(), tu.getStatus());
            idIndexList.add(tu.getId());
        }
        configHolder = new UserConfigHolder();
        navigationStateHolder = new ModalNavigationStateHolder(configHolder);
        navigationStateHolder.init(transIdStateMap, idIndexList);
    }

    @Test
    public void testGetInitialPageSize() {
        assertThat(navigationStateHolder.getCurrentPage(), is(0));
    }

    @Test
    public void testGetNextRow() {
        navigationStateHolder.updateSelected(new TransUnitId(0));

        assertThat(navigationStateHolder.getNextId().getId(), is(1L));

        navigationStateHolder.updateSelected(new TransUnitId(3));
        assertThat(navigationStateHolder.getNextId().getId(), is(4L));

        navigationStateHolder.updateSelected(new TransUnitId(5));
        assertThat(navigationStateHolder.getNextId().getId(), is(6L));

    }

    @Test
    public void testGetNextRowWithContentStateFilterOn() {
        configHolder.setFilterByFuzzy(true);
        configHolder.setFilterByUntranslated(true);

        navigationStateHolder.updateSelected(new TransUnitId(2));
        assertThat(navigationStateHolder.getNextId().getId(), is(4L));

        navigationStateHolder.updateSelected(new TransUnitId(4));
        assertThat(navigationStateHolder.getNextId().getId(), is(5L));
    }

    @Test
    public void testGetPrevRow() {
        navigationStateHolder.updateSelected(new TransUnitId(1));
        assertThat(navigationStateHolder.getPrevId().getId(), is(0L));

        navigationStateHolder.updateSelected(new TransUnitId(4));
        assertThat(navigationStateHolder.getPrevId().getId(), is(3L));
    }

    @Test
    public void testGetPrevRowWithContentStateFilterOn() {
        configHolder.setFilterByTranslated(true);
        configHolder.setFilterByUntranslated(true);

        navigationStateHolder.updateSelected(new TransUnitId(4));
        assertThat(navigationStateHolder.getPrevId().getId(), is(3L));

        navigationStateHolder.updateSelected(new TransUnitId(3));
        assertThat(navigationStateHolder.getPrevId().getId(), is(1L));
    }

    @Test
    public void testGetPreviousStateRow() {
        navigationStateHolder.updateSelected(new TransUnitId(9));
        configHolder.setNavOption(NavOption.FUZZY_UNTRANSLATED);
        assertThat(navigationStateHolder.getPreviousStateId().getId(), is(8L));

        navigationStateHolder.updateSelected(new TransUnitId(8));
        configHolder.setNavOption(NavOption.FUZZY);
        assertEquals(navigationStateHolder.getPreviousStateId().getId(), 6);

        navigationStateHolder.updateSelected(new TransUnitId(4));
        configHolder.setNavOption(NavOption.UNTRANSLATED);
        assertEquals(navigationStateHolder.getPreviousStateId().getId(), 1);

        navigationStateHolder.updateSelected(new TransUnitId(0));
        configHolder.setNavOption(NavOption.FUZZY);
        assertEquals(navigationStateHolder.getPreviousStateId().getId(), 0);
    }

    @Test
    public void testGetNextStateRow() {
        navigationStateHolder.updateSelected(new TransUnitId(2));
        configHolder.setNavOption(NavOption.FUZZY_UNTRANSLATED);
        assertEquals(navigationStateHolder.getNextStateId().getId(), 4);

        navigationStateHolder.updateSelected(new TransUnitId(3));
        configHolder.setNavOption(NavOption.FUZZY);
        assertEquals(navigationStateHolder.getNextStateId().getId(), 4);

        navigationStateHolder.updateSelected(new TransUnitId(7));
        configHolder.setNavOption(NavOption.FUZZY_UNTRANSLATED);
        assertEquals(navigationStateHolder.getNextStateId().getId(), 8);

        navigationStateHolder.updateSelected(new TransUnitId(5));
        configHolder.setNavOption(NavOption.UNTRANSLATED);
        assertEquals(navigationStateHolder.getNextStateId().getId(), 8);

        navigationStateHolder.updateSelected(new TransUnitId(9));
        configHolder.setNavOption(NavOption.UNTRANSLATED);
        assertEquals(navigationStateHolder.getNextStateId().getId(), 9);
    }

    @Test
    public void testUpdateMapAndNavigate() {
        navigationStateHolder.updateState(new TransUnitId(9L),
                ContentState.Approved);

        navigationStateHolder.updateSelected(new TransUnitId(10));
        assertEquals(navigationStateHolder.getPreviousStateId().getId(), 8);

        navigationStateHolder.updateState(new TransUnitId(3L),
                ContentState.NeedReview);

        navigationStateHolder.updateSelected(new TransUnitId(2));
        assertEquals(navigationStateHolder.getNextStateId().getId(), 3);
    }

    @Test
    public void canGetTargetPage() {
        // given page size is 3 and we have 11 trans unit
        // 0 1 2 | 3 4 5 | 6 7 8 | 9 10
        configHolder.setEditorPageSize(3);
        navigationStateHolder.init(transIdStateMap, idIndexList);

        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(0)),
                Matchers.equalTo(0));
        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(2)),
                Matchers.equalTo(0));
        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(3)),
                Matchers.equalTo(1));
        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(7)),
                Matchers.equalTo(2));
        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(9)),
                Matchers.equalTo(3));
        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(10)),
                Matchers.equalTo(3));
        assertThat(navigationStateHolder.getTargetPage(new TransUnitId(999)),
                Matchers.equalTo(NavigationService.UNDEFINED));
    }

    @Test
    public void canUpdatePageSize() {
        configHolder.setEditorPageSize(3);
        navigationStateHolder.init(transIdStateMap, idIndexList);
        assertThat(navigationStateHolder.getPageCount(), Matchers.equalTo(4));
        navigationStateHolder.updateSelected(new TransUnitId(3));
        assertThat(navigationStateHolder.getNextStateId(),
                equalTo(new TransUnitId(4)));

        configHolder.setEditorPageSize(4);
        navigationStateHolder.updatePageSize();
        assertThat(navigationStateHolder.getPageCount(), Matchers.equalTo(3));
        assertThat(navigationStateHolder.getNextStateId(),
                equalTo(new TransUnitId(4)));
    }
}
TOP

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

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.