Skip to content

Commit

Permalink
Update json field tests to account for error cases
Browse files Browse the repository at this point in the history
  • Loading branch information
enpaul committed May 4, 2023
1 parent 7944d4d commit d240306
Showing 1 changed file with 39 additions and 2 deletions.
41 changes: 39 additions & 2 deletions tests/test_json_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,43 @@ class Meta:
model = TestModel.get()
assert model.some_data == data

with pytest.raises(peewee.IntegrityError):
bad = TestModel(some_data=Path("."))

def test_errors(fakedb):
"""Test that errors are raised as expected"""

class GoodModel(peewee.Model):
class Meta:
database = fakedb
# Needs to match the table name below
table_name = "one_table"

id = peewee.AutoField()
some_data = peewee_plus.JSONField()

class BadModel(peewee.Model):
class Meta:
database = fakedb
# Needs to match the table name above
table_name = "one_table"

id = peewee.AutoField()
some_data = peewee.TextField()

fakedb.create_tables([GoodModel])

with pytest.raises(ValueError):
# The usage of path here is arbitrary, it just needs to be any
# non-JSON serializable type
bad = GoodModel(some_data=Path("."))
bad.save()

good = GoodModel(some_data={"foo": 123})
good.save()

# This is overwriting the ``some_data`` on the above object with garbage
bad = BadModel.get(good.id)
bad.some_data = "This{ string' is not, valid JSON;"
bad.save()

with pytest.raises(peewee.IntegrityError):
GoodModel.get(good.id)

0 comments on commit d240306

Please sign in to comment.