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", ]
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" ]
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([("", "")]), ]
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"]
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", ]
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", ]
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 )]), ]
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"]
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"]
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"]
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"]
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([("", "")]), ), ]
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", ]
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"]
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", ]
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"]
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)
def completer(): return IRedisCompleter()