Skip to content

Commit cf39335

Browse files
test: add unit tests for the function translate_ids
1 parent 5cc0467 commit cf39335

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

tests/test_utils.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
_create_reverse_mapping,
66
_read_mapping_file,
77
load_mapping_lut,
8+
translate_ids,
89
)
910

1011

@@ -283,3 +284,66 @@ def test_load_mapping_lut_duplicate_source_ids(duplicate_source_mapping_file):
283284
# The last mapping for 'A1' should be 'T2'
284285
assert databases_names == {'source_A'}
285286
assert reverse_map == {'A1': 'T2'}
287+
288+
289+
# ---- Unit tests for translate_ids
290+
def test_translate_ids_with_valid_lut_and_terms():
291+
"""Test that terms present in the LUT are correctly translated to their target IDs."""
292+
mapping_lut = {'A1': 'T1', 'A2': 'T2', 'B1': 'T1', 'B3': 'T3'}
293+
terms_id = ['A1', 'A2', 'B1', 'B3']
294+
expected = ['T1', 'T2', 'T1', 'T3']
295+
result = translate_ids(mapping_lut, terms_id)
296+
assert result == expected
297+
298+
299+
def test_translate_ids_with_mixed_terms():
300+
"""Test that target IDs remain unchanged and source IDs are translated."""
301+
mapping_lut = {'A1': 'T1', 'A2': 'T2'}
302+
terms_id = ['A1', 'T1', 'A2', 'T2']
303+
expected = ['T1', 'T1', 'T2', 'T2']
304+
result = translate_ids(mapping_lut, terms_id)
305+
assert result == expected
306+
307+
308+
def test_translate_ids_with_untranslatable_terms():
309+
"""Test that untranslatable terms are skipped."""
310+
mapping_lut = {'A1': 'T1', 'A2': 'T2'}
311+
terms_id = ['A1', 'A2', 'X1', 'Y2']
312+
expected = ['T1', 'T2']
313+
result = translate_ids(mapping_lut, terms_id)
314+
assert result == expected
315+
316+
317+
def test_translate_ids_with_none_lut():
318+
"""Test that if LUT is None, input terms are returned unchanged."""
319+
terms_id = ['A1', 'A2', 'T1']
320+
expected = ['A1', 'A2', 'T1']
321+
result = translate_ids(None, terms_id)
322+
assert result == expected
323+
324+
325+
def test_translate_ids_with_empty_lut():
326+
"""Test that only valid target IDs are returned when LUT is empty."""
327+
mapping_lut = {}
328+
terms_id = ['T1', 'A1', 'T2']
329+
expected = ['T1', 'A1', 'T2']
330+
result = translate_ids(mapping_lut, terms_id)
331+
assert result == expected
332+
333+
334+
def test_translate_ids_with_empty_terms():
335+
"""Test that an empty input list returns an empty list."""
336+
mapping_lut = {'A1': 'T1'}
337+
terms_id = []
338+
expected = []
339+
result = translate_ids(mapping_lut, terms_id)
340+
assert result == expected
341+
342+
343+
def test_translate_ids_with_duplicate_terms():
344+
"""Test that duplicate terms are handled correctly and order is preserved."""
345+
mapping_lut = {'A1': 'T1', 'A2': 'T2'}
346+
terms_id = ['A1', 'A1', 'A2', 'A1']
347+
expected = ['T1', 'T1', 'T2', 'T1']
348+
result = translate_ids(mapping_lut, terms_id)
349+
assert result == expected

0 commit comments

Comments
 (0)