Package org.jboss.seam.wiki.test.connector

Source Code of org.jboss.seam.wiki.test.connector.FeedConnectorTest

/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.test.connector;

import org.dbunit.operation.DatabaseOperation;
import org.jboss.seam.wiki.connectors.feed.FeedAggregatorDAO;
import org.jboss.seam.wiki.connectors.feed.FeedEntryDTO;
import org.jboss.seam.wiki.connectors.feed.FeedConnector;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.jboss.seam.wiki.core.model.FeedEntry;
import org.jboss.seam.wiki.core.model.Feed;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.ScopeType;
import org.testng.annotations.Test;

import java.util.List;
import java.util.ArrayList;
import java.util.Date;
import java.net.URL;

/**
* @author Christian Bauer
*/
public class FeedConnectorTest extends DBUnitSeamTest {

    protected void prepareDBUnitOperations() {
        beforeTestOperations.add(
            new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
        );
    }

    @Test
    public void getFeedDTOs() throws Exception {

        new NonFacesRequest() {
            protected void renderResponse() throws Exception {
                FeedAggregatorDAO dao = (FeedAggregatorDAO)getInstance(FeedAggregatorDAO.class);

                URL[] feedURLs = {
                    new URL("http://foo"), new URL("http://bar")
                };

                List<FeedEntryDTO> dtos = dao.getLatestFeedEntries(30, feedURLs);
                assert dtos.size() == 0; // Asynchronous cache needs to do its job first

                Thread.sleep(4000);

                dtos = dao.getLatestFeedEntries(30, feedURLs);
                assert dtos.size() == 3;

            }
        }.run();
    }

    @Name("feedConnector")
    @Scope(ScopeType.APPLICATION)
    @Install(precedence = Install.MOCK)
    @AutoCreate
    public static class MockFeedConnector implements FeedConnector {
        public List<FeedEntryDTO> getFeedEntries(String feedURL) {

            try {
                Thread.sleep(3000); // Wait 3 seconds...
            } catch (InterruptedException e) {}

            List<FeedEntryDTO> entries = new ArrayList<FeedEntryDTO>();

            if (feedURL.equals("http://foo")) {

                FeedEntry feOne = new FeedEntry();
                feOne.setTitle("One");
                feOne.setPublishedDate(new Date());

                FeedEntry feTwo = new FeedEntry();
                feTwo.setTitle("Two");
                feTwo.setPublishedDate(new Date());

                Feed feed = new Feed();
                feed.setTitle("Foo");
                feed.getFeedEntries().add(feOne);
                feed.getFeedEntries().add(feTwo);

                entries.add(new FeedEntryDTO(feed, feOne));
                entries.add(new FeedEntryDTO(feed, feTwo));

            } else if (feedURL.equals("http://bar")) {

                FeedEntry feOne = new FeedEntry();
                feOne.setTitle("One");
                feOne.setPublishedDate(new Date());

                Feed feed = new Feed();
                feed.setTitle("Bar");
                feed.getFeedEntries().add(feOne);

                entries.add(new FeedEntryDTO(feed, feOne));
            }

            return entries;

        }
    }

}
TOP

Related Classes of org.jboss.seam.wiki.test.connector.FeedConnectorTest

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.