Make log and other arguments explicit

Follow on from b71c2fedfc.
This commit is contained in:
Luke Murphy 2021-02-02 21:58:21 +01:00
parent b71c2fedfc
commit 5526ad5313
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC
2 changed files with 22 additions and 14 deletions

View File

@ -1,10 +1,13 @@
"""Unit tests for xbotlib module."""
from logging import getLogger
from pathlib import Path
from pytest import fixture
from xbotlib import Config, SimpleMessage
from xbotlib import Config, SimpleDatabase, SimpleMessage
log = getLogger(__name__)
@fixture
@ -61,10 +64,14 @@ def config():
)
def test_simple_message(message, bot):
sm = SimpleMessage(message, bot)
@fixture
def tmp_db_path(tmp_path):
return tmp_path / "testbot.json"
def test_simple_message(message):
sm = SimpleMessage(message, "mockbot", log)
assert sm.message == message
assert sm.bot == bot
assert sm.text == "mockbot: foobar"
assert sm.content == "foobar"
# TODO*decentral1se): how to test test this?

View File

@ -26,10 +26,11 @@ class SimpleDatabase(dict):
ease of hacking and accessibility and not for performance or efficiency.
"""
def __init__(self, filename, *args, log=None, **kwargs):
def __init__(self, filename, log, *args, **kwargs):
"""Initialise the object."""
self.filename = Path(filename).absolute()
self.log = log
self._loads()
self.update(*args, **kwargs)
@ -76,11 +77,11 @@ class SimpleDatabase(dict):
class SimpleMessage:
"""A simple message interface."""
def __init__(self, message, bot):
def __init__(self, message, nick, log):
"""Initialise the object."""
self.message = message
self.bot = bot
self.log = self.bot.log
self._nick = nick
self.log = log
@property
def text(self):
@ -106,7 +107,7 @@ class SimpleMessage:
body = self.message["body"]
try:
match = fr"^{self.bot.nick}.?(\s)"
match = fr"^{self._nick}.?(\s)"
split = re.split(match, body)
filtered = list(filter(None, split))
return filtered[-1].strip()
@ -528,12 +529,12 @@ class Bot(ClientXMPP):
self.add_event_handler("message_error", self.error_message)
def error_message(self, message):
message = SimpleMessage(message, self)
message = SimpleMessage(message, self.nick, self.log)
self.log.error(f"Received error message: {message.text}")
def direct_message(self, message):
"""Handle direct message events."""
message = SimpleMessage(message, self)
message = SimpleMessage(message, self.nick, self.log)
if message.type not in self.DIRECT_MESSAGE_TYPES:
return
@ -616,7 +617,7 @@ class Bot(ClientXMPP):
def group_message(self, message):
"""Handle group chat message events."""
message = SimpleMessage(message, self)
message = SimpleMessage(message, self.nick, self.log)
if "@" in message.text:
if self.meta(message, room=message.room):
@ -672,7 +673,7 @@ class Bot(ClientXMPP):
if self.storage == "file":
try:
self.db = SimpleDatabase(file_storage_path, log=self.log)
self.db = SimpleDatabase(file_storage_path, self.log)
self.log.info("Successfully loaded file storage")
except Exception as exception:
message = f"Failed to load {file_storage_path}: {exception}"
@ -709,7 +710,7 @@ class Bot(ClientXMPP):
try:
internal_storage_path = f"{internal_dir}/data.json"
self._data = SimpleDatabase(internal_storage_path, log=self.log)
self._data = SimpleDatabase(internal_storage_path, self.log)
self.log.info("Successfully loaded internal storage")
except Exception as exception:
message = f"Failed to load {internal_storage_path}: {exception}"