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

Commit

Permalink
Add TMXParser tests that account for metadata.
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos A. Munoz committed Jul 30, 2013
1 parent ce7411a commit 9e1c842
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 17 deletions.
88 changes: 71 additions & 17 deletions zanata-war/src/test/java/org/zanata/tmx/TMXParserTest.java
Expand Up @@ -22,17 +22,22 @@

import java.io.InputStream;
import java.util.Calendar;

import java.util.Collection;
import java.util.Map;
import javax.xml.stream.XMLStreamException;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.dbunit.operation.DatabaseOperation;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.ZanataDbunitJpaTest;
import org.zanata.dao.TransMemoryDAO;
import org.zanata.model.tm.TMMetadataType;
import org.zanata.model.tm.TransMemoryUnit;
import org.zanata.model.tm.TMXMetadataHelper;
import org.zanata.model.tm.TransMemory;
import org.zanata.model.tm.TransMemoryUnit;
import org.zanata.model.tm.TransMemoryUnitVariant;
import org.zanata.seam.SeamAutowire;

import static org.hamcrest.MatcherAssert.assertThat;
Expand Down Expand Up @@ -64,6 +69,38 @@ public void initializeSeam()
.use("session", getSession());
}

private TransMemory parseAndSaveTMFromFile(String file) throws XMLStreamException
{
TransMemoryDAO transMemoryDAO = seam.autowire(TransMemoryDAO.class);
TransMemory tm = new TransMemory();
tm.setSlug("new-tm");
tm.setDescription("New test tm");
transMemoryDAO.makePersistent(tm);

return parseAndSaveTMFromFile(tm, file);
}

private TransMemory parseAndSaveTMFromFile(TransMemory tm, String file) throws XMLStreamException
{
TMXParser parser = seam.autowire(TMXParser.class);
InputStream is = getClass().getResourceAsStream(file);

parser.parseAndSaveTMX(is, tm);
return tm;
}

private TransMemoryUnit findInCollection(Collection<TransMemoryUnit> col, final String tuid)
{
return (TransMemoryUnit)CollectionUtils.find(col, new Predicate()
{
@Override
public boolean evaluate(Object o)
{
return ((TransMemoryUnit)o).getTransUnitId().equals(tuid);
}
});
}

@Test
public void parseTMX() throws Exception
{
Expand Down Expand Up @@ -95,24 +132,41 @@ public void parseTMX() throws Exception
}
}

private TransMemory parseAndSaveTMFromFile(String file) throws XMLStreamException
@Test
public void parseTMXWithMetadata() throws Exception
{
TransMemoryDAO transMemoryDAO = seam.autowire(TransMemoryDAO.class);
TransMemory tm = new TransMemory();
tm.setSlug("new-tm");
tm.setDescription("New test tm");
transMemoryDAO.makePersistent(tm);

return parseAndSaveTMFromFile(tm, file);
}
// Create a TM
TransMemory tm = parseAndSaveTMFromFile("/tmx/valid-tmx-with-metadata.tmx");

private TransMemory parseAndSaveTMFromFile(TransMemory tm, String file) throws XMLStreamException
{
TMXParser parser = seam.autowire(TMXParser.class);
InputStream is = getClass().getResourceAsStream(file);
// Make sure everything is stored properly
getEm().flush();
getEm().refresh(tm);

parser.parseAndSaveTMX(is, tm);
return tm;
// Metadata at the header level
Map<String,Object> tmMetadata = TMXMetadataHelper.getMetadata(tm);
assertThat(tmMetadata.size(), is(10));
// TODO Add assertions about the metadata contents
System.out.println(tmMetadata);

// Metadata at the TU level
TransMemoryUnit tu0 = findInCollection(tm.getTranslationUnits(), "doc0:resId0");
Map<String,Object> tu0Metadata = TMXMetadataHelper.getMetadata(tu0);
System.out.println(tu0Metadata);
assertThat(tu0Metadata.size(), is(5));
// TODO Add assertions about the metadata contents

TransMemoryUnit tu1 = findInCollection(tm.getTranslationUnits(), "doc0:resId1");
Map<String,Object> tu1Metadata = TMXMetadataHelper.getMetadata(tu1);
System.out.println(tu1Metadata);
assertThat(tu1Metadata.size(), is(5));
// TODO Add assertions about the metadata contents

// Metadata at the TUV level
TransMemoryUnitVariant tuv0 = tu0.getTransUnitVariants().get("en");
Map<String, Object> tuv0Metadata = TMXMetadataHelper.getMetadata(tuv0);
System.out.println(tuv0Metadata);
assertThat(tuv0Metadata.size(), is(4));
// TODO Add assertions about the metadata contents
}

@Test(expectedExceptions = RuntimeException.class)
Expand Down
65 changes: 65 additions & 0 deletions zanata-war/src/test/resources/tmx/valid-tmx-with-metadata.tmx
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<tmx version="1.4">
<header creationtool="Zanata TransMemoryExportTMXStrategy" creationtoolversion="unknown" segtype="paragraph"
o-tmf="unknown" adminlang="en" srclang="*all*" datatype="unknown">
<prop name="doc0:resId1:prop1">Header Prop value</prop>
<note xml:lang="en">Header Note value</note>
</header>
<body>
<tu tuid="doc0:resId0" srclang="en">
<prop name="doc0:resId0:prop0">Custom prop0 value</prop>
<note xml:lang="en">Custom note</note>
<tuv xml:lang="en">
<prop name="doc0:resId0:tuv0:prop0">Custom prop0 value on tuv</prop>
<note xml:lang="en">Custom note on tuv</note>
<seg>source0</seg>
</tuv>
<tuv xml:lang="en">
<seg>source0</seg>
</tuv>
<tuv xml:lang="fr">
<seg>targetFR0</seg>
</tuv>
<tuv xml:lang="de">
<seg>targetDE0</seg>
</tuv>
</tu>
<tu tuid="doc0:resId1" srclang="en">
<prop name="doc0:resId1:prop0">Custom prop0 value</prop>
<prop name="doc0:resId1:prop1">Custom prop1 value</prop>
<note xml:lang="en">Custom note1</note>
<note xml:lang="en">Custom note2</note>
<tuv xml:lang="en">
<seg>SOURCE0</seg>
</tuv>
<tuv xml:lang="en">
<seg>SOURCE0</seg>
</tuv>
<tuv xml:lang="fr">
<seg>TARGETfr0</seg>
</tuv>
</tu>
<tu tuid="doc1:resId0" srclang="en">
<tuv xml:lang="en">
<seg>source0</seg>
</tuv>
<tuv xml:lang="en">
<seg>source0</seg>
</tuv>
<tuv xml:lang="fr">
<seg>targetFR0</seg>
</tuv>
</tu>
<tu tuid="doc1:resId1" srclang="en">
<tuv xml:lang="en">
<seg>SOURCE0</seg>
</tuv>
<tuv xml:lang="en">
<seg>SOURCE0</seg>
</tuv>
<tuv xml:lang="de">
<seg>TARGETde0</seg>
</tuv>
</tu>
</body>
</tmx>

0 comments on commit 9e1c842

Please sign in to comment.