Add custom exceptions, simplify generation template

This commit is contained in:
2025-07-12 02:37:54 +03:00
parent ed5f975e87
commit 1994eaab0d
5 changed files with 99 additions and 51 deletions

View File

@@ -1,5 +1,6 @@
from __future__ import annotations
from dataclasses import dataclass
from typing import Optional
from src.megasniff import SchemaInflatorGenerator
@@ -32,3 +33,14 @@ def test_circular():
a = fn({'b': {'a': None}})
return isinstance(a.b, CircB)
def test_optional():
@dataclass
class C:
a: Optional[int] = None
infl = SchemaInflatorGenerator()
fn = infl.schema_to_generator(C)
c = fn({})
assert c.a is None

39
tests/test_exceptions.py Normal file
View File

@@ -0,0 +1,39 @@
from dataclasses import dataclass
import pytest
from megasniff import SchemaInflatorGenerator
from megasniff.exceptions import MissingFieldException, FieldValidationException
def test_missing_field():
@dataclass
class A:
a: int
infl = SchemaInflatorGenerator()
fn = infl.schema_to_generator(A)
with pytest.raises(MissingFieldException):
fn({})
def test_null():
@dataclass
class A:
a: int
infl = SchemaInflatorGenerator()
fn = infl.schema_to_generator(A)
with pytest.raises(FieldValidationException):
fn({'a': None})
def test_invalid_field():
@dataclass
class A:
a: float | int | None
infl = SchemaInflatorGenerator()
fn = infl.schema_to_generator(A)
with pytest.raises(FieldValidationException):
fn({'a': {}})