@@ -57,29 +57,25 @@ def test_validate_peptide_sequence_invalid_amino_acids(self, sequence):
5757 ("PEPTIDE[Amidated]" , "PEPTIDE" ),
5858 ],
5959 )
60+ @patch ("src.peptide_calculator.parse_square_bracket_modifications" )
6061 def test_validate_peptide_sequence_with_modifications (
61- self , sequence , expected_clean
62+ self , mock_parse , sequence , expected_clean
6263 ):
63- with patch (
64- "src.peptide_calculator.parse_square_bracket_modifications"
65- ) as mock_parse :
66- mock_parse .return_value = (expected_clean , f"Modified_{ expected_clean } " )
64+ mock_parse .return_value = (expected_clean , f"Modified_{ expected_clean } " )
6765
68- is_valid , clean_seq = validate_peptide_sequence (sequence )
69- assert is_valid is True
70- assert clean_seq == expected_clean
71- mock_parse .assert_called_once_with (sequence )
66+ is_valid , clean_seq = validate_peptide_sequence (sequence )
67+ assert is_valid is True
68+ assert clean_seq == expected_clean
69+ mock_parse .assert_called_once_with (sequence )
7270
73- def test_validate_peptide_sequence_with_leading_dot (self ):
71+ @patch ("src.peptide_calculator.parse_square_bracket_modifications" )
72+ def test_validate_peptide_sequence_with_leading_dot (self , mock_parse ):
7473 # Test validation with leading dot for N-terminal modifications
75- with patch (
76- "src.peptide_calculator.parse_square_bracket_modifications"
77- ) as mock_parse :
78- mock_parse .return_value = ("PEPTIDE" , ".(Acetyl)PEPTIDE" )
74+ mock_parse .return_value = ("PEPTIDE" , ".(Acetyl)PEPTIDE" )
7975
80- is_valid , clean_seq = validate_peptide_sequence (".[Acetyl]PEPTIDE" )
81- assert is_valid is True
82- assert clean_seq == "PEPTIDE"
76+ is_valid , clean_seq = validate_peptide_sequence (".[Acetyl]PEPTIDE" )
77+ assert is_valid is True
78+ assert clean_seq == "PEPTIDE"
8379
8480 @pytest .mark .parametrize (
8581 "sequence" ,
@@ -95,17 +91,15 @@ def test_validate_peptide_sequence_case_and_characters(self, sequence):
9591 assert isinstance (is_valid , bool )
9692 assert isinstance (clean_seq , str )
9793
98- def test_validate_peptide_sequence_parse_exception (self ):
94+ @patch ("src.peptide_calculator.parse_square_bracket_modifications" )
95+ def test_validate_peptide_sequence_parse_exception (self , mock_parse ):
9996 # Test fallback behavior when parsing fails
100- with patch (
101- "src.peptide_calculator.parse_square_bracket_modifications"
102- ) as mock_parse :
103- mock_parse .side_effect = Exception ("Parse error" )
97+ mock_parse .side_effect = Exception ("Parse error" )
10498
105- # Test with a simple valid sequence to ensure fallback works
106- is_valid , clean_seq = validate_peptide_sequence ("PEPTIDE" )
107- assert isinstance (is_valid , bool )
108- assert isinstance (clean_seq , str )
99+ # Test with a simple valid sequence to ensure fallback works
100+ is_valid , clean_seq = validate_peptide_sequence ("PEPTIDE" )
101+ assert isinstance (is_valid , bool )
102+ assert isinstance (clean_seq , str )
109103
110104 def test_validate_peptide_sequence_fallback_validation (self ):
111105 # Test that fallback validation works correctly without mocking
@@ -123,21 +117,19 @@ def test_validate_peptide_sequence_fallback_validation(self):
123117 ("SEQUENCE3" , "SEQUENCE" , 3 ),
124118 ],
125119 )
120+ @patch ("src.peptide_calculator.parse_sequence_with_mods_and_charge" )
126121 def test_validate_peptide_sequence_with_mods_valid (
127- self , sequence , expected_clean , expected_charge
122+ self , mock_parse , sequence , expected_clean , expected_charge
128123 ):
129- with patch (
130- "src.peptide_calculator.parse_sequence_with_mods_and_charge"
131- ) as mock_parse :
132- mock_parse .return_value = (expected_clean , expected_clean , expected_charge )
124+ mock_parse .return_value = (expected_clean , expected_clean , expected_charge )
133125
134- is_valid , clean_seq , openms_seq , charge = (
135- validate_peptide_sequence_with_mods ( sequence )
136- )
137- assert is_valid is True
138- assert clean_seq == expected_clean
139- assert charge == expected_charge
140- mock_parse .assert_called_once_with (sequence )
126+ is_valid , clean_seq , openms_seq , charge = validate_peptide_sequence_with_mods (
127+ sequence
128+ )
129+ assert is_valid is True
130+ assert clean_seq == expected_clean
131+ assert charge == expected_charge
132+ mock_parse .assert_called_once_with (sequence )
141133
142134 @pytest .mark .parametrize (
143135 "invalid_sequence,expected_clean" ,
@@ -147,33 +139,29 @@ def test_validate_peptide_sequence_with_mods_valid(
147139 ("INVALIDZ123" , "INVALIDZ" ),
148140 ],
149141 )
142+ @patch ("src.peptide_calculator.parse_sequence_with_mods_and_charge" )
150143 def test_validate_peptide_sequence_with_mods_invalid (
151- self , invalid_sequence , expected_clean
144+ self , mock_parse , invalid_sequence , expected_clean
152145 ):
153- with patch (
154- "src.peptide_calculator.parse_sequence_with_mods_and_charge"
155- ) as mock_parse :
156- mock_parse .return_value = (expected_clean , invalid_sequence , 1 )
146+ mock_parse .return_value = (expected_clean , invalid_sequence , 1 )
157147
158- is_valid , clean_seq , openms_seq , charge = (
159- validate_peptide_sequence_with_mods ( invalid_sequence )
160- )
161- # Should detect that the clean sequence contains invalid amino acids
162- assert is_valid is False
148+ is_valid , clean_seq , openms_seq , charge = validate_peptide_sequence_with_mods (
149+ invalid_sequence
150+ )
151+ # Should detect that the clean sequence contains invalid amino acids
152+ assert is_valid is False
163153
164- def test_validate_peptide_sequence_with_mods_exception_handling (self ):
165- with patch (
166- "src.peptide_calculator.parse_sequence_with_mods_and_charge"
167- ) as mock_parse :
168- mock_parse .side_effect = Exception ("Parse error" )
154+ @patch ("src.peptide_calculator.parse_sequence_with_mods_and_charge" )
155+ def test_validate_peptide_sequence_with_mods_exception_handling (self , mock_parse ):
156+ mock_parse .side_effect = Exception ("Parse error" )
169157
170- is_valid , clean_seq , openms_seq , charge = (
171- validate_peptide_sequence_with_mods ( "INVALID" )
172- )
173- assert is_valid is False
174- assert clean_seq == ""
175- assert openms_seq == ""
176- assert charge == 1
158+ is_valid , clean_seq , openms_seq , charge = validate_peptide_sequence_with_mods (
159+ "INVALID"
160+ )
161+ assert is_valid is False
162+ assert clean_seq == ""
163+ assert openms_seq == ""
164+ assert charge == 1
177165
178166 def test_validate_very_long_sequence (self ):
179167 long_sequence = "A" * 1000
@@ -207,27 +195,24 @@ def test_validate_peptide_sequence_unicode_characters(self):
207195 assert isinstance (is_valid , bool )
208196 assert isinstance (clean_seq , str )
209197
210- def test_validate_peptide_sequence_with_complex_modifications (self ):
198+ @patch ("src.peptide_calculator.parse_sequence_with_mods_and_charge" )
199+ def test_validate_peptide_sequence_with_complex_modifications (self , mock_parse ):
211200 # Test validation with complex modification patterns
212201 complex_sequences = [
213202 ".[Acetyl]M[Oxidation]PEPTIDEC[Carbamidomethyl]/2" ,
214203 "EM[+15.9949]EVEES[-79.9663]PEK" ,
215204 "ALSSC[UNIMOD:4]VVDEEQDVER/2" ,
216205 ]
217206
207+ mock_parse .return_value = ("PEPTIDE" , "PEPTIDE" , 2 )
218208 for sequence in complex_sequences :
219- with patch (
220- "src.peptide_calculator.parse_sequence_with_mods_and_charge"
221- ) as mock_parse :
222- mock_parse .return_value = ("PEPTIDE" , "PEPTIDE" , 2 )
223-
224- is_valid , clean_seq , openms_seq , charge = (
225- validate_peptide_sequence_with_mods (sequence )
226- )
227- assert isinstance (is_valid , bool )
228- assert isinstance (clean_seq , str )
229- assert isinstance (openms_seq , str )
230- assert isinstance (charge , int )
209+ is_valid , clean_seq , openms_seq , charge = (
210+ validate_peptide_sequence_with_mods (sequence )
211+ )
212+ assert isinstance (is_valid , bool )
213+ assert isinstance (clean_seq , str )
214+ assert isinstance (openms_seq , str )
215+ assert isinstance (charge , int )
231216
232217 def test_validate_peptide_sequence_error_messages (self ):
233218 # Test that appropriate error context is maintained
0 commit comments