package ecologylab.bigsemantics.metametadata; import static org.junit.Assert.assertEquals; import org.junit.Test; import ecologylab.bigsemantics.BaseMmdTest; import ecologylab.serialization.SIMPLTranslationException; /** * Regression tests for inheritance issues. * * @author quyin */ public class TestInheritanceIssues extends BaseMmdTest { @Test public void testTitleLabelIssue() throws SIMPLTranslationException { MetaMetadataRepository repo = loadRepository("/testInheritanceIssue1.xml"); InheritanceHandler handler = new InheritanceHandler(); handler.handleMmdRepository(repo); MetaMetadata mmd = repo.getMMByName("document"); serializeToTempFile(mmd, "1"); MetaMetadataField titleField = getNestedField(mmd, "title"); assertEquals("title", titleField.getLabel()); } @Test public void testScalarCollectionIssue() throws SIMPLTranslationException { MetaMetadataRepository repo = loadRepository("/testInheritanceIssue2.xml"); InheritanceHandler handler = new InheritanceHandler(); handler.handleMmdRepository(repo); MetaMetadataField field = null; // creative_work related: field = getNestedField(repo, "creative_work", "authors"); assertEquals(1, field.getXpaths().size()); assertEquals("//meta[@name='author']/@content", field.getXpath(0)); field = getNestedField(repo, "creative_work", "keywords"); assertEquals(1, field.getXpaths().size()); assertEquals("//meta[@name='keyword']/@content", field.getXpath(0)); // book immediate kids: field = getNestedField(repo, "book", "authors"); System.out.println(field.getXpaths()); assertEquals(2, field.getXpaths().size()); assertEquals("//div[@class='author']/a", field.getXpath(0)); assertEquals("//meta[@name='author']/@content", field.getXpath(1)); field = getNestedField(repo, "book", "keywords"); assertEquals(1, field.getXpaths().size()); assertEquals("//meta[@name='keyword']/@content", field.getXpath(0)); field = getNestedField(repo, "book", "tags"); assertEquals(1, field.getXpaths().size()); assertEquals("//div[@class='tag']/a", field.getXpath(0)); // book.related_book kids: field = getNestedField(repo, "book", "related_books", "authors"); assertEquals(3, field.getXpaths().size()); assertEquals("//div[@id='related']//div[@class='author']/a", field.getXpath(0)); assertEquals("//div[@class='author']/a", field.getXpath(1)); assertEquals("//meta[@name='author']/@content", field.getXpath(2)); field = getNestedField(repo, "book", "related_books", "keywords"); assertEquals(2, field.getXpaths().size()); assertEquals("//div[@id='related']//div[@class='keyword']/a", field.getXpath(0)); assertEquals("//meta[@name='keyword']/@content", field.getXpath(1)); field = getNestedField(repo, "book", "related_books", "tags"); assertEquals(1, field.getXpaths().size()); assertEquals("//div[@class='tag']/a", field.getXpath(0)); } @Test public void testInheritingFromBothTypeAndSuperFieldIssue() throws SIMPLTranslationException { MetaMetadataRepository repo = loadRepository("/testInheritanceIssue3.xml"); InheritanceHandler handler = new InheritanceHandler(); handler.handleMmdRepository(repo); MetaMetadataField field = null; field = getNestedField(repo, "document", "location"); assertEquals(0, field.getXpathsSize()); field = getNestedField(repo, "compound_document", "location"); assertEquals(0, field.getXpathsSize()); field = getNestedField(repo, "compound_document", "main_images", "location"); assertEquals(1, field.getXpathsSize()); assertEquals("//meta[@name='image']/@content", field.getXpath(0)); field = getNestedField(repo, "commodity", "location"); assertEquals(0, field.getXpathsSize()); field = getNestedField(repo, "commodity", "main_images", "location"); assertEquals(1, field.getXpathsSize()); assertEquals("//meta[@name='image']/@content", field.getXpath(0)); field = getNestedField(repo, "ikea_product", "location"); assertEquals(1, field.getXpathsSize()); assertEquals("//test-location", field.getXpath(0)); field = getNestedField(repo, "ikea_product", "main_images", "location"); assertEquals(1, field.getXpathsSize()); assertEquals("//meta[@name='image']/@content", field.getXpath(0)); field = getNestedField(repo, "ikea_product", "depts", "products", "location"); assertEquals(2, field.getXpathsSize()); assertEquals("./@href", field.getXpath(0)); assertEquals("//test-location", field.getXpath(1)); field = getNestedField(repo, "ikea_product", "depts", "products", "main_images", "location"); assertEquals(2, field.getXpathsSize()); assertEquals("./img/@src", field.getXpath(0)); assertEquals("//meta[@name='image']/@content", field.getXpath(1)); } @Test public void testInheritingFromUnprocessedSuperField() throws SIMPLTranslationException { MetaMetadataRepository repo = loadRepository("/testInheritanceIssue4.xml"); InheritanceHandler handler = new InheritanceHandler(); handler.handleMmdRepository(repo); // expect it does not throw an exception. } }