def test_feed_writer_prints_nothing_with_an_empty_feed():
    """Empty aggregate feed should print nothing"""
    subject = FeedWriter()
    (feed_writer, aggregate_feed) = (Mock(), Mock())
    subject.stdout = Mock()
    aggregate_feed.expects(once()).is_empty().will(return_value(True))
    subject.print_entry_listings(feed_writer, aggregate_feed)
    aggregate_feed.verify()
    subject.stdout.verify()
def test_create_entry():
    """Create a xkcd_feed item from a xkcd_feed and a xkcd_feed entry"""
    agg_feed = AggregateFeed()
    agg_feed.feed_factory = Mock()
    (aggregate_feed, xkcd_feed, entry, converted) = (Mock(), Mock(), Mock(),
                                                     Mock())
    agg_feed.feed_factory.expects(once()).from_parsed_feed(
        same(xkcd_feed), same(entry)).will(return_value(converted))
    aggregate_feed.expects(once()).add(same(converted))
    agg_feed.create_entry(aggregate_feed, xkcd_feed, entry)
    aggregate_feed.verify()
def test_combine_feeds():
    """Should combine feeds into a list of FeedEntries"""
    subject = AggregateFeed()
    mock_feeds = [Mock(), Mock()]
    aggregate_feed = Mock()
    aggregate_feed.expects(once()).add_single_feed(same(aggregate_feed),
                                                   same(mock_feeds[0]))
    aggregate_feed.expects(once()).add_single_feed(same(aggregate_feed),
                                                   same(mock_feeds[1]))
    subject.combine_feeds(aggregate_feed, mock_feeds)
    aggregate_feed.verify()
def test_add_singled_feed():
    """Should add a single xkcd_feed to a set of feeds"""
    entries = [Mock(), Mock()]
    xkcd_feed = {'entries': entries}
    aggregate_feed = Mock()
    aggregate_feed.expects(once()).create_entry(same(aggregate_feed),
                                                same(xkcd_feed),
                                                same(entries[0]))
    aggregate_feed.expects(once()).create_entry(same(aggregate_feed),
                                                same(xkcd_feed),
                                                same(entries[1]))
    AggregateFeed().add_single_feed(aggregate_feed, xkcd_feed)
    aggregate_feed.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_print_entry_listings():
    """Verify that a listing was printed"""
    subject = FeedWriter()
    (feed_writer, aggregate_feed, listings) = (Mock(), Mock(), Mock())
    subject.stdout = Mock()
    aggregate_feed.expects(once()).is_empty().will(return_value(False))
    feed_writer.expects(once()).entry_listings(same(aggregate_feed)).\
        will(return_value(listings))
    subject.stdout.expects(once()).write(same(listings))
    subject.stdout.expects(once()).write(eq(os.linesep))
    subject.print_entry_listings(feed_writer, aggregate_feed)
    feed_writer.verify()
    subject.stdout.verify()
def test_get_feeds_from_urls():
    """Should get a feed for every URL"""
    urls = [Mock(), Mock()]
    feeds = [Mock(), Mock()]
    subject = AggregateFeed()
    subject.feedparser = Mock()
    subject.feedparser.expects(once()).parse(same(urls[0])).will(
        return_value(feeds[0]))
    subject.feedparser.expects(once()).parse(same(urls[1])).will(
        return_value(feeds[1]))
    returned_feeds = subject.feeds_from_urls(urls)
    assert_equals(feeds, returned_feeds)
    subject.feedparser.verify()
 def __init__(self,
              head_tag_dict={},
              build_tag_dict={},
              mandatory_head_tags=[],
              mandatory_build_tags=[],
              mandatory_has_questions=False):
     self.mock_hooks = Mock()
     mocked_head_tag_dict = {
         ' ': self.mock_hooks.on_default_header,
         'a_header': self.mock_hooks.on_a_header,
         'an_other_header': self.mock_hooks.on_an_other_header
     }
     mocked_build_tag_dict = {
         ' ': self.mock_hooks.on_default_builder,
         'a_builder': self.mock_hooks.on_a_builder,
         'an_other_builder': self.mock_hooks.on_an_other_builder
     }
     mocked_head_tag_dict.update(head_tag_dict)
     mocked_build_tag_dict.update(build_tag_dict)
     super(Mocked_SaDrill,
           self).__init__(mocked_head_tag_dict, mocked_build_tag_dict,
                          mandatory_head_tags, mandatory_build_tags,
                          mandatory_has_questions)
     self.on_comment = self.mock_hooks.on_comment
     self.on_section = self.mock_hooks.on_section
     self.on_question = self.mock_hooks.on_question
Example #9
0
 def setUp(self):
     self.SCORE = {}
     for question in range(10, 30):
         self.SCORE[str(question)] = question / 10.
     self.quiz = self.CLASS_TO_TEST(self.QUIZ_POOL[:], self.SCORE)
     self.mock_listener = Mock()
     self.quiz.connect('break_time', self.mock_listener.break_time)
     self.quiz.connect('question_changed',
                       self.mock_listener.question_changed)
def test_from_urls():
    """Should get feeds from URLs and combine them"""
    urls = [Mock(), Mock()]
    feeds = [Mock(), Mock()]
    subject = AggregateFeed()
    aggregate_feed = Mock()
    subject.feedparser = Mock()
    #
    subject.feedparser.expects(once()).parse(same(urls[0])).will(
        return_value(feeds[0]))
    aggregate_feed.expects(once()).\
        add_single_feed(same(aggregate_feed), same(feeds[0]))
    #
    subject.feedparser.expects(once()).parse(same(urls[1])).will(
        return_value(feeds[1]))
    aggregate_feed.expects(once()).\
        add_single_feed(same(aggregate_feed), same(feeds[1]))
    #
    subject.from_urls(aggregate_feed, urls)
    subject.feedparser.verify()
    aggregate_feed.verify()
Example #11
0
 def setUp(self):
     self.quiz = self.CLASS_TO_TEST(self.QUIZ_POOL[:])
     self.mock_listener = Mock()
     self.quiz.connect('break_time', self.mock_listener.break_time)
     self.quiz.connect('question_changed',
                       self.mock_listener.question_changed)
def test_add():
    """Add a xkcd_feed entry to the aggregate"""
    entry = Mock()
    subject = AggregateFeed()
    subject.add(entry)
    assert_equals(set([entry]), subject.entries)