Package net.sourceforge.pebble.web.view.impl

Source Code of net.sourceforge.pebble.web.view.impl.FeedViewTest

/*
* Copyright (c) 2003-2011, Simon Brown
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in
*     the documentation and/or other materials provided with the
*     distribution.
*
*   - Neither the name of Pebble nor the names of its contributors may
*     be used to endorse or promote products derived from this software
*     without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

package net.sourceforge.pebble.web.view.impl;

import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import net.sourceforge.pebble.Constants;
import net.sourceforge.pebble.domain.BlogEntry;
import net.sourceforge.pebble.domain.Category;
import net.sourceforge.pebble.domain.SingleBlogTestCase;
import net.sourceforge.pebble.mock.MockHttpServletRequest;
import net.sourceforge.pebble.mock.MockHttpServletResponse;
import net.sourceforge.pebble.web.model.Model;

import java.io.PrintWriter;
import java.util.Collections;
import java.util.Date;

/**
* @author James Roper
*/
public class FeedViewTest extends SingleBlogTestCase {

  public void testGetFeed() throws Exception {
    FeedView feedView = new FeedView(AbstractRomeFeedView.FeedType.ATOM);
    Model model = new Model();
    feedView.setModel(model);

    BlogEntry entry = new BlogEntry(blog);
    entry.setTitle("My Title");
    entry.setAuthor("author");
    entry.setBody("body");
    entry.setDate(new Date(1000));

    Category category = new Category("categoryId", "category");
    category.setBlog(blog);
    entry.setCategories(Collections.singleton(category));

    model.put(Constants.BLOG_KEY, blog);
    model.put(Constants.BLOG_ENTRIES, Collections.singleton(entry));

    SyndFeed feed = feedView.getFeed();
    MockHttpServletResponse response = new MockHttpServletResponse();
    response.setWriter(new PrintWriter(System.out));
    feedView.dispatch(new MockHttpServletRequest(), response, null);
    assertEquals("tag:www.yourdomain.com,0000-00-00:default", feed.getUri());
    assertEquals("My blog", feed.getTitle());
    assertEquals(1, feed.getEntries().size());
    SyndEntry feedEntry = (SyndEntry) feed.getEntries().get(0);
    assertEquals("tag:www.yourdomain.com,1970-01-01:default/1000", feedEntry.getUri());
    assertEquals(new Date(1000), feedEntry.getPublishedDate());
    assertEquals("body", ((SyndContent)feedEntry.getContents().get(0)).getValue());
    assertEquals("My Title", feedEntry.getTitle());
    assertEquals(entry.getPermalink(), feedEntry.getLink());
    assertEquals(1, feedEntry.getCategories().size());
    SyndCategory syndCategory = (SyndCategory) feedEntry.getCategories().get(0);
    assertEquals("category", syndCategory.getName());
    assertEquals(category.getPermalink(), syndCategory.getTaxonomyUri());
  }
}
TOP

Related Classes of net.sourceforge.pebble.web.view.impl.FeedViewTest

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.