stvnksslr/dataslate-parser

View on GitHub
src/parsers/killteam/killteam_test.py

Summary

Maintainability
D
2 days
Test Coverage
A
100%
from os import listdir
from pathlib import Path

from src.utils.test_utils import fetch_and_parse_roster

base_path = Path.cwd() / "test_rosters" / "kill_team"
gametype = "killteam"


def test__killteam_loop_through_test_folder_and_parse():
    """method: fetch_and_parse_roster(killteam)
    prerequisite: given a unzipped roster file it will parse without errors
    expected: successfully parses all roster files in the test folder.
    """
    parsed_rosters = []
    list_of_rosters = [file for file in listdir(base_path) if Path.is_file(base_path / file)]

    for roster in list_of_rosters:
        parsed_roster = fetch_and_parse_roster(roster_file=base_path / roster)
        parsed_rosters.append(parsed_roster)

    assert parsed_rosters


def test__killteam_parse_chaos_killteam():
    chaos_killteam_path = base_path / "chaos_killteam.ros"
    parsed_roster = fetch_and_parse_roster(roster_file=chaos_killteam_path)

    assert parsed_roster
    assert len(parsed_roster) == 11
    assert parsed_roster[0].name == "Aspiring Champion"
    assert len(parsed_roster[0].wargear) == 3


def test__killteam_parse_vet_guardsman_killteam():
    vet_guardsmen_path = base_path / "vet_guard.ros"
    parsed_roster = fetch_and_parse_roster(roster_file=vet_guardsmen_path)

    assert parsed_roster
    assert len(parsed_roster) == 10
    assert parsed_roster[0].name == "Gunner Veteran"
    assert len(parsed_roster[0].wargear) == 3


def test__killteam_tsons():
    t_sons_path = base_path / "t_sons.ros"
    parsed_roster = fetch_and_parse_roster(roster_file=t_sons_path)
    assert bool(parsed_roster)
    assert parsed_roster[0].name == "Aspiring Sorcerer"


def test__killteam_brood_coven():
    brood_coven_path = base_path / "brood_coven_kt.ros"
    parsed_roster = fetch_and_parse_roster(roster_file=brood_coven_path)
    assert bool(parsed_roster)
    assert parsed_roster[0].name == "Acolyte Hybrid (Leader)"


def test__killteam_cadre_mercenary():
    cadre_mercenary_kt = base_path / "cadre_mercenary_kt.ros"
    parsed_roster = fetch_and_parse_roster(roster_file=cadre_mercenary_kt)
    assert bool(parsed_roster)
    assert parsed_roster[0].name == "Kroot Carnivore (Warrior)"


def test__killteam_sm_reiver():
    sm_reiver_kt = base_path / "sm_reiver_kt.ros"
    parsed_roster = fetch_and_parse_roster(roster_file=sm_reiver_kt)
    assert bool(parsed_roster)
    assert parsed_roster[0].name == "Reiver Sergeant"