|
| 1 | +import os |
1 | 2 | import unittest |
2 | | -from main import get_file_paths_from_csv_file, get_file_paths_within_folder |
| 3 | +from main import ( |
| 4 | + get_file_paths_from_csv_file, |
| 5 | + get_file_paths_within_folder, |
| 6 | + write_to_csv_file |
| 7 | +) |
3 | 8 | from os import path |
4 | 9 | import tempfile |
| 10 | +import csv |
5 | 11 |
|
6 | 12 |
|
7 | 13 | class TestGetFilePathsFromCsvFile(unittest.TestCase): |
@@ -65,5 +71,50 @@ def test_child_folder(self): |
65 | 71 | self.assertEqual(paths, expectation) |
66 | 72 |
|
67 | 73 |
|
| 74 | +class TestWriteToCsvFile(unittest.TestCase): |
| 75 | + header_row = ["File", "Folder", "Filename", "Suffix (only)"] |
| 76 | + temp_file = None |
| 77 | + |
| 78 | + def setUp(self): |
| 79 | + """Create a temporary file before each test.""" |
| 80 | + self.temp_file = tempfile.NamedTemporaryFile(suffix='.csv', delete=False) |
| 81 | + |
| 82 | + def tearDown(self): |
| 83 | + """Close and delete the temporary file after each test.""" |
| 84 | + self.temp_file.close() |
| 85 | + os.remove(self.temp_file.name) |
| 86 | + |
| 87 | + def test_empty_list(self): |
| 88 | + write_to_csv_file([], self.temp_file.name) |
| 89 | + with open(self.temp_file.name, 'r', encoding='utf8', newline='') as csv_file: |
| 90 | + reader = csv.reader(csv_file) |
| 91 | + rows = list(reader) |
| 92 | + self.assertEqual(rows, [self.header_row]) |
| 93 | + |
| 94 | + def test_nonempty_list(self): |
| 95 | + file_paths = [ |
| 96 | + r"C:/A/B/C", # forward slashes |
| 97 | + r"C:\A\B\C", # no suffix |
| 98 | + r"C:\A\B\C.d", # suffix |
| 99 | + r"C:\A\B\C.d.e", # multiple suffixes |
| 100 | + r"C:\A\B\C d.e", # space in file name |
| 101 | + r"C:\A B\C", # space in folder name |
| 102 | + ] |
| 103 | + expected_rows = [ |
| 104 | + self.header_row, |
| 105 | + [r"C:/A/B/C", r"C:/A/B", r"C", r""], |
| 106 | + [r"C:\A\B\C", r"C:\A\B", r"C", r""], |
| 107 | + [r"C:\A\B\C.d", r"C:\A\B", r"C.d", r".d"], |
| 108 | + [r"C:\A\B\C.d.e", r"C:\A\B", r"C.d.e", r".e"], |
| 109 | + [r"C:\A\B\C d.e", r"C:\A\B", r"C d.e", r".e"], |
| 110 | + [r"C:\A B\C", r"C:\A B", r"C", r""], |
| 111 | + ] |
| 112 | + write_to_csv_file(file_paths, self.temp_file.name) |
| 113 | + with open(self.temp_file.name, 'r', encoding='utf8', newline='') as csv_file: |
| 114 | + reader = csv.reader(csv_file) |
| 115 | + rows = list(reader) |
| 116 | + self.assertEqual(rows, expected_rows) |
| 117 | + |
| 118 | + |
68 | 119 | if __name__ == '__main__': |
69 | 120 | unittest.main() |
0 commit comments