def test_feed_from_url():
    url = "http://www.xkcd.com/rss.xml"

    def parse_stub(url):  # define stub
        return xkcd_feed

    real_parse = feedparser.parse  # save real value
    feedparser.parse = parse_stub  # attach stub
    try:
        assert_equals(xkcd_feed, RSReader().feed_from_url(url))
    finally:
        feedparser.parse = real_parse  # restore real value
def test_main():
    """Hook components together"""
    args = ["unused_program_name", "u1"]
    subject = RSReader()
    subject.aggregate_feed = mock()
    subject.feed_writer = mock()
    method(subject.aggregate_feed, 'from_urls').expects(["u1"])
    method(subject.feed_writer, 'print_entry_listings').\
    expects(subject.aggregate_feed)
    replay()
    subject.main(args)
    verify()
def test_main():
    """"Main should create a feed and print results"""
    args = ["unused_program_name", "x1"]
    reader = RSReader()
    reader.aggregate_feed = Mock()
    reader.feed_writer = Mock()
    reader.aggregate_feed.expects(once()).from_urls(
        same(reader.aggregate_feed), eq(["x1"]))
    reader.feed_writer.expects(once()).print_entry_listings(same(reader.feed_writer), \
        same(reader.aggregate_feed))
    reader.main(args)
    reader.aggregate_feed.verify()
    reader.feed_writer.verify()
def test_rsreader_initializes_dependencies():
    """RSReader should initialize dependencies"""
    reader = RSReader()
    assert isinstance(reader.aggregate_feed, AggregateFeed)
    assert isinstance(reader.feed_writer, FeedWriter)
def test_listing_from_item():
    computed_line = RSReader().listing_from_item(xkcd_feed, xkcd_items[0])
    assert_equals(xkcd_listings[0], computed_line)
def test_listing_from_feed():
    computed_items = RSReader().listing_from_feed(xkcd_feed)
    assert_equals(xkcd_output, computed_items)
def test_listing_from_item():
    computed_line = RSReader().listing_from_item(feed, items[0])
    assert_equals(expected_items[0], computed_line)
def test_rsreader_dependency_initialization():
    """Ensure that dependencies are correctly initialized"""
    assert isinstance(RSReader().aggregate_feed, AggregateFeed)
    assert isinstance(RSReader().feed_writer, FeedWriter)