Skip to content

Commit

Permalink
Harden test '@spawn/edit <valid-prototype>' by asserting that olc_men…
Browse files Browse the repository at this point in the history
…u has been loaded with valid-prototype.UX Enhancement to OLC menu. Underneath the title, display 'Editing: key(prototype_key)' of the prototype being edited. If none, show blank line
  • Loading branch information
Henddher committed Oct 21, 2018
1 parent 4c62052 commit 9d800aa
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 7 deletions.
20 changes: 13 additions & 7 deletions evennia/commands/default/tests.py
Expand Up @@ -478,29 +478,33 @@ def getObject(commandTest, objKeyStr):
# Test listing commands
self.call(building.CmdSpawn(), "/list", "Key ")

# @span/edit (missing prototype)
# @spawn/edit (missing prototype)
# brings up olc menu
msg = self.call(
building.CmdSpawn(),
'/edit')
assert msg.startswith('______________________________________________________________________________\n\n --- Prototype wizard --- \n\n')
assert 'Prototype wizard' in msg

# @spawn/edit with valid prototype
# brings up olc menu loaded with prototype
msg = self.call(
building.CmdSpawn(),
'/edit testball')
# TODO: OLC menu comes up but it gives no
# indication of testball prototype being
# edited ... Is this correct?
# On top of OCL being shown, msg is preceded
# by Room(#1)...
assert 'Prototype wizard' in msg
assert hasattr(self.char1.ndb._menutree, "olc_prototype")
assert dict == type(self.char1.ndb._menutree.olc_prototype) \
and 'prototype_key' in self.char1.ndb._menutree.olc_prototype \
and 'key' in self.char1.ndb._menutree.olc_prototype \
and 'testball' == self.char1.ndb._menutree.olc_prototype['prototype_key'] \
and 'Ball' == self.char1.ndb._menutree.olc_prototype['key']
assert 'Ball' in msg and 'testball' in msg

# @spawn/edit with valid prototype (synomym)
msg = self.call(
building.CmdSpawn(),
'/edit BALL')
assert 'Prototype wizard' in msg
assert 'Ball' in msg and 'testball' in msg

# @spawn/edit with invalid prototype
msg = self.call(
Expand All @@ -518,6 +522,8 @@ def getObject(commandTest, objKeyStr):
self.call(
building.CmdSpawn(),
'/examine BALL',
# FIXME: should this print the existing prototype
# instead of spawning it?
'@spawn: Extra switch "/examine" ignored.|Spawned Ball(#13).')

# @spawn/examine with invalid prototype
Expand Down
12 changes: 12 additions & 0 deletions evennia/prototypes/menus.py
Expand Up @@ -562,6 +562,7 @@ def node_index(caller):

text = """
|c --- Prototype wizard --- |n
%s
A |cprototype|n is a 'template' for |wspawning|n an in-game entity. A field of the prototype
can either be hard-coded, left empty or scripted using |w$protfuncs|n - for example to
Expand Down Expand Up @@ -599,6 +600,17 @@ def node_index(caller):
{pfuncs}
""".format(pfuncs=_format_protfuncs())

# If a prototype is being edited, show its key and
# prototype_key under the title
loaded_prototype = ''
if 'prototype_key' in prototype \
or 'key' in prototype:
loaded_prototype = ' --- Editing: |y{}({})|n --- '.format(
prototype.get('key', ''),
prototype.get('prototype_key', '')
)
text = text % (loaded_prototype)

text = (text, helptxt)

options = []
Expand Down

0 comments on commit 9d800aa

Please sign in to comment.