From 1b27db053a32893e8c4fdcc89082fa8baff6f122 Mon Sep 17 00:00:00 2001 From: jsjiang Date: Fri, 4 Aug 2023 16:33:11 -0700 Subject: [PATCH] test data model --- tests/test_minter.py | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/test_minter.py diff --git a/tests/test_minter.py b/tests/test_minter.py new file mode 100644 index 00000000..97a537ad --- /dev/null +++ b/tests/test_minter.py @@ -0,0 +1,77 @@ +# Copyright©2021, Regents of the University of California +# http://creativecommons.org/licenses/BSD + +"""Test the minter data modle +""" +import time +import logging + +from django.core.exceptions import ValidationError + +import ezidapp.models.minter +import tests.util.sample as sample +import tests.util.util + +log = logging.getLogger(__name__) + + +class TestMinter: + def test_1000(self, caplog): + """Validate the minter data model - invalid values""" + caplog.set_level(logging.INFO) + + expected_validation_errors ={ + 'createTime': ["Ensure this value is greater than or equal to 0."], + 'updateTime': ["Ensure this value is greater than or equal to 0."], + 'minterState': ["This field cannot be blank."], + 'prefix': ["Invalid shoulder."], + } + + prefix='XYZark:/91101/r01/' + minter = ezidapp.models.minter.Minter(prefix=prefix, createTime=-1, updateTime=-1, minterState='') + try: + minter.full_clean() + except ValidationError as e: + for field_name, err_msg_list in e.message_dict.items(): + assert expected_validation_errors.get(field_name).sort() == err_msg_list.sort() + + def test_1010(self, caplog): + """Validate the minter data model - field size""" + caplog.set_level(logging.INFO) + + expected_validation_errors = { + 'prefix': ['Invalid shoulder.', 'Ensure this value has at most 255 characters (it has 256).'], + 'minterState': ['This field cannot be blank.'], + } + + prefix='X' * 256 + minter = ezidapp.models.minter.Minter(prefix=prefix) + try: + minter.full_clean() + except ValidationError as e: + for field_name, err_msg_list in e.message_dict.items(): + assert expected_validation_errors.get(field_name).sort() == err_msg_list.sort() + + + def test_1020(self, caplog): + """Validate default values""" + assert not ezidapp.models.minter.Minter.objects.filter( + prefix='ark:/91101/r01/' + ).exists() + + prefix='ark:/91101/r01/' + t = int(time.time()) + minter = ezidapp.models.minter.Minter.objects.create(prefix=prefix, minterState={}) + + assert ezidapp.models.minter.Minter.objects.filter( + prefix='ark:/91101/r01/' + ).exists() + + minter = ezidapp.models.minter.Minter.objects.get(prefix='ark:/91101/r01/') + assert minter.prefix == 'ark:/91101/r01/' + assert minter.createTime == minter.updateTime + assert (t - minter.createTime) <= 1 + assert minter.minterState == {} + + + \ No newline at end of file