예제 #1
0
def test_command_sscan():
    completer = IRedisCompleter()
    completer.member_completer.words = []
    rendered = renders.OutputRender.command_sscan(
        [b"44", [b"a", b"member:__rand_int__", b"dest", b" a"]])
    completer.update_completer_for_response(
        "SSCAN", (0), [b"44", [b"a", b"member:__rand_int__", b"dest", b" a"]])

    assert rendered == FormattedText([
        ("class:type", "(cursor) "),
        ("class:integer", "44"),
        ("", "\n"),
        ("", "1)"),
        ("", " "),
        ("class:member", '"a"'),
        ("", "\n"),
        ("", "2)"),
        ("", " "),
        ("class:member", '"member:__rand_int__"'),
        ("", "\n"),
        ("", "3)"),
        ("", " "),
        ("class:member", '"dest"'),
        ("", "\n"),
        ("", "4)"),
        ("", " "),
        ("class:member", '" a"'),
    ])
    assert completer.member_completer.words == [
        " a",
        "dest",
        "member:__rand_int__",
        "a",
    ]
예제 #2
0
def test_command_scan():
    completer = IRedisCompleter()
    completer.key_completer.words = []
    config.raw = False
    rendered = renders.OutputRender.command_scan(
        [b"44", [b"a", b"key:__rand_int__", b"dest", b" a"]])
    completer.update_completer_for_response(
        "SCAN", ("0", ), [b"44", [b"a", b"key:__rand_int__", b"dest", b" a"]])

    assert rendered == FormattedText([
        ("class:type", "(cursor) "),
        ("class:integer", "44"),
        ("", "\n"),
        ("", "1)"),
        ("", " "),
        ("class:key", '"a"'),
        ("", "\n"),
        ("", "2)"),
        ("", " "),
        ("class:key", '"key:__rand_int__"'),
        ("", "\n"),
        ("", "3)"),
        ("", " "),
        ("class:key", '"dest"'),
        ("", "\n"),
        ("", "4)"),
        ("", " "),
        ("class:key", '" a"'),
    ])
    assert completer.key_completer.words == [
        " a", "dest", "key:__rand_int__", "a"
    ]
예제 #3
0
def test_newbie_mode_complete_without_meta_dict():
    fake_document = MagicMock()
    fake_document.text_before_cursor = fake_document.text = "GEOR"
    completer = IRedisCompleter(hint=False)
    completions = list(completer.get_completions(fake_document, None))
    assert [word.text for word in completions] == ["GEORADIUS", "GEORADIUSBYMEMBER"]
    assert [word.display_meta for word in completions] == [
        FormattedText([("", "")]),
        FormattedText([("", "")]),
    ]
예제 #4
0
def test_render_members_config_raw():
    completer = IRedisCompleter()
    completer.member_completer.words = []
    config.withscores = True
    resp = [b"duck", b"667", b"camel", b"708"]
    rendered = renders.OutputRender.render_raw(resp)
    completer.update_completer_for_response("ZRANGE", (), resp)

    assert rendered == b"duck\n667\ncamel\n708"
    assert completer.member_completer.words == ["camel", "duck"]
예제 #5
0
def test_username_touch_for_response():
    c = IRedisCompleter()
    c.update_completer_for_response(
        "acl   users",
        (),
        [b"hello", b"world"],
    )
    assert sorted(c.username_completer.words) == [
        "hello",
        "world",
    ]
예제 #6
0
def test_command_sscan_config_raw():
    completer = IRedisCompleter()
    completer.member_completer.words = []
    rendered = renders.OutputRender.render_raw(
        [b"44", [b"a", b"member:__rand_int__", b"dest", b" a"]])
    completer.update_completer_for_response(
        "SSCAN", (0), [b"44", [b"a", b"member:__rand_int__", b"dest", b" a"]])

    assert rendered == b"44\na\nmember:__rand_int__\ndest\n a"
    assert completer.member_completer.words == [
        " a",
        "dest",
        "member:__rand_int__",
        "a",
    ]
예제 #7
0
def test_newbie_mode_complete_with_meta_dict():
    fake_document = MagicMock()
    fake_document.text_before_cursor = "GEOR"
    completer = IRedisCompleter(hint=True)
    completions = list(completer.get_completions(fake_document, None))

    assert sorted([completion.display_meta for completion in completions]) == [
        FormattedText([(
            "",
            "Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a member",  # noqa
        )]),
        FormattedText([(
            "",
            "Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a point",  # noqa
        )]),
    ]
예제 #8
0
def test_iredis_completer_update_for_response():
    c = IRedisCompleter()
    c.update_completer_for_response(
        "HGETALL",
        [
            b"Behave",
            b"misbehave",
            b"Interpret",
            b"misinterpret",
            b"Lead",
            b"mislead",
            b"Trust",
            b"mistrust",
        ],
    )
    assert c.field_completer.words == ["Trust", "Lead", "Interpret", "Behave"]
예제 #9
0
def test_patch_completer():
    client = Client("127.0.0.1", "6379", None)
    completer = IRedisCompleter()
    client.pre_hook("MGET foo bar hello world", "MGET", "foo bar hello world",
                    completer)
    assert completer.key_completer.words == ["world", "hello", "bar", "foo"]
    assert completer.key_completer.words == ["world", "hello", "bar", "foo"]

    client.pre_hook("GET bar", "GET", "bar", completer)
    assert completer.key_completer.words == ["bar", "world", "hello", "foo"]
