aboutsummaryrefslogtreecommitdiff
path: root/tests/test_converter.py
blob: 9c03e300b83902a3eba9c3f885f26c7b76273187 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""Tests for the audiobook converter orchestration helpers."""

import unittest

from converter.converter import AudiobookConverter


class SanitizeFilenameTests(unittest.TestCase):
    def test_removes_invalid_characters(self):
        self.assertEqual(AudiobookConverter._sanitize_filename('A "bad" name: here'),
                         "A bad name here")

    def test_collapses_whitespace(self):
        self.assertEqual(AudiobookConverter._sanitize_filename("  spaced\tout  "), "spaced out")

    def test_empty_falls_back(self):
        self.assertEqual(AudiobookConverter._sanitize_filename("///"), "chapter")


class ConfigurationValidationTests(unittest.TestCase):
    def test_invalid_voice_mode_rejected(self):
        with self.assertRaises(ValueError):
            AudiobookConverter(voice_mode="custon_voice")

    def test_nonpositive_speed_rejected(self):
        with self.assertRaises(ValueError):
            AudiobookConverter(speed=0)

    def test_unknown_format_rejected(self):
        with self.assertRaises(ValueError):
            AudiobookConverter(output_format="ogg")


if __name__ == "__main__":
    unittest.main()