Files
AvianVisitors/tests/test_server.py
T
2025-11-17 18:44:27 +01:00

41 lines
1.3 KiB
Python

import os
import unittest
from unittest.mock import patch
from scripts.server import run_analysis
from scripts.utils.classes import ParseFileName
from tests.helpers import TESTDATA, Settings
class TestRunAnalysis(unittest.TestCase):
@patch('scripts.utils.helpers._load_settings')
@patch('scripts.server.loadCustomSpeciesList')
def test_run_analysis(self, mock_loadCustomSpeciesList, mock_load_settings):
# Mock the settings and species list
mock_load_settings.return_value = Settings.with_defaults()
mock_loadCustomSpeciesList.return_value = []
# Test file
test_file = ParseFileName(os.path.join(TESTDATA, '2024-02-24-birdnet-16:19:37.wav'))
# Expected results
expected_results = [
{"confidence": 0.912, 'sci_name': 'Pica pica'},
{"confidence": 0.9316, 'sci_name': 'Pica pica'},
{"confidence": 0.8857, 'sci_name': 'Pica pica'}
]
# Run the analysis
detections = run_analysis(test_file)
# Assertions
self.assertEqual(len(detections), len(expected_results))
for det, expected in zip(detections, expected_results):
self.assertAlmostEqual(det.confidence, expected['confidence'], delta=1e-4)
self.assertEqual(det.scientific_name, expected['sci_name'])
if __name__ == '__main__':
unittest.main()