|
6 | 6 |
|
7 | 7 |
|
8 | 8 | class TestExtractedDataValidator(unittest.TestCase): |
9 | | - |
10 | 9 | def setUp(self): |
11 | | - self.valid_dir = tempfile.mkdtemp() |
12 | | - self.invalid_empty_dir = tempfile.mkdtemp() |
13 | | - self.invalid_missing_files_dir = tempfile.mkdtemp() |
14 | | - self.invalid_missing_required_files_dir = tempfile.mkdtemp() |
| 10 | + # Create a temporary directory for testing |
| 11 | + self.test_dir = tempfile.mkdtemp() |
15 | 12 |
|
16 | 13 | def tearDown(self): |
17 | | - shutil.rmtree(self.valid_dir) |
18 | | - shutil.rmtree(self.invalid_empty_dir) |
19 | | - shutil.rmtree(self.invalid_missing_files_dir) |
20 | | - shutil.rmtree(self.invalid_missing_required_files_dir) |
| 14 | + # Remove the temporary directory and its contents |
| 15 | + shutil.rmtree(self.test_dir) |
21 | 16 |
|
22 | | - def create_valid_directory_structure(self): |
23 | | - # Create a valid directory structure with 3 geojson files |
24 | | - valid_files = ['edges.geojson', 'nodes.geojson', 'points.geojson'] |
25 | | - for file in valid_files: |
26 | | - open(os.path.join(self.valid_dir, file), 'w').close() |
| 17 | + def create_files(self, files): |
| 18 | + for file in files: |
| 19 | + with open(os.path.join(self.test_dir, file), 'w') as f: |
| 20 | + f.write('Test content') |
27 | 21 |
|
28 | | - def create_invalid_empty_directory(self): |
29 | | - # Create an empty directory |
30 | | - pass |
| 22 | + def test_valid_data_at_root(self): |
| 23 | + # Test when required files are at the root level |
| 24 | + validator = ExtractedDataValidator(self.test_dir) |
| 25 | + self.create_files(['a.nodes.geojson', 'a.edges.geojson', 'a.points.geojson']) |
| 26 | + self.assertTrue(validator.is_valid()) |
31 | 27 |
|
32 | | - def create_invalid_missing_files_directory(self): |
33 | | - # Create a directory with only one geojson file |
34 | | - open(os.path.join(self.invalid_missing_files_dir, 'edges.geojson'), 'w').close() |
| 28 | + def test_valid_data_inside_folder(self): |
| 29 | + # Test when required files are inside a folder |
| 30 | + validator = ExtractedDataValidator(self.test_dir) |
| 31 | + os.makedirs(os.path.join(self.test_dir, 'abc')) |
| 32 | + self.create_files(['abc/a.nodes.geojson', 'abc/a.edges.geojson', 'abc/a.points.geojson']) |
| 33 | + self.assertTrue(validator.is_valid()) |
35 | 34 |
|
36 | | - def create_invalid_missing_required_files_directory(self): |
37 | | - # Create a directory with three geojson files, but not all required ones |
38 | | - invalid_files = ['edges.geojson', 'invalid.geojson', 'nodes.geojson'] |
39 | | - for file in invalid_files: |
40 | | - open(os.path.join(self.invalid_missing_required_files_dir, file), 'w').close() |
| 35 | + def test_missing_required_files(self): |
| 36 | + # Test when one of the required files is missing |
| 37 | + validator = ExtractedDataValidator(self.test_dir) |
| 38 | + self.create_files(['a.nodes.geojson', 'a.points.geojson']) |
| 39 | + self.assertFalse(validator.is_valid()) |
| 40 | + self.assertEqual(validator.error, 'Missing required .geojson files: edges.') |
41 | 41 |
|
42 | | - def test_valid_directory_structure(self): |
43 | | - self.create_valid_directory_structure() |
44 | | - validator = ExtractedDataValidator(self.valid_dir) |
| 42 | + def test_missing_optional_file(self): |
| 43 | + # Test when optional file is missing |
| 44 | + validator = ExtractedDataValidator(self.test_dir) |
| 45 | + self.create_files(['a.nodes.geojson', 'a.edges.geojson']) |
45 | 46 | self.assertTrue(validator.is_valid()) |
46 | | - self.assertEqual(len(validator.files), 3) |
47 | 47 |
|
48 | | - def test_invalid_empty_directory(self): |
49 | | - self.create_invalid_empty_directory() |
50 | | - validator = ExtractedDataValidator(self.invalid_empty_dir) |
| 48 | + def test_no_geojson_files(self): |
| 49 | + # Test when no .geojson files are present |
| 50 | + validator = ExtractedDataValidator(self.test_dir) |
| 51 | + self.create_files(['some.txt', 'another.txt']) |
51 | 52 | self.assertFalse(validator.is_valid()) |
52 | | - self.assertEqual(validator.error, 'Folder is empty or does not exist.') |
| 53 | + self.assertEqual(validator.error, 'No .geojson files found in the specified directory or its subdirectories.') |
53 | 54 |
|
54 | | - def test_invalid_missing_files_directory(self): |
55 | | - self.create_invalid_missing_files_directory() |
56 | | - validator = ExtractedDataValidator(self.invalid_missing_files_dir) |
| 55 | + def test_invalid_directory(self): |
| 56 | + # Test when the specified directory does not exist |
| 57 | + validator = ExtractedDataValidator('nonexistent_directory') |
57 | 58 | self.assertFalse(validator.is_valid()) |
58 | | - self.assertEqual(validator.error, 'There are not enough .geojson files in the folder.') |
| 59 | + self.assertEqual(validator.error, 'Directory does not exist.') |
59 | 60 |
|
60 | | - def test_invalid_missing_required_files_directory(self): |
61 | | - self.create_invalid_missing_required_files_directory() |
62 | | - validator = ExtractedDataValidator(self.invalid_missing_required_files_dir) |
| 61 | + def test_empty_directory(self): |
| 62 | + # Test when the specified directory is empty |
| 63 | + validator = ExtractedDataValidator(self.test_dir) |
63 | 64 | self.assertFalse(validator.is_valid()) |
64 | | - self.assertEqual(validator.error, 'Missing one or more required .geojson files.') |
| 65 | + self.assertEqual(validator.error, 'No .geojson files found in the specified directory or its subdirectories.') |
65 | 66 |
|
66 | 67 |
|
67 | 68 | if __name__ == '__main__': |
|
0 commit comments