Adds create() method to DefaultScript and unit test for DefaultScript.create().

This commit is contained in:
Johnny 2018-10-09 23:41:04 +00:00
parent 18bcc4ffa6
commit f943b3e179
2 changed files with 37 additions and 1 deletions

View file

@ -12,7 +12,7 @@ from django.utils.translation import ugettext as _
from evennia.typeclasses.models import TypeclassBase
from evennia.scripts.models import ScriptDB
from evennia.scripts.manager import ScriptManager
from evennia.utils import logger
from evennia.utils import create, logger
from future.utils import with_metaclass
__all__ = ["DefaultScript", "DoNothing", "Store"]
@ -323,6 +323,32 @@ class DefaultScript(ScriptBase):
or describe a state that changes under certain conditions.
"""
@classmethod
def create(cls, key, **kwargs):
"""
Provides a passthrough interface to the utils.create_script() function.
Args:
key (str): Name of the new object.
Returns:
object (Object): A newly created object of the given typeclass.
errors (list): A list of errors in string form, if any.
"""
errors = []
obj = None
kwargs['key'] = key
try:
obj = create.create_script(**kwargs)
except Exception as e:
errors.append("The script '%s' encountered errors and could not be created." % key)
logger.log_err(e)
return obj, errors
def at_script_creation(self):
"""

View file

@ -1,10 +1,20 @@
# this is an optimized version only available in later Django versions
from unittest import TestCase
from evennia import DefaultScript
from evennia.scripts.models import ScriptDB, ObjectDoesNotExist
from evennia.utils.create import create_script
from evennia.utils.test_resources import EvenniaTest
from evennia.scripts.scripts import DoNothing
class TestScript(EvenniaTest):
def test_create(self):
"Check the script can be created via the convenience method."
obj, errors = DefaultScript.create('useless-machine')
self.assertTrue(obj, errors)
self.assertFalse(errors, errors)
class TestScriptDB(TestCase):
"Check the singleton/static ScriptDB object works correctly"