44 lines
1.7 KiB
Python

from typing import AsyncIterable, Iterable
from autobigs.engine.data.local.csv import dict_loci_alleles_variants_from_loci, write_mlst_profiles_as_csv
from autobigs.engine.data.structures.mlst import Allele, MLSTProfile
import tempfile
from csv import reader
from os import path
async def iterable_to_asynciterable(iterable: Iterable):
for iterated in iterable:
yield iterated
def test_dict_loci_alleles_variants_from_loci_single_loci_not_list():
alleles_map = {
"adk": [Allele("adk", "1", None)]
}
results = dict_loci_alleles_variants_from_loci(alleles_map)
for loci, variant in results.items():
assert isinstance(variant, str)
assert variant == "1"
def test_dict_loci_alleles_variants_from_loci_multi_loci_is_list():
alleles_map = {
"adk": [Allele("adk", "1", None), Allele("adk", "2", None)]
}
results = dict_loci_alleles_variants_from_loci(alleles_map)
for loci, variant in results.items():
assert isinstance(variant, list)
assert len(variant) == 2
async def test_column_order_is_same_as_expected_file():
dummy_profiles = [("test_1", MLSTProfile({
"A": Allele("A", "1", None),
"D": Allele("D", "1", None),
"B": Allele("B", "1", None),
"C": Allele("C", "1", None)
}, "mysterious", "very mysterious"))]
with tempfile.TemporaryDirectory() as temp_dir:
output_path = path.join(temp_dir, "out.csv")
await write_mlst_profiles_as_csv(iterable_to_asynciterable(dummy_profiles), output_path)
with open(output_path) as csv_handle:
csv_reader = reader(csv_handle)
lines = list(csv_reader)
target_columns = lines[4:]
assert target_columns == sorted(target_columns)