Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Move searchBestMatchTargetTest to TranslationFinderTest
Browse files Browse the repository at this point in the history
  • Loading branch information
seanf committed Apr 22, 2014
1 parent 164c674 commit 3a1d349
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 43 deletions.
@@ -0,0 +1,113 @@
package org.zanata.service.impl;

import static org.assertj.core.api.Assertions.assertThat;

import java.util.List;

import org.assertj.core.api.Condition;
import org.dbunit.operation.DatabaseOperation;
import org.hibernate.search.impl.FullTextSessionImpl;
import org.hibernate.search.jpa.Search;
import org.mockito.MockitoAnnotations;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.zanata.ImmutableDbunitJpaTest;
import org.zanata.common.LocaleId;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.dao.TextFlowTargetDAO;
import org.zanata.model.HDocument;
import org.zanata.model.HProjectIteration;
import org.zanata.model.HTextFlow;
import org.zanata.model.HTextFlowTarget;
import org.zanata.seam.SeamAutowire;
import org.zanata.service.SearchIndexManager;
import org.zanata.service.TranslationFinder;

import com.google.common.base.Optional;

/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*/
public class TranslationFinderTest extends ImmutableDbunitJpaTest {
private SeamAutowire seam = SeamAutowire.instance();

@Override
protected void prepareDBUnitOperations() {
beforeTestOperations.add(new DataSetOperation(
"org/zanata/test/model/ClearAllTables.dbunit.xml",
DatabaseOperation.CLEAN_INSERT));
beforeTestOperations.add(new DataSetOperation(
"org/zanata/test/model/LocalesData.dbunit.xml",
DatabaseOperation.CLEAN_INSERT));
beforeTestOperations.add(new DataSetOperation(
"org/zanata/test/model/TranslationMemoryData.dbunit.xml",
DatabaseOperation.CLEAN_INSERT));
}

@BeforeClass
public void beforeClass() throws Exception {
MockitoAnnotations.initMocks(this);
seam.reset()
.use("entityManager",
Search.getFullTextEntityManager(getEm()))
.use("entityManagerFactory", getEmf())
.use("session", new FullTextSessionImpl(getSession()))
.useImpl(AsyncTaskManagerServiceImpl.class)
.ignoreNonResolvable();
seam.autowire(SearchIndexManager.class).reindex(true, true, false);
}

@Test
public void testTextFlowTargetDAO() {
TranslationFinder service = seam.autowire(TextFlowTargetDAO.class);
searchBestMatchTargetTest(service);
}

@Test
public void testTranslationMemoryServiceImpl() throws Exception {
TranslationFinder service = seam.autowire(TranslationMemoryServiceImpl.class);
searchBestMatchTargetTest(service);
}

/**
* Makes sure that given two equal results, it will reuse the most recent
* translation.
*/
private void searchBestMatchTargetTest(TranslationFinder service) {
ProjectIterationDAO projectIterationDAO =
seam.autowire(ProjectIterationDAO.class);

HProjectIteration version =
projectIterationDAO.getBySlug("same-project", "same-version");
assert version != null;

HDocument hDoc = version.getDocuments().get("/same/document0");

HTextFlow textFlow = hDoc.getTextFlows().get(0);
Optional<HTextFlowTarget> match =
service.searchBestMatchTransMemory(textFlow,
LocaleId.DE,
hDoc.getSourceLocaleId(), true, true,
true);
Assert.assertTrue(match.isPresent());
checkTargetContents(match.get(), "most recent content");
}

private void checkTargetContents(HTextFlowTarget target,
final String searchString) {
assertThat(target.getContents()).has(
new Condition<List<String>>("contains \""+searchString+"\"") {
@Override
public boolean matches(List<String> strings) {
for (String value : strings) {
if (value.contains(searchString)) {
return true;
}
}
return false;
}
});
}

}
Expand Up @@ -15,10 +15,8 @@
import org.zanata.ImmutableDbunitJpaTest;
import org.zanata.common.LocaleId;
import org.zanata.dao.LocaleDAO;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.dao.TextFlowDAO;
import org.zanata.model.HAccount;
import org.zanata.model.HDocument;
import org.zanata.model.HLocale;
import org.zanata.model.HPerson;
import org.zanata.model.HProject;
Expand Down Expand Up @@ -48,6 +46,7 @@
/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*/
// see also TranslationFinderTest
public class TranslationMemoryServiceImplTest extends ImmutableDbunitJpaTest {
private SeamAutowire seam = SeamAutowire.instance();
private TranslationMemoryServiceImpl service;
Expand Down Expand Up @@ -183,31 +182,6 @@ private void executeFindBestTMMatch(HTextFlow textFlow, int threshold,
assertThat(match.isPresent()).isEqualTo(hasMatch);
}

/**
* Makes sure that given two equal results, it will reuse the most recent
* translation.
*/
@Test
public void searchBestMatchTargetTest() {
ProjectIterationDAO projectIterationDAO =
seam.autowire(ProjectIterationDAO.class);

HProjectIteration version =
projectIterationDAO.getBySlug("same-project", "same-version");
assert version != null;

HDocument hDoc = version.getDocuments().get("/same/document0");

HTextFlow textFlow = hDoc.getTextFlows().get(0);
Optional<HTextFlowTarget> match =
service.searchBestMatchTransMemory(textFlow,
LocaleId.DE,
hDoc.getSourceLocaleId(), true, true,
true);
Assert.assertTrue(match.isPresent());
checkTargetContents(match.get(), "most recent content");
}

@Test(dataProvider = "TMData")
public void testTMSearch(TransMemoryExecution exec) {

Expand Down Expand Up @@ -304,22 +278,6 @@ public boolean matches(List<Object> value) {
});
}

private void checkTargetContents(HTextFlowTarget target,
final String searchString) {
assertThat(target.getContents()).has(
new Condition<List<String>>("contains \""+searchString+"\"") {
@Override
public boolean matches(List<String> strings) {
for (String value : strings) {
if (value.contains(searchString)) {
return true;
}
}
return false;
}
});
}

private TransMemoryQuery.Condition getCondition(boolean isCheck,
String value) {
return new TransMemoryQuery.Condition(isCheck, value);
Expand Down

0 comments on commit 3a1d349

Please sign in to comment.