diff --git a/src/documents/tests/test_consumer.py b/src/documents/tests/test_consumer.py index 0e4c9d368..37d765ac7 100644 --- a/src/documents/tests/test_consumer.py +++ b/src/documents/tests/test_consumer.py @@ -91,3 +91,63 @@ class TestAttachment(TestCase): "Τιτλε", self.TAGS ) + + +class Permutations(TestCase): + valid_correspondents = ['timmy', 'Dr. McWheelie', + 'Dash Gor-don', 'ο Θερμαστής'] + valid_titles = ['title', 'Title w Spaces', 'Title a-dash', 'Τίτλος', ''] + valid_tags = ['tag', 'tig,tag', '-', '0,1,2', ''] + valid_suffixes = ['pdf', 'png', 'jpg', 'jpeg', 'gif'] + + def _test_guessed_attributes( + self, filename, title, suffix, correspondent=None, tags=None): + file_info = FileInfo.from_path(filename) + + # Required + self.assertEqual(file_info.title, title, filename) + if suffix == 'jpeg': + suffix = 'jpg' + self.assertEqual(file_info.suffix, suffix, filename) + # Optional + if correspondent is None: + self.assertEqual(file_info.correspondent, + correspondent, filename) + else: + self.assertEqual(file_info.correspondent.name, + correspondent, filename) + if tags is None: + self.assertEqual(file_info.tags, (), filename) + else: + self.assertEqual([t.slug for t in file_info.tags], + tags.split(','), + filename) + + def test_just_title(self): + template = '/path/to/{title}.{suffix}' + for title in self.valid_titles: + for suffix in self.valid_suffixes: + spec = dict(title=title, suffix=suffix) + filename = template.format(**spec) + self._test_guessed_attributes(filename, **spec) + + def test_title_and_correspondent(self): + template = '/path/to/{correspondent} - {title}.{suffix}' + for correspondent in self.valid_correspondents: + for title in self.valid_titles: + for suffix in self.valid_suffixes: + spec = dict(correspondent=correspondent, title=title, + suffix=suffix) + filename = template.format(**spec) + self._test_guessed_attributes(filename, **spec) + + def test_title_and_correspondent_and_tags(self): + template = '/path/to/{correspondent} - {title} - {tags}.{suffix}' + for correspondent in self.valid_correspondents: + for title in self.valid_titles: + for tags in self.valid_tags: + for suffix in self.valid_suffixes: + spec = dict(correspondent=correspondent, title=title, + tags=tags, suffix=suffix) + filename = template.format(**spec) + self._test_guessed_attributes(filename, **spec)