Beispiel #1
0
def test_unalias_nick(db: SopelDB):
    nick = 'Embolalia'
    nick_id = 42

    with db.session() as session:
        nn = Nicknames(
            nick_id=nick_id,
            slug=Identifier(nick).lower(),
            canonical=nick,
        )
        session.add(nn)
        session.commit()

    aliases = ['EmbölaliÅ', 'Embo`work', 'Embo']
    with db.session() as session:
        for alias in aliases:
            nn = Nicknames(
                nick_id=nick_id,
                slug=Identifier(alias).lower(),
                canonical=alias,
            )
            session.add(nn)
            session.commit()

    for alias in aliases:
        db.unalias_nick(alias)

    with db.session() as session:
        found = session.scalar(
            select(func.count()).select_from(Nicknames).where(
                Nicknames.nick_id == nick_id))
        assert found == 1
Beispiel #2
0
def test_unalias_nick_one_or_none(db: SopelDB):
    # this will create the first version of the nick
    db.get_nick_id('MrEricPraline', create=True)

    # assert you can't unalias a unique nick
    with pytest.raises(ValueError):
        db.unalias_nick('MrEricPraline')

    # and you can't either with a non-existing nick
    with pytest.raises(ValueError):
        db.unalias_nick('gumbys')
Beispiel #3
0
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)