Package org.zanata.webtrans.server.rpc

Source Code of org.zanata.webtrans.server.rpc.GetGlossaryHandlerJpaTest

package org.zanata.webtrans.server.rpc;

import java.util.List;

import org.dbunit.operation.DatabaseOperation;
import org.hamcrest.Matchers;
import org.hibernate.Session;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.ZanataDbunitJpaTest;
import org.zanata.common.LocaleId;
import org.zanata.dao.GlossaryDAO;
import org.zanata.model.HGlossaryTerm;
import org.zanata.model.HLocale;
import org.zanata.seam.SeamAutowire;
import org.zanata.security.ZanataIdentity;
import org.zanata.service.LocaleService;
import org.zanata.webtrans.shared.rpc.GetGlossary;
import org.zanata.webtrans.shared.rpc.GetGlossaryResult;
import org.zanata.webtrans.shared.rpc.HasSearchType;

import com.google.common.collect.Lists;

import lombok.extern.slf4j.Slf4j;
import static org.hamcrest.MatcherAssert.*;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

/**
* @author Patrick Huang <a
*         href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@Test(groups = "jpa-tests")
@Slf4j
public class GetGlossaryHandlerJpaTest extends ZanataDbunitJpaTest {
    private static final LocaleId TARGET_LOCALE_ID = new LocaleId("zh");
    private GetGlossaryHandler handler;
    @Mock
    private ZanataIdentity identity;
    @Mock
    private LocaleService localeService;
    private HLocale targetHLocale;
    private GlossaryDAO glossaryDAOSpy;

    @Override
    protected void prepareDBUnitOperations() {
        beforeTestOperations.add(new DataSetOperation(
                "performance/GlossaryTest.dbunit.xml",
                DatabaseOperation.CLEAN_INSERT));
    }

    @BeforeMethod
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        GlossaryDAO dao = new GlossaryDAO((Session) getEm().getDelegate());
        glossaryDAOSpy = spy(dao);

        // @formatter:off
      handler = SeamAutowire.instance()
            .reset()
            .use("identity", identity)
            .use("localeServiceImpl", localeService)
            .use("glossaryDAO", glossaryDAOSpy)
            .ignoreNonResolvable()
            .autowire(GetGlossaryHandler.class);
      // @formatter:on
        targetHLocale = getEm().find(HLocale.class, 2L);
    }

    @Test
    public void canGetGlossary() throws Exception {
        // Given:
        when(localeService.getByLocaleId(TARGET_LOCALE_ID)).thenReturn(
                targetHLocale);
        GetGlossary action =
                new GetGlossary("fedora", TARGET_LOCALE_ID, LocaleId.EN_US,
                        HasSearchType.SearchType.FUZZY);
        // hibernate search result
        HGlossaryTerm srcGlossaryTerm1 = getEm().find(HGlossaryTerm.class, 42L);
        HGlossaryTerm srcGlossaryTerm2 = getEm().find(HGlossaryTerm.class, 46L);
        List<Object[]> matches =
                Lists.newArrayList(new Object[] { 1.0F, srcGlossaryTerm1 },
                        new Object[] { 1.1F, srcGlossaryTerm2 });
        doReturn(matches).when(glossaryDAOSpy).getSearchResult("fedora",
                HasSearchType.SearchType.FUZZY, LocaleId.EN_US, 20);

        // When:
        long start = System.nanoTime();
        GetGlossaryResult result = handler.execute(action, null);
        double duration = (System.nanoTime() - start) / 1000000000.0;
        log.info("************** {} second", duration);

        // Then:
        assertThat(result.getGlossaries(), Matchers.hasSize(2));
        assertThat(result.getGlossaries().get(0).getSource(),
                Matchers.equalTo("Planet Fedora"));
        assertThat(result.getGlossaries().get(0).getTarget(),
                Matchers.equalTo("Fedora 博客聚集"));
        assertThat(result.getGlossaries().get(1).getSource(),
                Matchers.equalTo("Fedora Artwork"));
        assertThat(result.getGlossaries().get(1).getTarget(),
                Matchers.equalTo("Fedora 美工"));
    }

    @Test
    public void testRollback() throws Exception {
        handler.rollback(null, null, null);
    }
}
TOP

Related Classes of org.zanata.webtrans.server.rpc.GetGlossaryHandlerJpaTest

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.