diff --git a/requirements.txt b/requirements.txt index f96da76..1fdf70c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,4 +17,6 @@ urllib3==2.4.0 pydantic==2.11.3 langchain==0.3.23 langchain-groq==0.3.2 -email-validator==2.2.0 \ No newline at end of file +email-validator==2.2.0 +pydantic-extra-types==2.10.3 +phonenumbers==9.0.3 \ No newline at end of file diff --git a/tests/test_validation.py b/tests/test_validation.py index 48407fe..6aa071e 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -2,11 +2,22 @@ from datetime import date from pydantic import ValidationError import pytest -from tests.dummy import dummy_passport +from tests.dummy import dummy_account, dummy_passport from validation.from_passport import FromPassport def test_check_expiry_date_after_issue_date() -> None: dummy = dummy_passport() with pytest.raises(ValidationError): - dummy.expiry_date = date(1900, 1, 1) \ No newline at end of file + dummy.expiry_date = date(1900, 1, 1) + +def test_invalid_email() -> None: + dummy = dummy_account() + with pytest.raises(ValidationError): + dummy.email = "this is not a valid email account" + +def test_invalid_phone_number() -> None: + dummy = dummy_account() + with pytest.raises(ValidationError): + dummy.phone_number = "This should be invalid" + dummy.phone_number = "+41 32 333 33 33" \ No newline at end of file diff --git a/validation/from_account.py b/validation/from_account.py index 5e91d4d..2f0a6bd 100644 --- a/validation/from_account.py +++ b/validation/from_account.py @@ -1,6 +1,6 @@ from typing import Literal, Optional, Self from pydantic import BaseModel, ConfigDict, EmailStr, Field, model_validator - +from pydantic_extra_types.phone_numbers import PhoneNumber class FromAccount(BaseModel): """ @@ -32,5 +32,5 @@ class FromAccount(BaseModel): country: str = Field(min_length=1) name: str = Field(min_length=1) - phone_number: str = Field(min_length=6) + phone_number: PhoneNumber email: EmailStr \ No newline at end of file diff --git a/validation/llm_validate.py b/validation/llm_validate.py index d0d9d8e..f2e155a 100644 --- a/validation/llm_validate.py +++ b/validation/llm_validate.py @@ -1,2 +1,7 @@ # TODO -# account.reference_currency corresponds to passport.country \ No newline at end of file +# account.reference_currency corresponds to passport.country + +# account.country ~ passport.country + +# account.city is in account.country +