import pytest from werkzeug.datastructures import ImmutableMultiDict from atst.forms.financial import FinancialForm, ExtendedFinancialForm from atst.eda_client import MockEDAClient # @pytest.mark.parametrize( # "input_,expected", # [ # ("0603502N", None), # ("0603502NZ", None), # ("603502N", "0603502N"), # ("063502N", "0603502N"), # ("63502N", "0603502N"), # ], # ) # def test_suggest_pe_id(input_, expected): # assert suggest_pe_id(input_) == expected def test_funding_type_other_not_required_if_funding_type_is_not_other(): form_data = {"funding_type": "PROC"} form = ExtendedFinancialForm(data=form_data) form.validate() assert "funding_type_other" not in form.errors def test_funding_type_other_required_if_funding_type_is_other(): form_data = {"funding_type": "OTHER"} form = ExtendedFinancialForm(data=form_data) form.validate() assert "funding_type_other" in form.errors @pytest.mark.parametrize( "input_,expected", [ ("1234", True), ("123456", True), ("0001234", True), ("000123456", True), ("12345", False), ("00012345", False), ("0001234567", False), ("000000", False), ], ) def test_treasury_code_validation(input_, expected): form_data = ImmutableMultiDict([("treasury_code", input_)]) form = FinancialForm(form_data) form.validate() is_valid = "treasury_code" not in form.errors assert is_valid == expected @pytest.mark.parametrize( "input_,expected", [ ("1", False), ("12", True), ("01", True), ("0A", False), ("A", False), ("AB", False), ("123", True), ("012", True), ("12A", True), ("02A", True), ("0012", False), ("012A", False), ("2AB", False), ], ) def test_ba_code_validation(input_, expected): form_data = ImmutableMultiDict([("ba_code", input_)]) form = FinancialForm(form_data) form.validate() is_valid = "ba_code" not in form.errors assert is_valid == expected def test_can_submit_zero_for_clin(): form_first = ExtendedFinancialForm() form_first.validate() assert "clin_0001" in form_first.errors form_data = ImmutableMultiDict([("clin_0001", "0")]) form_second = ExtendedFinancialForm(form_data) form_second.validate() assert "clin_0001" not in form_second.errors