示例#1
0
class GeneralTests(unittest.TestCase):
    """Tests for reading and associating input files"""
    def setUp(self):
        self.fixture_dir = join(dirname(abspath(__file__)), 'fixtures',
                                'general')
        self.settings = dict(project_dir=self.fixture_dir,
                             input_dir=self.fixture_dir,
                             output_dir=self.fixture_dir,
                             date_format='%Y-%m-%d')
        self.site = Site(self.settings)
        self.site._parse(self.site._read_input())

    def test_filter_public(self):
        """
        Test that non-public articles are filtered out.
        """
        self.assertEqual(len(self.site.articles), 2)
        public_articles = filter(self.site._is_public, self.site.articles)
        self.assertEqual(len(public_articles), 1)

    def test_sort(self):
        """
        Test that articles are sorted by date.
        """
        self.site._sort_articles()
        self.assertEquals(self.site.articles[0].headers['date'],
                          datetime(2009, 2, 2, 0, 0))
        self.assertEquals(self.site.articles[1].headers['date'],
                          datetime(2009, 1, 1, 0, 0))
示例#2
0
class GeneralTests(unittest.TestCase):
    """Tests for reading and associating input files"""

    def setUp(self):
        self.fixture_dir = join(
            dirname(abspath(__file__)), 'fixtures', 'general')
        self.settings = dict(project_dir=self.fixture_dir,
                             input_dir=self.fixture_dir,
                             output_dir=self.fixture_dir,
                             date_format='%Y-%m-%d')
        self.site = Site(self.settings)
        self.site._parse(self.site._read_input())

    def test_filter_public(self):
        """
        Test that non-public articles are filtered out.
        """
        self.assertEqual(len(self.site.articles), 2)
        public_articles = filter(self.site._is_public, self.site.articles)
        self.assertEqual(len(public_articles), 1)

    def test_sort(self):
        """
        Test that articles are sorted by date.
        """
        self.site._sort_articles()
        self.assertEquals(self.site.articles[0].headers['date'],
                          datetime(2009, 2, 2, 0, 0))
        self.assertEquals(self.site.articles[1].headers['date'],
                          datetime(2009, 1, 1, 0, 0))
示例#3
0
class ParseTests(unittest.TestCase):

    def setUp(self):
        project_dir = join(dirname(abspath(__file__)),
                           'fixtures', 'parse')
        self.settings = dict(project_dir=project_dir,
                             input_dir=join(project_dir, 'input'),
                             output_dir=join(project_dir, 'output'),
                             date_format='%Y-%m-%d')
        self.site = Site(self.settings)
        input_data = self.site._read_input()
        self.site._parse(input_data)

    def test_parse_drafts(self):
        """
        Articles with the draft status shouldn't be processed.
        """
        for article in self.site.articles:
            self.assertNotEqual(article.headers['status'], 'draft')

    def test_parse_future_dated(self):
        """
        Articles with a date in the future shouldn't be processed.
        """
        for article in self.site.articles:
            self.assert_(article.headers['date'] <= datetime.today())

    def test_parse_media_association(self):
        """
        Test that media is correctly associated to articles.

        This means that media in the input directory should not be
        associated to any articles.
        Media that is in the same directory as an article or has a parent
        directory with an article in it, should be associated.
        """
        self.assertEqual(self.site.media,
                         [join(self.settings['input_dir'], 'mediafile')])
        for article in self.site.articles:
            if article.headers['url'] == 'foo/bar.html':
                expected_media = [join(self.settings['input_dir'],
                                  'foo', 'mediafile')]
            else:
                expected_media = []
            self.assertEqual(article.media, expected_media)
示例#4
0
class ParseTests(unittest.TestCase):
    def setUp(self):
        project_dir = join(dirname(abspath(__file__)), 'fixtures', 'parse')
        self.settings = dict(project_dir=project_dir,
                             input_dir=join(project_dir, 'input'),
                             output_dir=join(project_dir, 'output'),
                             date_format='%Y-%m-%d')
        self.site = Site(self.settings)
        input_data = self.site._read_input()
        self.site._parse(input_data)

    def test_parse_drafts(self):
        """
        Articles with the draft status shouldn't be processed.
        """
        for article in self.site.articles:
            self.assertNotEqual(article.headers['status'], 'draft')

    def test_parse_future_dated(self):
        """
        Articles with a date in the future shouldn't be processed.
        """
        for article in self.site.articles:
            self.assert_(article.headers['date'] <= datetime.today())

    def test_parse_media_association(self):
        """
        Test that media is correctly associated to articles.

        This means that media in the input directory should not be
        associated to any articles.
        Media that is in the same directory as an article or has a parent
        directory with an article in it, should be associated.
        """
        self.assertEqual(self.site.media,
                         [join(self.settings['input_dir'], 'mediafile')])
        for article in self.site.articles:
            if article.headers['url'] == 'foo/bar.html':
                expected_media = [
                    join(self.settings['input_dir'], 'foo', 'mediafile')
                ]
            else:
                expected_media = []
            self.assertEqual(article.media, expected_media)