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.typeclasses.models import TypeclassBase
from evennia.scripts.models import ScriptDB from evennia.scripts.models import ScriptDB
from evennia.scripts.manager import ScriptManager from evennia.scripts.manager import ScriptManager
from evennia.utils import logger from evennia.utils import create, logger
from future.utils import with_metaclass from future.utils import with_metaclass
__all__ = ["DefaultScript", "DoNothing", "Store"] __all__ = ["DefaultScript", "DoNothing", "Store"]
@ -324,6 +324,32 @@ class DefaultScript(ScriptBase):
""" """
@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): def at_script_creation(self):
""" """
Only called once, when script is first created. Only called once, when script is first created.

View file

@ -1,10 +1,20 @@
# this is an optimized version only available in later Django versions # this is an optimized version only available in later Django versions
from unittest import TestCase from unittest import TestCase
from evennia import DefaultScript
from evennia.scripts.models import ScriptDB, ObjectDoesNotExist from evennia.scripts.models import ScriptDB, ObjectDoesNotExist
from evennia.utils.create import create_script from evennia.utils.create import create_script
from evennia.utils.test_resources import EvenniaTest
from evennia.scripts.scripts import DoNothing 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): class TestScriptDB(TestCase):
"Check the singleton/static ScriptDB object works correctly" "Check the singleton/static ScriptDB object works correctly"