#!/usr/bin/env python3 """ Unit tests for file monitor module. """ import pytest from sftp.file_monitor import FileMonitor class TestFileMonitor: """Test FileMonitor functionality.""" def test_parse_filename_valid(self): """Test parsing valid ACH filename.""" filename = 'ACH_99944_05122025102947_001.txt' result = FileMonitor.parse_filename(filename) assert result['filename'] == 'ACH_99944_05122025102947_001.txt' assert result['branch'] == '99944' assert result['day'] == '05' assert result['month'] == '12' assert result['year'] == '2025' assert result['hour'] == '10' assert result['minute'] == '29' assert result['second'] == '47' assert result['sequence'] == '001' def test_parse_filename_another_date(self): """Test parsing filename with different date.""" filename = 'ACH_12345_19012026103217_002.txt' result = FileMonitor.parse_filename(filename) assert result['branch'] == '12345' assert result['day'] == '19' assert result['month'] == '01' assert result['year'] == '2026' assert result['sequence'] == '002' assert result['timestamp'] == '19/01/2026 10:32:17' def test_parse_filename_invalid(self): """Test parsing invalid filename.""" filename = 'invalid_filename.txt' result = FileMonitor.parse_filename(filename) assert result == {} def test_parse_filename_invalid_extension(self): """Test parsing filename with wrong extension.""" filename = 'ACH_99944_05122025102947_001.csv' result = FileMonitor.parse_filename(filename) assert result == {} def test_parse_filename_missing_parts(self): """Test parsing filename with missing parts.""" filename = 'ACH_99944_05122025_001.txt' # Missing time parts result = FileMonitor.parse_filename(filename) assert result == {} if __name__ == '__main__': pytest.main([__file__, '-v'])