Ejemplo n.º 1
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_get_preferred_value(db: SopelDB):
    db.set_nick_value('asdf', 'qwer', 'poiu')
    db.set_channel_value('#asdf', 'qwer', '/.,m')
    db.set_channel_value('#asdf', 'lkjh', '1234')
    names = ['asdf', '#asdf']
    assert db.get_preferred_value(names, 'qwer') == 'poiu'
    assert db.get_preferred_value(names, 'lkjh') == '1234'
Ejemplo n.º 2
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_get_preferred_value_none(db: SopelDB):
    """Test method when there is no preferred value"""
    db.set_nick_value('testuser', 'userkey', 'uservalue')
    db.set_channel_value('#channel', 'channelkey', 'channelvalue')
    names = ['notuser', '#notchannel']
    assert db.get_preferred_value(names, 'userkey') is None
    assert db.get_preferred_value(names, 'channelkey') is None
Ejemplo n.º 3
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_forget_channel(db: SopelDB):
    db.set_channel_value('#channel', 'testkey1', 'value1')
    db.set_channel_value('#channel', 'testkey2', 'value2')
    assert db.get_channel_value('#channel', 'testkey1') == 'value1'
    assert db.get_channel_value('#channel', 'testkey2') == 'value2'
    db.forget_channel('#channel')
    assert db.get_channel_value('#channel', 'wasd') is None
    assert db.get_channel_value('#channel', 'asdf') is None
Ejemplo n.º 4
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_delete_channel_value(db: SopelDB):
    # assert you can delete a non-existing key (without error)
    db.delete_channel_value('#channel', 'testkey')

    # assert you can delete an existing key
    db.set_channel_value('#channel', 'testkey', 'channel-value')
    db.delete_channel_value('#channel', 'testkey')
    assert db.get_channel_value('#channel', 'testkey') is None
Ejemplo n.º 5
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_get_nick_or_channel_value_identifier(db: SopelDB):
    db.set_nick_value('testuser', 'testkey', 'user-value')
    db.set_channel_value('#channel', 'testkey', 'channel-value')

    nick = Identifier('testuser')
    channel = Identifier('#channel')
    assert db.get_nick_or_channel_value(nick, 'testkey') == 'user-value'
    assert db.get_nick_or_channel_value(nick, 'nokey') is None
    assert db.get_nick_or_channel_value(nick, 'nokey', 'default') == 'default'
    assert db.get_nick_or_channel_value(channel, 'testkey') == 'channel-value'
    assert db.get_nick_or_channel_value(channel, 'nokey',
                                        'default') == 'default'
Ejemplo n.º 6
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_set_channel_value(db: SopelDB):
    # set new value
    db.set_channel_value('#channel', 'testkey', 'channel-value')

    with db.session() as session:
        result = session.query(ChannelValues.value) \
                        .filter(ChannelValues.channel == '#channel') \
                        .filter(ChannelValues.key == 'testkey') \
                        .scalar()
        assert result == '"channel-value"'

    # update pre-existing value
    db.set_channel_value('#channel', 'testkey', 'new_channel-value')

    with db.session() as session:
        result = session.query(ChannelValues.value) \
                        .filter(ChannelValues.channel == '#channel') \
                        .filter(ChannelValues.key == 'testkey') \
                        .scalar()
        assert result == '"new_channel-value"'
Ejemplo n.º 7
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_get_channel_slug_with_migration(db: SopelDB):
    channel = db.make_identifier('#[channel]')
    db.set_channel_value(channel, 'testkey', 'cval')
    assert db.get_channel_slug(channel) == channel.lower()
    assert db.get_channel_value(channel, 'testkey') == 'cval'

    # insert a value with the wrong casemapping
    old_channel = Identifier._lower_swapped('#[channel]')
    assert old_channel == '#[channel]'
    assert channel.lower() == '#{channel}'

    with db.session() as session:
        channel_value = ChannelValues(
            channel=old_channel,
            key='oldkey',
            value='"value"'  # result from json.dumps
        )
        session.add(channel_value)
        session.commit()

    assert db.get_channel_slug(old_channel) == channel.lower(), (
        'Channel with previous casemapping must return the new version.')
    assert db.get_channel_value(old_channel, 'oldkey') == 'value', (
        'Key associated to an old version must be migrated to the new one')
Ejemplo n.º 8
0
Archivo: test_db.py Proyecto: dgw/sopel
def test_get_nick_or_channel_value(db: SopelDB):
    db.set_nick_value('asdf', 'qwer', 'poiu')
    db.set_channel_value('#asdf', 'qwer', '/.,m')
    assert db.get_nick_or_channel_value('asdf', 'qwer') == 'poiu'
    assert db.get_nick_or_channel_value('#asdf', 'qwer') == '/.,m'
Ejemplo n.º 9
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)