Skip to content

Commit 3ce5a59

Browse files
committed
test(app): add stubs search tests
Signed-off-by: Braden Mars <[email protected]>
1 parent 8373f28 commit 3ce5a59

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

tests/app/test_stubs.py

+47
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from micropy.app.stubs import stubs_app as app
66
from micropy.exceptions import StubError, StubNotFound
77
from micropy.pyd import PyDevice
8+
from micropy.stubs import StubRepositoryPackage
89
from micropy.stubs.source import StubSource
910
from pytest_mock import MockerFixture
1011
from stubber.codemod.modify_list import ListChangeSet
@@ -50,6 +51,24 @@ def stubs_locator_mock(mocker: MockerFixture):
5051
return stubs_locator
5152

5253

54+
@pytest.fixture()
55+
def stub_search_data(mocker: MockerFixture):
56+
stub1 = mocker.MagicMock(StubRepositoryPackage, autospec=True)
57+
stub2 = mocker.MagicMock(StubRepositoryPackage, autospec=True)
58+
stub3 = mocker.MagicMock(StubRepositoryPackage, autospec=True)
59+
stub1.name = "test1"
60+
stub1.version = "1.0.0"
61+
stub2.name = "test2"
62+
stub2.version = "1.1.0"
63+
stub3.name = "test3"
64+
stub3.version = "0.9.0"
65+
return [
66+
stub1,
67+
stub2,
68+
stub3,
69+
]
70+
71+
5372
def test_stubs_create(mocker: MockerFixture, pyb_mock, micropy_obj, runner):
5473
result = runner.invoke(app, ["create", "/dev/port"], obj=micropy_obj)
5574
print(result.stdout)
@@ -117,3 +136,31 @@ def test_stubs_list(micropy_obj, runner):
117136
micropy_obj.stubs.iter_by_firmware.assert_called_once()
118137
else:
119138
assert micropy_obj.stubs.iter_by_firmware.call_count == 2
139+
140+
141+
@pytest.mark.parametrize("outdated", [True, False])
142+
def test_stubs_search(stub_search_data, micropy_obj, runner, outdated):
143+
micropy_obj.stubs._loaded = {"test1", "test3"}
144+
micropy_obj.stubs._firmware = {"test1", "test3"}
145+
micropy_obj.repo.search.return_value = stub_search_data
146+
147+
args = ["search", "test"]
148+
if outdated:
149+
args.append("--show-outdated")
150+
result = runner.invoke(app, args, obj=micropy_obj, catch_exceptions=False)
151+
152+
assert result.exit_code == 0
153+
assert "Results for test" in result.stdout
154+
assert "test1" in result.stdout
155+
assert "test2" in result.stdout
156+
assert "test3" in result.stdout
157+
assert "Installed" in result.stdout
158+
159+
160+
def test_stubs_search_no_results(mocker: MockerFixture, micropy_obj, runner):
161+
micropy_obj.repo.search.return_value = []
162+
163+
result = runner.invoke(app, ["search", "nonexistent"], obj=micropy_obj)
164+
165+
assert result.exit_code == 0
166+
assert "No results found for: nonexistent" in result.stdout

0 commit comments

Comments
 (0)