mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-05-06 22:12:12 +08:00
* Unit test batch 1 * CLI controller * Test batch 3 * Test batch 4 * Test batch 5 * clean some workflows and setup actions * test * rename wfs * rename * update action * Skip * fix cli tests --------- Co-authored-by: Henrique Joaquim <henriquecjoaquim@gmail.com> Co-authored-by: Diogo Sousa <montezdesousa@gmail.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
"""Test the Config completer."""
|
|
|
|
import pytest
|
|
from openbb_cli.config.completer import WordCompleter
|
|
from prompt_toolkit.completion import CompleteEvent
|
|
from prompt_toolkit.document import Document
|
|
|
|
# pylint: disable=redefined-outer-name, import-outside-toplevel
|
|
|
|
|
|
@pytest.fixture
|
|
def word_completer():
|
|
"""Return a simple word completer."""
|
|
words = ["test", "example", "demo"]
|
|
return WordCompleter(words, ignore_case=True)
|
|
|
|
|
|
def test_word_completer_simple(word_completer):
|
|
"""Test the word completer with a simple word list."""
|
|
doc = Document(text="ex", cursor_position=2)
|
|
completions = list(word_completer.get_completions(doc, CompleteEvent()))
|
|
assert len(completions) == 1
|
|
assert completions[0].text == "example"
|
|
|
|
|
|
def test_word_completer_case_insensitive(word_completer):
|
|
"""Test the word completer with case-insensitive matching."""
|
|
doc = Document(text="Ex", cursor_position=2)
|
|
completions = list(word_completer.get_completions(doc, CompleteEvent()))
|
|
assert len(completions) == 1
|
|
assert completions[0].text == "example"
|
|
|
|
|
|
def test_word_completer_no_match(word_completer):
|
|
"""Test the word completer with no matches."""
|
|
doc = Document(text="xyz", cursor_position=3)
|
|
completions = list(word_completer.get_completions(doc, CompleteEvent()))
|
|
assert len(completions) == 0
|
|
|
|
|
|
@pytest.fixture
|
|
def nested_completer():
|
|
"""Return a nested completer."""
|
|
from openbb_cli.config.completer import NestedCompleter
|
|
|
|
data = {
|
|
"show": {
|
|
"version": None,
|
|
"interfaces": None,
|
|
"clock": None,
|
|
"ip": {"interface": {"brief": None}},
|
|
},
|
|
"exit": None,
|
|
"enable": None,
|
|
}
|
|
return NestedCompleter.from_nested_dict(data)
|
|
|
|
|
|
def test_nested_completer_root_command(nested_completer):
|
|
"""Test the nested completer with a root command."""
|
|
doc = Document(text="sh", cursor_position=2)
|
|
completions = list(nested_completer.get_completions(doc, CompleteEvent()))
|
|
assert "show" in [c.text for c in completions]
|
|
|
|
|
|
def test_nested_completer_sub_command(nested_completer):
|
|
"""Test the nested completer with a sub-command."""
|
|
doc = Document(text="show ", cursor_position=5)
|
|
completions = list(nested_completer.get_completions(doc, CompleteEvent()))
|
|
assert "version" in [c.text for c in completions]
|
|
assert "interfaces" in [c.text for c in completions]
|
|
|
|
|
|
def test_nested_completer_no_match(nested_completer):
|
|
"""Test the nested completer with no matches."""
|
|
doc = Document(text="random ", cursor_position=7)
|
|
completions = list(nested_completer.get_completions(doc, CompleteEvent()))
|
|
assert len(completions) == 0
|