예제 #10
0
def test_render_members():
    completer = IRedisCompleter()
    completer.member_completer.words = []
    config.withscores = True
    resp = [b"duck", b"667", b"camel", b"708"]
    rendered = renders.OutputRender.render_members(resp)
    completer.update_completer_for_response("ZRANGE", ("foo", "0", "-1"), resp)

    assert rendered == FormattedText([
        ("", "1)"),
        ("", " "),
        ("class:integer", "667 "),
        ("class:member", '"duck"'),
        ("", "\n"),
        ("", "2)"),
        ("", " "),
        ("class:integer", "708 "),
        ("class:member", '"camel"'),
    ])
    assert completer.member_completer.words == ["camel", "duck"]
예제 #11
0
def test_command_keys():
    completer = IRedisCompleter()
    completer.key_completer.words = []
    config.raw = False
    rendered = renders.OutputRender.command_keys([b"cat", b"dog", b"banana"])
    completer.update_completer_for_response("KEYS", None,
                                            [b"cat", b"dog", b"banana"])

    assert rendered == FormattedText([
        ("", "1)"),
        ("", " "),
        ("class:key", '"cat"'),
        ("", "\n"),
        ("", "2)"),
        ("", " "),
        ("class:key", '"dog"'),
        ("", "\n"),
        ("", "3)"),
        ("", " "),
        ("class:key", '"banana"'),
    ])
    assert completer.key_completer.words == ["banana", "dog", "cat"]
예제 #12
0
def test_group_completer():
    fake_document = MagicMock()
    previous_commands = ["xgroup create abc world 123", "xgroup setid abc hello 123"]
    fake_document.text = fake_document.text_before_cursor = "XGROUP DESTROY key "
    completer = IRedisCompleter()
    for command in previous_commands:
        completer.update_completer_for_input(command)
    completions = list(completer.get_completions(fake_document, None))
    assert completions == [
        Completion(
            text="hello",
            start_position=0,
            display=FormattedText([("", "hello")]),
            display_meta=FormattedText([("", "")]),
        ),
        Completion(
            text="world",
            start_position=0,
            display=FormattedText([("", "world")]),
            display_meta=FormattedText([("", "")]),
        ),
    ]
예제 #13
0
def test_username_completer():
    completer = IRedisCompleter()
    completer.update_completer_for_input("acl deluser laixintao")
    completer.update_completer_for_input("acl deluser antirez")

    fake_document = MagicMock()
    fake_document.text_before_cursor = fake_document.text = "acl deluser "
    completions = list(completer.get_completions(fake_document, None))
    assert sorted([completion.text for completion in completions]) == [
        "antirez",
        "laixintao",
    ]
예제 #14
0
def test_categoryname_completer_update_for_response():
    c = IRedisCompleter()
    c.update_completer_for_response(
        "ACL CAT",
        (),
        [b"scripting", b"watch"],
    )
    assert sorted(c.catetoryname_completer.words) == ["scripting", "watch"]
    c.update_completer_for_response(
        "ACL CAT",
        ("scripting"),
        [b"foo", b"bar"],
    )
    assert sorted(c.catetoryname_completer.words) == ["scripting", "watch"]
예제 #15
0
def test_completer_when_there_are_spaces_in_command():
    c = IRedisCompleter()
    c.update_completer_for_response(
        "ACL    cat",
        (),
        [b"scripting", b"watch"],
    )
    assert sorted(c.catetoryname_completer.words) == ["scripting", "watch"]

    c.update_completer_for_response(
        "acl \t   cat",
        (),
        [b"hello", b"world"],
    )
    assert sorted(c.catetoryname_completer.words) == [
        "hello",
        "scripting",
        "watch",
        "world",
    ]
예제 #16
0
def test_completion_casing():
    c = IRedisCompleter(completion_casing="auto")
    fake_document = MagicMock()
    fake_document.text = fake_document.text_before_cursor = "ge"
    assert [
        completion.text
        for completion in c.get_completions(fake_document, None)
    ] == [
        "get",
        "getset",
        "getbit",
        "geopos",
        "geoadd",
        "geohash",
        "geodist",
        "getrange",
        "georadius",
        "georadiusbymember",
    ]

    c = IRedisCompleter(completion_casing="auto")
    fake_document.text = fake_document.text_before_cursor = "GET"
    assert [
        completion.text
        for completion in c.get_completions(fake_document, None)
    ] == ["GET", "GETSET", "GETBIT", "GETRANGE"]

    c = IRedisCompleter(completion_casing="upper")
    fake_document.text = fake_document.text_before_cursor = "get"
    assert [
        completion.text
        for completion in c.get_completions(fake_document, None)
    ] == ["GET", "GETSET", "GETBIT", "GETRANGE"]

    c = IRedisCompleter(completion_casing="lower")
    fake_document.text = fake_document.text_before_cursor = "GET"
    assert [
        completion.text
        for completion in c.get_completions(fake_document, None)
    ] == ["get", "getset", "getbit", "getrange"]
예제 #17
0
def test_iredis_completer_no_exception_for_none_response():
    c = IRedisCompleter()
    c.update_completer_for_response("XPENDING", None)
    c.update_completer_for_response("KEYS", None)
예제 #18
0
def completer():
    return IRedisCompleter()