Skip to content

Commit ef21347

Browse files
authored
Make TextField generator respect max_length (#493)
1 parent 0123af2 commit ef21347

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

model_bakery/generators.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def gen_integer():
108108
DecimalField: random_gen.gen_decimal,
109109
BinaryField: random_gen.gen_byte_string,
110110
CharField: random_gen.gen_string,
111-
TextField: random_gen.gen_text,
111+
TextField: random_gen.gen_string,
112112
SlugField: random_gen.gen_slug,
113113
UUIDField: random_gen.gen_uuid,
114114
DateField: random_gen.gen_date,
@@ -133,7 +133,7 @@ def gen_integer():
133133
if CIEmailField:
134134
default_mapping[CIEmailField] = random_gen.gen_email
135135
if CITextField:
136-
default_mapping[CITextField] = random_gen.gen_text
136+
default_mapping[CITextField] = random_gen.gen_string
137137
if DecimalRangeField:
138138
default_mapping[DecimalRangeField] = random_gen.gen_pg_numbers_range(Decimal)
139139
if IntegerRangeField:

model_bakery/random_gen.py

+5
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ def gen_slug(max_length: int) -> str:
134134

135135

136136
def gen_text() -> str:
137+
warnings.warn(
138+
"gen_text is deprecated, use gen_string instead",
139+
DeprecationWarning,
140+
stacklevel=2,
141+
)
137142
return gen_string(MAX_LENGTH)
138143

139144

tests/generic/models.py

+2
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ class Person(models.Model):
8888
name = models.CharField(max_length=30)
8989
nickname = models.SlugField(max_length=36)
9090
age = models.IntegerField()
91+
bio_summary = models.TextField(max_length=120)
9192
bio = models.TextField()
9293
birthday = models.DateField()
9394
birth_time = models.TimeField()
@@ -129,6 +130,7 @@ class Person(models.Model):
129130
ci_char = CICharField(max_length=30)
130131
ci_email = CIEmailField()
131132
ci_text = CITextField()
133+
ci_text_max_length = CITextField(max_length=120)
132134
int_range = IntegerRangeField()
133135
bigint_range = BigIntegerRangeField()
134136
date_range = DateRangeField()

tests/test_filling_fields.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from model_bakery import baker
1919
from model_bakery.content_types import BAKER_CONTENTTYPES
2020
from model_bakery.gis import BAKER_GIS
21-
from model_bakery.random_gen import gen_related
21+
from model_bakery.random_gen import MAX_LENGTH, gen_related
2222
from tests.generic import generators, models
2323

2424
try:
@@ -103,6 +103,14 @@ def test_fill_TextField_with_a_random_str(self, person):
103103
assert isinstance(person_bio_field, fields.TextField)
104104

105105
assert isinstance(person.bio, str)
106+
assert len(person.bio) == MAX_LENGTH
107+
108+
def test_fill_TextField_with_max_length_str(self, person):
109+
person_bio_summary_field = models.Person._meta.get_field("bio_summary")
110+
assert isinstance(person_bio_summary_field, fields.TextField)
111+
112+
assert isinstance(person.bio_summary, str)
113+
assert len(person.bio_summary) == person_bio_summary_field.max_length
106114

107115

108116
class TestBinaryFieldsFilling:
@@ -559,6 +567,13 @@ def test_filling_citextfield(self, person):
559567
ci_text_field = models.Person._meta.get_field("ci_text")
560568
assert isinstance(ci_text_field, CITextField)
561569
assert isinstance(person.ci_text, str)
570+
assert len(person.ci_text) == MAX_LENGTH
571+
572+
def test_filling_citextfield_with_max_length(self, person):
573+
ci_text_max_length_field = models.Person._meta.get_field("ci_text_max_length")
574+
assert isinstance(ci_text_max_length_field, CITextField)
575+
assert isinstance(person.ci_text_max_length, str)
576+
assert len(person.ci_text_max_length) == ci_text_max_length_field.max_length
562577

563578
def test_filling_decimal_range_field(self, person):
564579
try:

0 commit comments

Comments
 (0)