def test_delete_nick_value(db: SopelDB): nick = 'TerryGilliam' db.set_nick_value(nick, 'testkey', 'test-value') # sanity check assert db.get_nick_value(nick, 'testkey') == 'test-value', ( 'Check set_nick_value: this key must contain the correct value.') # delete key db.delete_nick_value(nick, 'testkey') assert db.get_nick_value(nick, 'testkey') is None
def test_delete_nick_value_none(db: SopelDB): """Test method doesn't raise an error when there is nothing to delete.""" nick = 'TerryGilliam' # this user doesn't even exist db.delete_nick_value(nick, 'testkey') assert db.get_nick_value(nick, 'testkey') is None, ( 'Trying to delete a key must not create it.') # create a key db.set_nick_value(nick, 'otherkey', 'value') # delete another key for that user db.delete_nick_value(nick, 'testkey') assert db.get_nick_value(nick, 'testkey') is None, ( 'Trying to delete a key must not create it.') # the nick still exists, and its key as well assert db.get_nick_value( nick, 'otherkey') == 'value', ('This key must not be deleted by error.')
class BotDatabase(): def __init__(self): SopelDB.nick_id_lock = threading.Lock() sopel.db.NickIDs = NickIDs sopel.db.Nicknames = Nicknames sopel.db.NickValues = NickValues SopelDB.get_nick_id = SpiceDB.get_nick_id SopelDB.get_nick_value = SpiceDB.get_nick_value SopelDB.set_nick_value = SpiceDB.set_nick_value SopelDB.delete_nick_value = SpiceDB.delete_nick_value SopelDB.adjust_nick_value = SpiceDB.adjust_nick_value SopelDB.adjust_nick_list = SpiceDB.adjust_nick_list sopel.db.ChannelValues = ChannelValues SopelDB.get_channel_value = SpiceDB.get_channel_value SopelDB.set_channel_value = SpiceDB.set_channel_value SopelDB.delete_channel_value = SpiceDB.delete_channel_value SopelDB.adjust_channel_value = SpiceDB.adjust_channel_value SopelDB.adjust_channel_list = SpiceDB.adjust_channel_list sopel.db.ServerValues = ServerValues SopelDB.get_server_value = SpiceDB.get_server_value SopelDB.set_server_value = SpiceDB.set_server_value SopelDB.delete_server_value = SpiceDB.delete_server_value SopelDB.adjust_server_value = SpiceDB.adjust_server_value SopelDB.adjust_server_list = SpiceDB.adjust_server_list sopel.db.PluginValues = PluginValues SopelDB.get_plugin_value = SpiceDB.get_plugin_value SopelDB.set_plugin_value = SpiceDB.set_plugin_value SopelDB.delete_plugin_value = SpiceDB.delete_plugin_value SopelDB.adjust_plugin_value = SpiceDB.adjust_plugin_value SopelDB.adjust_plugin_list = SpiceDB.adjust_plugin_list self.db = SopelDB(botconfig.config) BASE.metadata.create_all(self.db.engine) """Nick""" def get_nick_id(self, nick, create=True): return self.db.get_nick_id(nick, create) def alias_nick(self, nick, alias): return self.db.alias_nick(nick, alias) def unalias_nick(self, alias): return self.db.unalias_nick(alias) def check_nick_id(self, nick): try: self.db.get_nick_id(nick, create=False) return True except ValueError: return False def get_nick_value(self, nick, key, namespace='default'): return self.db.get_nick_value(nick, key, namespace) def set_nick_value(self, nick, key, value, namespace='default'): return self.db.set_nick_value(nick, key, value, namespace) def delete_nick_value(self, nick, key, namespace='default'): return self.db.delete_nick_value(nick, key, namespace) def adjust_nick_value(self, nick, key, value, namespace='default'): return self.db.adjust_nick_value(nick, key, value, namespace) def adjust_nick_list(self, nick, key, entries, adjustmentdirection, namespace='default'): return self.db.adjust_nick_list(nick, key, entries, adjustmentdirection, namespace) """Bot""" def get_bot_value(self, key, namespace='default'): return self.db.get_nick_value(botconfig.nick, key, namespace) def set_bot_value(self, key, value, namespace='default'): return self.db.set_nick_value(botconfig.nick, key, value, namespace) def delete_bot_value(self, key, namespace='default'): return self.db.delete_nick_value(botconfig.nick, key, namespace) def adjust_bot_value(self, key, value, namespace='default'): return self.db.adjust_nick_value(botconfig.nick, key, value, namespace) def adjust_bot_list(self, key, entries, adjustmentdirection, namespace='default'): return self.db.adjust_nick_list(botconfig.nick, key, entries, adjustmentdirection, namespace) """Channels""" def get_channel_value(self, channel, key, namespace='default'): return self.db.get_channel_value(channel, key, namespace) def set_channel_value(self, channel, key, value, namespace='default'): return self.db.set_channel_value(channel, key, value, namespace) def delete_channel_value(self, channel, key, namespace='default'): return self.db.delete_channel_value(channel, key, namespace) def adjust_channel_value(self, channel, key, value, namespace='default'): return self.db.adjust_channel_value(channel, key, value, namespace) def adjust_channel_list(self, nick, key, entries, adjustmentdirection, namespace='default'): return self.db.adjust_channel_list(nick, key, entries, adjustmentdirection, namespace) """Servers""" def get_server_value(self, _server, key, namespace='default'): return self.db.get__server_value(_server, key, namespace) def set__server_value(self, _server, key, value, namespace='default'): return self.db.set__server_value(_server, key, value, namespace) def delete__server_value(self, _server, key, namespace='default'): return self.db.delete__server_value(_server, key, namespace) def adjust__server_value(self, _server, key, value, namespace='default'): return self.db.adjust__server_value(_server, key, value, namespace) def adjust__server_list(self, nick, key, entries, adjustmentdirection, namespace='default'): return self.db.adjust__server_list(nick, key, entries, adjustmentdirection, namespace) """Plugins""" def get_plugin_value(self, plugin, key, namespace='default'): return self.db.get_plugin_value(plugin, key, namespace) def set_plugin_value(self, plugin, key, value, namespace='default'): return self.db.set_plugin_value(plugin, key, value, namespace) def delete_plugin_value(self, plugin, key, namespace='default'): return self.db.delete_plugin_value(plugin, key, namespace) def adjust_plugin_value(self, plugin, key, value, namespace='default'): return self.db.adjust_plugin_value(plugin, key, value, namespace) def adjust_plugin_list(self, plugin, key, entries, adjustmentdirection, namespace='default'): return self.db.adjust_plugin_list(plugin, key, entries, adjustmentdirection, namespace)
class BotDatabase(): def __init__(self): self.db = None self.dict = { "bot": { "nick": None, }, } def initialize(self, config): SopelDB.adjust_nick_value = SpiceDB.adjust_nick_value SopelDB.adjust_nick_list = SpiceDB.adjust_nick_list SopelDB.adjust_channel_value = SpiceDB.adjust_channel_value SopelDB.adjust_channel_list = SpiceDB.adjust_channel_list SopelDB.adjust_plugin_value = SpiceDB.adjust_plugin_value SopelDB.adjust_plugin_list = SpiceDB.adjust_plugin_list self.db = SopelDB(config) BASE.metadata.create_all(self.db.engine) self.dict["bot"]["nick"] = config.core.nick def __getattr__(self, name): ''' will only get called for undefined attributes ''' if hasattr(self.db, name): return eval("self.db." + name) else: return None """Nick""" def adjust_nick_value(self, nick, key, value): return self.db.adjust_nick_value(nick, key, value) def adjust_nick_list(self, nick, key, entries, adjustmentdirection): return self.db.adjust_nick_list(nick, key, entries, adjustmentdirection) """Bot""" def get_bot_value(self, key): return self.db.get_nick_value(self.dict["bot"]["nick"], key) def set_bot_value(self, key, value): return self.db.set_nick_value(self.dict["bot"]["nick"], key, value) def delete_bot_value(self, key): return self.db.delete_nick_value(self.dict["bot"]["nick"], key) def adjust_bot_value(self, key, value): return self.db.adjust_nick_value(self.dict["bot"]["nick"], key, value) def adjust_bot_list(self, key, entries, adjustmentdirection): return self.db.adjust_nick_list(self.dict["bot"]["nick"], key, entries, adjustmentdirection) """Channels""" def adjust_channel_value(self, channel, key, value): return self.db.adjust_channel_value(channel, key, value) def adjust_channel_list(self, nick, key, entries, adjustmentdirection): return self.db.adjust_channel_list(nick, key, entries, adjustmentdirection) """Plugins""" def adjust_plugin_value(self, plugin, key, value): return self.db.adjust_plugin_value(plugin, key, value) def adjust_plugin_list(self, plugin, key, entries, adjustmentdirection): return self.db.adjust_plugin_list(plugin, key, entries, adjustmentdirection)