Skip to content

Commit 9742675

Browse files
committed
tests: post_build test coverage
1 parent f7f4fa3 commit 9742675

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

tests/test_factory_fields.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,25 @@ def caption(cls, is_long: bool) -> str:
166166
assert result.caption == "just this"
167167

168168

169+
def test_post_build_classmethod() -> None:
170+
@dataclass
171+
class Model:
172+
i: int
173+
j: int
174+
175+
class Factory(DataclassFactory[Model]):
176+
__model__ = Model
177+
178+
@classmethod
179+
def post_build(cls, model: Model) -> Model:
180+
model.i = model.j + 10
181+
return model
182+
183+
result = Factory.build()
184+
185+
assert result.i == result.j + 10
186+
187+
169188
@pytest.mark.parametrize(
170189
"factory_field",
171190
[

tests/test_pydantic_factory.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,3 +1100,20 @@ class PaymentFactory(ModelFactory[Payment]):
11001100

11011101
instance = PaymentFactory.build(currency="DKK")
11021102
assert instance.currency == "DKK"
1103+
1104+
1105+
def test_post_build_classmethod() -> None:
1106+
class Model(BaseModel):
1107+
i: int
1108+
j: int
1109+
1110+
class Factory(ModelFactory[Model]):
1111+
__model__ = Model
1112+
1113+
@classmethod
1114+
def post_build(cls, model: Model) -> Model:
1115+
model.i = model.j + 10
1116+
return model
1117+
1118+
result = Factory.build()
1119+
assert result.i == result.j + 10

tests/test_type_coverage_generation.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,26 @@ def i(cls, j: int) -> int:
202202
assert results[0].i == results[0].j + 10
203203

204204

205+
def test_coverage_post_build() -> None:
206+
@dataclass
207+
class Model:
208+
i: int
209+
j: int
210+
211+
class Factory(DataclassFactory[Model]):
212+
__model__ = Model
213+
214+
@classmethod
215+
def post_build(cls, model: Model) -> Model:
216+
model.i = model.j + 10
217+
return model
218+
219+
results = list(Factory.coverage())
220+
assert len(results) == 1
221+
222+
assert results[0].i == results[0].j + 10
223+
224+
205225
class CustomInt:
206226
def __init__(self, value: int) -> None:
207227
self.value = value

0 commit comments

Comments
 (0)