mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
tests for reports contrib
This commit is contained in:
parent
6986274222
commit
ece8f4f138
2 changed files with 91 additions and 3 deletions
|
|
@ -86,7 +86,7 @@ Initializes a menu for reviewing and changing the status of current reports.
|
|||
return helptext
|
||||
|
||||
def func(self):
|
||||
_, report_type = self.cmdstring.split()[-1]
|
||||
report_type = self.cmdstring.split()[-1]
|
||||
if report_type == "reports":
|
||||
report_type = "players"
|
||||
if report_type not in _REPORT_TYPES:
|
||||
|
|
@ -98,7 +98,9 @@ Initializes a menu for reviewing and changing the status of current reports.
|
|||
if not hub:
|
||||
self.msg("You cannot manage that.")
|
||||
|
||||
evmenu.EvMenu(self.account, menu, startnode="menunode_list_reports", hub=hub, persistent=True)
|
||||
evmenu.EvMenu(
|
||||
self.account, menu, startnode="menunode_list_reports", hub=hub, persistent=True
|
||||
)
|
||||
|
||||
|
||||
class ReportCmdBase(_DEFAULT_COMMAND_CLASS):
|
||||
|
|
@ -212,6 +214,7 @@ class CmdIdea(ReportCmdBase):
|
|||
key = "idea"
|
||||
aliases = ("ideas",)
|
||||
report_locks = "read:pperm(Builder)"
|
||||
success_msg = "Thank you for your suggestion!"
|
||||
|
||||
def func(self):
|
||||
# we add an extra feature to this command, allowing you to see all your submitted ideas
|
||||
|
|
|
|||
|
|
@ -1 +1,86 @@
|
|||
# TODO: write tests
|
||||
from unittest.mock import Mock, patch, MagicMock
|
||||
from evennia.utils import create
|
||||
from evennia.comms.models import TempMsg
|
||||
from evennia.utils.test_resources import EvenniaCommandTest
|
||||
|
||||
from . import menu, reports
|
||||
|
||||
|
||||
class _MockQuerySet(list):
|
||||
def order_by(self, *args, **kwargs):
|
||||
return self
|
||||
|
||||
def exclude(self, *args, **kwargs):
|
||||
return self
|
||||
|
||||
def filter(self, *args, **kwargs):
|
||||
return self
|
||||
|
||||
|
||||
def _mock_pre(cmdobj):
|
||||
"""helper to mock at_pre_cmd"""
|
||||
cmdobj.hub = Mock()
|
||||
|
||||
|
||||
class TestReportCommands(EvenniaCommandTest):
|
||||
@patch.object(create, "create_message", new=MagicMock())
|
||||
def test_report_cmd_base(self):
|
||||
"""verify that the base command functionality works"""
|
||||
cmd = reports.ReportCmdBase
|
||||
|
||||
# avoid test side-effects
|
||||
with patch.object(cmd, "at_pre_cmd", new=_mock_pre) as _:
|
||||
# no arguments
|
||||
self.call(cmd(), "", "You must provide a message.")
|
||||
# arguments, no target, no target required
|
||||
self.call(cmd(), "test", "Your report has been filed.")
|
||||
# arguments, custom success message
|
||||
custom_success = "custom success message"
|
||||
cmd.success_msg = custom_success
|
||||
self.call(cmd(), "test", custom_success)
|
||||
# arguments, no target, target required
|
||||
cmd.require_target = True
|
||||
self.call(cmd(), "test", "You must include a target.")
|
||||
|
||||
@patch.object(create, "create_message", new=MagicMock())
|
||||
@patch.object(reports, "datetime_format", return_value="now")
|
||||
def test_ideas_list(self, mock_datetime_format):
|
||||
cmd = reports.CmdIdea
|
||||
|
||||
fake_ideas = _MockQuerySet([TempMsg(message=f"idea {i+1}") for i in range(3)])
|
||||
expected = """\
|
||||
Ideas you've submitted:
|
||||
idea 1 (submitted now)
|
||||
idea 2 (submitted now)
|
||||
idea 3 (submitted now)
|
||||
"""
|
||||
|
||||
with patch.object(cmd, "at_pre_cmd", new=_mock_pre) as _:
|
||||
# submitting an idea
|
||||
self.call(cmd(), "", "You must provide a message.")
|
||||
# arguments, no target, no target required
|
||||
self.call(cmd(), "test", "Thank you for your suggestion!")
|
||||
|
||||
# viewing your submitted ideas
|
||||
with patch.object(reports.Msg.objects, "search_message", return_value=fake_ideas):
|
||||
self.call(cmd(), "", cmdstring="ideas", msg=expected)
|
||||
|
||||
@patch.object(reports.evmenu, "EvMenu")
|
||||
def test_cmd_manage_reports(self, evmenu_mock):
|
||||
cmd = reports.CmdManageReports
|
||||
hub = Mock()
|
||||
|
||||
with patch.object(reports, "_get_report_hub", return_value=hub) as _:
|
||||
# invalid report type fails
|
||||
self.call(
|
||||
cmd(), "", cmdstring="manage custom", msg="'custom' is not a valid report category."
|
||||
)
|
||||
# verify valid type triggers evmenu
|
||||
self.call(cmd(), "", cmdstring="manage bugs")
|
||||
evmenu_mock.assert_called_once_with(
|
||||
self.account,
|
||||
menu,
|
||||
startnode="menunode_list_reports",
|
||||
hub=hub,
|
||||
persistent=True,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue