Adds create() method to DefaultChannel object, and unit test.

This commit is contained in:
Johnny 2018-10-17 20:26:51 +00:00
parent 904969efb9
commit 06fe77a6ef
2 changed files with 50 additions and 1 deletions

View file

@ -5,7 +5,7 @@ Base typeclass for in-game Channels.
from evennia.typeclasses.models import TypeclassBase from evennia.typeclasses.models import TypeclassBase
from evennia.comms.models import TempMsg, ChannelDB from evennia.comms.models import TempMsg, ChannelDB
from evennia.comms.managers import ChannelManager from evennia.comms.managers import ChannelManager
from evennia.utils import logger from evennia.utils import create, logger
from evennia.utils.utils import make_iter from evennia.utils.utils import make_iter
from future.utils import with_metaclass from future.utils import with_metaclass
_CHANNEL_HANDLER = None _CHANNEL_HANDLER = None
@ -220,6 +220,42 @@ class DefaultChannel(with_metaclass(TypeclassBase, ChannelDB)):
return self.locks.check(accessing_obj, access_type=access_type, return self.locks.check(accessing_obj, access_type=access_type,
default=default, no_superuser_bypass=no_superuser_bypass) default=default, no_superuser_bypass=no_superuser_bypass)
@classmethod
def create(cls, key, *args, **kwargs):
"""
Creates a basic Channel with default parameters, unless otherwise
specified or extended.
Provides a friendlier interface to the utils.create_channel() function.
Args:
key (str): This must be unique.
Kwargs:
aliases (list of str): List of alternative (likely shorter) keynames.
description (str): A description of the channel, for use in listings.
locks (str): Lockstring.
keep_log (bool): Log channel throughput.
typeclass (str or class): The typeclass of the Channel (not
often used).
Returns:
channel (Channel): A newly created Channel.
errors (list): A list of errors in string form, if any.
"""
errors = []
obj = None
try:
kwargs['desc'] = kwargs.pop('description', '')
obj = create.create_channel(key, *args, **kwargs)
except Exception as exc:
errors.append("An error occurred while creating this '%s' object." % key)
logger.log_err(exc)
return obj, errors
def delete(self): def delete(self):
""" """
Deletes channel while also cleaning up channelhandler. Deletes channel while also cleaning up channelhandler.

13
evennia/comms/tests.py Normal file
View file

@ -0,0 +1,13 @@
from evennia.utils.test_resources import EvenniaTest
from evennia import DefaultChannel
class ObjectCreationTest(EvenniaTest):
def test_channel_create(self):
description = "A place to talk about coffee."
obj, errors = DefaultChannel.create('coffeetalk', description=description)
self.assertTrue(obj, errors)
self.assertFalse(errors, errors)
self.assertEqual(description, obj.db.desc)