tuttle-dev / tuttle

🪰 Tuttle - time and money management for freelancers
GNU General Public License v3.0
61 stars 12 forks source link

Using the capabilities of `sqlmodel` and `pydantic` to do data validation. #207

Closed clstaudt closed 1 year ago

clstaudt commented 1 year ago

Demo code:


class TestClient:
    """Tests for the Client model."""

    def test_valid_instantiation(self):
        invoicing_contact = Contact(
            first_name="Sam",
            last_name="Lowry",
            email="sam.lowry@miniinf.gov",
            company="Ministry of Information",
        )
        client = Client.validate(
            dict(
                name="Ministry of Information",
                invoicing_contact=invoicing_contact,
            )
        )
        assert store_and_retrieve(client)

    def test_missing_name(self):
        """Test that a ValidationError is raised when the name is missing."""
        with pytest.raises(ValidationError):
            Client.validate(dict())

        try:
            client = Client.validate(dict())
        except ValidationError as ve:
            for error in ve.errors():
                field_name = error.get("loc")[0]
                error_message = error.get("msg")
                assert field_name == "name"