/* ********************************************************************** **
** Copyright notice **
** **
** (c) 2005-2009 RSSOwl Development Team **
** http://www.rssowl.org/ **
** **
** All rights reserved **
** **
** This program and the accompanying materials are made available under **
** the terms of the Eclipse Public License v1.0 which accompanies this **
** distribution, and is available at: **
** http://www.rssowl.org/legal/epl-v10.html **
** **
** A copy is found in the file epl-v10.html and important notices to the **
** license from the team is found in the textfile LICENSE.txt distributed **
** in this package. **
** **
** This copyright notice MUST APPEAR in all copies of the file! **
** **
** Contributors: **
** RSSOwl Development Team - initial API and implementation **
** **
** ********************************************************************** */
package org.rssowl.core.tests.importer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import org.rssowl.core.Owl;
import org.rssowl.core.interpreter.ITypeImporter;
import org.rssowl.core.persist.IBookMark;
import org.rssowl.core.persist.IEntity;
import org.rssowl.core.persist.IFeed;
import org.rssowl.core.persist.IFolder;
import java.io.InputStream;
import java.net.URI;
import java.util.List;
/**
* This TestCase covers use-cases for the Interpreter Plugin in terms of
* Importing Data.
*
* @author bpasero
*/
public class ImporterTest {
/**
* @throws Exception
*/
@Before
public void setUp() throws Exception {
Owl.getPersistenceService().recreateSchema();
}
/**
* Test importing an OPML as new Category with BookMarks.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testImportOPML() throws Exception {
InputStream inS = getClass().getResourceAsStream("/data/interpreter/import_opml.xml");
List<? extends IEntity> types = Owl.getInterpreter().importFrom(inS);
assertEquals(1, types.size());
assertTrue(types.get(0) instanceof IFolder);
/* Root */
IFolder root = (IFolder) types.get(0);
assertEquals(2, root.getFolders().size());
assertEquals(0, root.getMarks().size());
/* Category 1 */
IFolder category1 = root.getFolders().get(0);
assertEquals("category_1", category1.getName());
assertEquals(3, category1.getMarks().size());
/* Category 1 Marks */
IBookMark category1_mark1 = (IBookMark) category1.getMarks().get(0);
assertEquals("category_1_feed_1_title", category1_mark1.getName());
assertEquals("http://www.category_1_feed_1_url.com", category1_mark1.getFeedLinkReference().getLink().toString());
assertEquals("category_1_feed_1_website", category1_mark1.getProperty(ITypeImporter.HOMEPAGE_KEY));
assertEquals("category_1_feed_1_description", category1_mark1.getProperty(ITypeImporter.DESCRIPTION_KEY));
IBookMark category1_mark2 = (IBookMark) category1.getMarks().get(1);
assertEquals("category_1_feed_2_text", category1_mark2.getName());
assertEquals("http://www.category_1_feed_2_url.com", category1_mark2.getFeedLinkReference().getLink().toString());
assertEquals("category_1_feed_2_website", category1_mark2.getProperty(ITypeImporter.HOMEPAGE_KEY));
assertEquals("category_1_feed_2_description", category1_mark2.getProperty(ITypeImporter.DESCRIPTION_KEY));
IBookMark category1_mark3 = (IBookMark) category1.getMarks().get(2);
assertEquals("category_1_feed_3_title", category1_mark3.getName());
/* Category 2 */
IFolder category2 = root.getFolders().get(1);
assertEquals("category_2", category2.getName());
assertEquals(1, category2.getFolders().size());
assertEquals(0, category2.getMarks().size());
/* Sub Category 1 */
IFolder subcategory_1 = category2.getFolders().get(0);
assertEquals("sub_category_1", subcategory_1.getName());
assertEquals(1, subcategory_1.getFolders().size());
assertEquals(2, subcategory_1.getMarks().size());
/* Sub Category 1 Marks */
IBookMark subcategory_1_mark_1 = (IBookMark) subcategory_1.getMarks().get(0);
assertEquals("sub_category_1_feed_1_title", subcategory_1_mark_1.getName());
IBookMark subcategory_1_mark_2 = (IBookMark) subcategory_1.getMarks().get(1);
assertEquals("http://www.sub_category_1_feed_2_url.com", subcategory_1_mark_2.getName());
/* Sub Sub Category 1 */
IFolder sub_subcategory_1 = subcategory_1.getFolders().get(0);
assertEquals("sub_sub_category_1", sub_subcategory_1.getName());
assertEquals(1, sub_subcategory_1.getMarks().size());
IBookMark sub_subcategory_1_mark = (IBookMark) sub_subcategory_1.getMarks().get(0);
assertEquals("sub_sub_category_1_feed_1_title", sub_subcategory_1_mark.getName());
}
/**
* Test importing an OPML as new Category with BookMarks.
*
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testImportMyImport() throws Exception {
InputStream inS = getClass().getResourceAsStream("/data/interpreter/import_myimport.xml");
List<? extends IEntity> types = Owl.getInterpreter().importFrom(inS);
assertEquals(1, types.size());
assertTrue(types.get(0) instanceof IFolder);
/* Root */
IFolder root = (IFolder) types.get(0);
assertEquals(1, root.getFolders().size());
assertEquals(0, root.getMarks().size());
/* Category 1 */
IFolder category1 = root.getFolders().get(0);
assertEquals("category_1", category1.getName());
assertEquals(3, category1.getMarks().size());
/* Category 1 Marks */
IBookMark category1_mark1 = (IBookMark) category1.getMarks().get(0);
assertEquals("category_1_feed_1_title", category1_mark1.getName());
assertNotNull(category1_mark1.getFeedLinkReference().resolve());
IFeed category1_mark1_feed = category1_mark1.getFeedLinkReference().resolve();
assertEquals(new URI("http://www.category_1_feed_1_url.com").toString(), category1_mark1_feed.getLink().toString());
assertEquals(new URI("category_1_feed_1_website"), category1_mark1_feed.getHomepage());
assertEquals("category_1_feed_1_description", category1_mark1_feed.getDescription());
IBookMark category1_mark2 = (IBookMark) category1.getMarks().get(1);
assertEquals("category_1_feed_2_text", category1_mark2.getName());
assertNotNull(category1_mark2.getFeedLinkReference().resolve());
IFeed category1_mark2_feed = category1_mark2.getFeedLinkReference().resolve();
assertEquals(new URI("http://www.category_1_feed_2_url.com").toString(), category1_mark2_feed.getLink().toString());
assertEquals(new URI("category_1_feed_2_website"), category1_mark2_feed.getHomepage());
assertEquals("category_1_feed_2_description", category1_mark2_feed.getDescription());
IBookMark category1_mark3 = (IBookMark) category1.getMarks().get(2);
assertEquals("category_1_feed_3_title", category1_mark3.getName());
assertNotNull(category1_mark3.getFeedLinkReference().resolve());
IFeed category1_mark3_feed = category1_mark3.getFeedLinkReference().resolve();
assertEquals(new URI("http://www.category_1_feed_3_url.com").toString(), category1_mark3_feed.getLink().toString());
}
}