|
|
@@ -4,16 +4,19 @@ Tests for the Vehicles Service.
|
|
|
import pytest
|
|
|
from unittest.mock import Mock
|
|
|
|
|
|
-from metadata_manager import Vehicle
|
|
|
-from metadata_manager.versions_fetcher import VersionInfo, RemoteInfo
|
|
|
+from metadata_manager import (
|
|
|
+ RemoteInfo,
|
|
|
+ Vehicle,
|
|
|
+ VersionInfo,
|
|
|
+)
|
|
|
from web.services.vehicles import VehiclesService
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
-def service(mock_vehicles_manager, mock_versions_fetcher, mock_ap_src_metadata_fetcher, mock_git_repo):
|
|
|
+def service(mock_vehicles_manager, mock_versions_manager, mock_ap_src_metadata_fetcher, mock_git_repo):
|
|
|
return VehiclesService(
|
|
|
vehicle_manager=mock_vehicles_manager,
|
|
|
- versions_fetcher=mock_versions_fetcher,
|
|
|
+ versions_manager=mock_versions_manager,
|
|
|
ap_src_metadata_fetcher=mock_ap_src_metadata_fetcher,
|
|
|
repo=mock_git_repo,
|
|
|
)
|
|
|
@@ -31,14 +34,12 @@ class TestVehiclesService:
|
|
|
id="copter",
|
|
|
name="Copter",
|
|
|
ap_source_subdir="ArduCopter",
|
|
|
- fw_server_vehicle_sdir="Copter",
|
|
|
waf_build_command="copter"
|
|
|
),
|
|
|
Vehicle(
|
|
|
id="plane",
|
|
|
name="Plane",
|
|
|
ap_source_subdir="ArduPlane",
|
|
|
- fw_server_vehicle_sdir="Plane",
|
|
|
waf_build_command="plane"
|
|
|
),
|
|
|
]
|
|
|
@@ -64,7 +65,6 @@ class TestVehiclesService:
|
|
|
id="copter",
|
|
|
name="Copter",
|
|
|
ap_source_subdir="ArduCopter",
|
|
|
- fw_server_vehicle_sdir="Copter",
|
|
|
waf_build_command="copter"
|
|
|
),
|
|
|
]
|
|
|
@@ -80,21 +80,18 @@ class TestVehiclesService:
|
|
|
id="plane",
|
|
|
name="Plane",
|
|
|
ap_source_subdir="ArduPlane",
|
|
|
- fw_server_vehicle_sdir="Plane",
|
|
|
waf_build_command="plane"
|
|
|
),
|
|
|
Vehicle(
|
|
|
id="copter",
|
|
|
name="Copter",
|
|
|
ap_source_subdir="ArduCopter",
|
|
|
- fw_server_vehicle_sdir="Copter",
|
|
|
waf_build_command="copter"
|
|
|
),
|
|
|
Vehicle(
|
|
|
id="rover",
|
|
|
name="Rover",
|
|
|
ap_source_subdir="ArduRover",
|
|
|
- fw_server_vehicle_sdir="Rover",
|
|
|
waf_build_command="rover"
|
|
|
),
|
|
|
]
|
|
|
@@ -118,7 +115,6 @@ class TestVehiclesService:
|
|
|
id="copter",
|
|
|
name="Copter",
|
|
|
ap_source_subdir="ArduCopter",
|
|
|
- fw_server_vehicle_sdir="Copter",
|
|
|
waf_build_command="copter"
|
|
|
)
|
|
|
vehicle = service.get_vehicle("copter")
|
|
|
@@ -143,16 +139,16 @@ class TestVehiclesService:
|
|
|
|
|
|
# Tests for get_versions
|
|
|
|
|
|
- def test_get_versions_empty(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_versions_empty(self, service, mock_versions_manager):
|
|
|
"""Test that an empty list is returned when no versions exist."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = []
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = []
|
|
|
versions = service.get_versions("copter")
|
|
|
|
|
|
assert versions == []
|
|
|
|
|
|
- def test_get_versions_single(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_versions_single(self, service, mock_versions_manager):
|
|
|
"""Test fetching versions when only one version exists."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/heads/master",
|
|
|
@@ -165,9 +161,9 @@ class TestVehiclesService:
|
|
|
|
|
|
assert len(versions) == 1
|
|
|
|
|
|
- def test_get_versions_many(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_versions_many(self, service, mock_versions_manager):
|
|
|
"""Test fetching versions when multiple versions exist."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/heads/master",
|
|
|
@@ -194,9 +190,9 @@ class TestVehiclesService:
|
|
|
|
|
|
assert len(versions) == 3
|
|
|
|
|
|
- def test_get_versions_sorted_by_name(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_versions_sorted_by_name(self, service, mock_versions_manager):
|
|
|
"""Test that versions are returned sorted by their display name."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.5.0",
|
|
|
@@ -225,21 +221,21 @@ class TestVehiclesService:
|
|
|
assert names == sorted(names)
|
|
|
|
|
|
def test_get_versions_calls_fetcher_once_with_correct_vehicle_id(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that get_versions calls the fetcher exactly once with the correct vehicle_id."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = []
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = []
|
|
|
service.get_versions("copter")
|
|
|
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.assert_called_once_with(
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.assert_called_once_with(
|
|
|
vehicle_id="copter"
|
|
|
)
|
|
|
|
|
|
def test_get_versions_type_filter_keeps_matching(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that type_filter returns only versions of the specified type."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.5.0",
|
|
|
@@ -268,10 +264,10 @@ class TestVehiclesService:
|
|
|
assert versions[0].type == "stable"
|
|
|
|
|
|
def test_get_versions_type_filter_excludes_non_matching(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that type_filter excludes versions that do not match."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.5.0",
|
|
|
@@ -292,10 +288,10 @@ class TestVehiclesService:
|
|
|
assert versions == []
|
|
|
|
|
|
def test_get_versions_type_filter_none_returns_all(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that passing no type_filter returns all versions."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.5.0",
|
|
|
@@ -323,10 +319,10 @@ class TestVehiclesService:
|
|
|
assert len(versions) == 3
|
|
|
|
|
|
def test_get_versions_type_filter_multiple_matches(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that type_filter returns all versions matching the type when there are multiple."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.4.0",
|
|
|
@@ -355,10 +351,10 @@ class TestVehiclesService:
|
|
|
assert all(v.type == "stable" for v in versions)
|
|
|
|
|
|
def test_get_versions_latest_name_format(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that latest versions have the correct display name format."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/heads/master",
|
|
|
@@ -372,10 +368,10 @@ class TestVehiclesService:
|
|
|
assert versions[0].name == "Latest (ardupilot)"
|
|
|
|
|
|
def test_get_versions_non_latest_name_format(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that non-latest versions have the correct display name format."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.5.0",
|
|
|
@@ -390,7 +386,7 @@ class TestVehiclesService:
|
|
|
|
|
|
# Tests for get_version
|
|
|
|
|
|
- def test_get_version_found(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_version_found(self, service, mock_versions_manager):
|
|
|
"""Test that the correct version is returned when it exists."""
|
|
|
version_info = VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
@@ -399,16 +395,16 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [version_info]
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [version_info]
|
|
|
|
|
|
result = service.get_version("copter", version_info.version_id)
|
|
|
|
|
|
assert result is not None
|
|
|
assert result.id == version_info.version_id
|
|
|
|
|
|
- def test_get_version_not_found(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_version_not_found(self, service, mock_versions_manager):
|
|
|
"""Test that None is returned when the version does not exist."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
commit_ref="refs/tags/Copter-4.5.0",
|
|
|
@@ -422,15 +418,15 @@ class TestVehiclesService:
|
|
|
|
|
|
assert result is None
|
|
|
|
|
|
- def test_get_version_no_versions_available(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_version_no_versions_available(self, service, mock_versions_manager):
|
|
|
"""Test that None is returned when there are no versions at all."""
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = []
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = []
|
|
|
|
|
|
result = service.get_version("copter", "any-version-id")
|
|
|
|
|
|
assert result is None
|
|
|
|
|
|
- def test_get_version_returns_correct_match_among_many(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_version_returns_correct_match_among_many(self, service, mock_versions_manager):
|
|
|
"""Test that only the matching version is returned when multiple exist."""
|
|
|
stable_info = VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
@@ -453,7 +449,7 @@ class TestVehiclesService:
|
|
|
version_number="NA",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_versions_for_vehicle.return_value = [
|
|
|
+ mock_versions_manager.get_versions_for_vehicle.return_value = [
|
|
|
stable_info, beta_info, latest_info,
|
|
|
]
|
|
|
|
|
|
@@ -465,29 +461,29 @@ class TestVehiclesService:
|
|
|
|
|
|
# Tests for get_boards
|
|
|
|
|
|
- def test_get_boards_version_not_found_returns_empty(self, service, mock_versions_fetcher):
|
|
|
+ def test_get_boards_version_not_found_returns_empty(self, service, mock_versions_manager):
|
|
|
"""Test that an empty list is returned when the version does not exist."""
|
|
|
- mock_versions_fetcher.get_version_info.return_value = None
|
|
|
+ mock_versions_manager.get_version_info.return_value = None
|
|
|
|
|
|
result = service.get_boards("copter", "nonexistent-version-id")
|
|
|
|
|
|
assert result == []
|
|
|
|
|
|
def test_get_boards_version_info_queried_with_correct_params(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that get_version_info is called with the correct vehicle and version IDs."""
|
|
|
- mock_versions_fetcher.get_version_info.return_value = None
|
|
|
+ mock_versions_manager.get_version_info.return_value = None
|
|
|
|
|
|
service.get_boards("copter", "some-version-id")
|
|
|
|
|
|
- mock_versions_fetcher.get_version_info.assert_called_once_with(
|
|
|
+ mock_versions_manager.get_version_info.assert_called_once_with(
|
|
|
vehicle_id="copter",
|
|
|
version_id="some-version-id",
|
|
|
)
|
|
|
|
|
|
def test_get_boards_empty(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that an empty list is returned when there are no boards for a version."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -497,7 +493,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = []
|
|
|
|
|
|
result = service.get_boards("copter", version_info.version_id)
|
|
|
@@ -505,7 +501,7 @@ class TestVehiclesService:
|
|
|
assert result == []
|
|
|
|
|
|
def test_get_boards_single(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a single board is returned correctly."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -515,7 +511,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = ["CubeRed"]
|
|
|
|
|
|
result = service.get_boards("copter", version_info.version_id)
|
|
|
@@ -525,7 +521,7 @@ class TestVehiclesService:
|
|
|
assert result[0].name == "CubeRed"
|
|
|
|
|
|
def test_get_boards_many(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that multiple boards are returned correctly."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -535,7 +531,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = [
|
|
|
"CubeRed", "CubeOrange", "MatekF405",
|
|
|
]
|
|
|
@@ -546,7 +542,7 @@ class TestVehiclesService:
|
|
|
assert [b.id for b in result] == ["CubeRed", "CubeOrange", "MatekF405"]
|
|
|
|
|
|
def test_get_boards_sets_correct_vehicle_and_version_ids(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that returned boards carry the correct vehicle_id and version_id."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -556,7 +552,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = ["CubeRed"]
|
|
|
|
|
|
result = service.get_boards("copter", version_info.version_id)
|
|
|
@@ -565,7 +561,7 @@ class TestVehiclesService:
|
|
|
assert result[0].version_id == version_info.version_id
|
|
|
|
|
|
def test_get_boards_fetcher_called_with_correct_params(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that the metadata fetcher is called with remote name, commit ref, and vehicle ID from version info."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -575,7 +571,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = []
|
|
|
|
|
|
service.get_boards("copter", version_info.version_id)
|
|
|
@@ -588,7 +584,7 @@ class TestVehiclesService:
|
|
|
|
|
|
# Tests for get_board
|
|
|
|
|
|
- def test_get_board_found(self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher):
|
|
|
+ def test_get_board_found(self, service, mock_versions_manager, mock_ap_src_metadata_fetcher):
|
|
|
"""Test that the correct board is returned when it exists."""
|
|
|
version_info = VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
@@ -597,7 +593,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = ["CubeRed", "CubeOrange"]
|
|
|
|
|
|
result = service.get_board("copter", version_info.version_id, "CubeRed")
|
|
|
@@ -608,7 +604,7 @@ class TestVehiclesService:
|
|
|
assert result.vehicle_id == "copter"
|
|
|
assert result.version_id == version_info.version_id
|
|
|
|
|
|
- def test_get_board_not_found(self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher):
|
|
|
+ def test_get_board_not_found(self, service, mock_versions_manager, mock_ap_src_metadata_fetcher):
|
|
|
"""Test that None is returned when the board does not exist."""
|
|
|
version_info = VersionInfo(
|
|
|
remote_info=RemoteInfo(name="ardupilot", url="https://github.com/ArduPilot/ardupilot.git"),
|
|
|
@@ -617,7 +613,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = ["CubeRed", "CubeOrange"]
|
|
|
|
|
|
result = service.get_board("copter", version_info.version_id, "NonExistentBoard")
|
|
|
@@ -625,7 +621,7 @@ class TestVehiclesService:
|
|
|
assert result is None
|
|
|
|
|
|
def test_get_board_returns_correct_match_among_many(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that only the matching board is returned when multiple boards exist."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -635,7 +631,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_boards.return_value = [
|
|
|
"CubeRed", "CubeOrange", "MatekF405",
|
|
|
]
|
|
|
@@ -648,17 +644,17 @@ class TestVehiclesService:
|
|
|
# Tests for get_features
|
|
|
|
|
|
def test_get_features_version_not_found_returns_empty(
|
|
|
- self, service, mock_versions_fetcher
|
|
|
+ self, service, mock_versions_manager
|
|
|
):
|
|
|
"""Test that an empty list is returned when the version does not exist."""
|
|
|
- mock_versions_fetcher.get_version_info.return_value = None
|
|
|
+ mock_versions_manager.get_version_info.return_value = None
|
|
|
|
|
|
result = service.get_features("copter", "nonexistent-version-id", "CubeRed")
|
|
|
|
|
|
assert result == []
|
|
|
|
|
|
def test_get_features_zero_options_returns_empty(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that an empty list is returned when there are no build options."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -668,7 +664,7 @@ class TestVehiclesService:
|
|
|
version_number="4.5.0",
|
|
|
ap_build_artifacts_url=None,
|
|
|
)
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = []
|
|
|
|
|
|
result = service.get_features("copter", version_info.version_id, "CubeRed")
|
|
|
@@ -676,7 +672,7 @@ class TestVehiclesService:
|
|
|
assert result == []
|
|
|
|
|
|
def test_get_features_one_option(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a single feature is returned correctly."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -693,7 +689,7 @@ class TestVehiclesService:
|
|
|
opt.description = ""
|
|
|
opt.default = 1
|
|
|
opt.dependency = None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -704,7 +700,7 @@ class TestVehiclesService:
|
|
|
assert result[0].name == "HAL_LOGGING_ENABLED"
|
|
|
|
|
|
def test_get_features_many_options(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that all features are returned when multiple options exist."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -723,7 +719,7 @@ class TestVehiclesService:
|
|
|
opt_sensors = Mock()
|
|
|
opt_sensors.label, opt_sensors.define, opt_sensors.category = "HAL_BEACON_ENABLED", "HAL_BEACON_ENABLED", "Sensors"
|
|
|
opt_sensors.description, opt_sensors.default, opt_sensors.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_logging, opt_ekf, opt_sensors]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -732,7 +728,7 @@ class TestVehiclesService:
|
|
|
assert len(result) == 3
|
|
|
|
|
|
def test_get_features_sorted_by_category(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that features are sorted by category name."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -751,7 +747,7 @@ class TestVehiclesService:
|
|
|
opt_m = Mock()
|
|
|
opt_m.label, opt_m.define, opt_m.category = "FEATURE_M", "DEFINE_M", "Logging"
|
|
|
opt_m.description, opt_m.default, opt_m.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_z, opt_a, opt_m]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -760,7 +756,7 @@ class TestVehiclesService:
|
|
|
assert [f.category.name for f in result] == ["EKF", "Logging", "Sensors"]
|
|
|
|
|
|
def test_get_features_uses_fallback_defaults_when_no_artifacts_url(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that build-options-py defaults are used when ap_build_artifacts_url is None."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -776,7 +772,7 @@ class TestVehiclesService:
|
|
|
opt_off = Mock()
|
|
|
opt_off.label, opt_off.define, opt_off.category = "FEATURE_OFF", "DEFINE_OFF", "Cat"
|
|
|
opt_off.description, opt_off.default, opt_off.dependency = "", 0, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_on, opt_off]
|
|
|
|
|
|
result = service.get_features("copter", version_info.version_id, "CubeRed")
|
|
|
@@ -789,7 +785,7 @@ class TestVehiclesService:
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.assert_not_called()
|
|
|
|
|
|
def test_get_features_uses_firmware_server_defaults_when_available(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that firmware-server defaults override build-options-py when present."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -805,7 +801,7 @@ class TestVehiclesService:
|
|
|
opt_b = Mock()
|
|
|
opt_b.label, opt_b.define, opt_b.category = "FEATURE_B", "DEFINE_B", "Cat"
|
|
|
opt_b.description, opt_b.default, opt_b.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_a, opt_b]
|
|
|
# firmware server says DEFINE_A is disabled, DEFINE_B is enabled
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = {
|
|
|
@@ -822,7 +818,7 @@ class TestVehiclesService:
|
|
|
assert by_id["FEATURE_B"].source == "firmware-server"
|
|
|
|
|
|
def test_get_features_falls_back_to_defaults_when_firmware_server_returns_none(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that build-options-py fallback is used when firmware server fetch fails."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -835,7 +831,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "FEATURE_A", "DEFINE_A", "Cat"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -845,7 +841,7 @@ class TestVehiclesService:
|
|
|
assert result[0].default.source == "build-options-py"
|
|
|
|
|
|
def test_get_features_firmware_server_overrides_only_known_defines(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a define absent from firmware-server data falls back to build-options-py."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -861,7 +857,7 @@ class TestVehiclesService:
|
|
|
opt_unknown = Mock()
|
|
|
opt_unknown.label, opt_unknown.define, opt_unknown.category = "FEATURE_UNKNOWN", "DEFINE_UNKNOWN", "Cat"
|
|
|
opt_unknown.description, opt_unknown.default, opt_unknown.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_known, opt_unknown]
|
|
|
# firmware server only knows about DEFINE_KNOWN
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = {
|
|
|
@@ -877,7 +873,7 @@ class TestVehiclesService:
|
|
|
assert by_id["FEATURE_UNKNOWN"].source == "build-options-py"
|
|
|
|
|
|
def test_get_features_dependency_none(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a feature with no dependency produces an empty dependencies list."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -890,7 +886,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "FEATURE_A", "DEFINE_A", "Cat"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -899,7 +895,7 @@ class TestVehiclesService:
|
|
|
assert result[0].dependencies == []
|
|
|
|
|
|
def test_get_features_dependency_single(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a single dependency string is parsed into a one-element list."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -912,7 +908,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "FEATURE_A", "DEFINE_A", "Cat"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, "DEP_ONE"
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -921,7 +917,7 @@ class TestVehiclesService:
|
|
|
assert result[0].dependencies == ["DEP_ONE"]
|
|
|
|
|
|
def test_get_features_dependency_multiple_comma_separated(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a comma-separated dependency string is split into multiple entries."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -934,7 +930,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "FEATURE_A", "DEFINE_A", "Cat"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, "DEP_ONE,DEP_TWO,DEP_THREE"
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -943,7 +939,7 @@ class TestVehiclesService:
|
|
|
assert result[0].dependencies == ["DEP_ONE", "DEP_TWO", "DEP_THREE"]
|
|
|
|
|
|
def test_get_features_dependency_with_spaces(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that spaces around dependency labels are stripped."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -956,7 +952,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "FEATURE_A", "DEFINE_A", "Cat"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, "DEP_ONE , DEP_TWO , DEP_THREE"
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -965,7 +961,7 @@ class TestVehiclesService:
|
|
|
assert result[0].dependencies == ["DEP_ONE", "DEP_TWO", "DEP_THREE"]
|
|
|
|
|
|
def test_get_features_ids_filled_correctly(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that vehicle_id, version_id, and board_id are correctly set on each feature."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -978,7 +974,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "FEATURE_A", "DEFINE_A", "Cat"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -989,7 +985,7 @@ class TestVehiclesService:
|
|
|
assert result[0].board_id == "CubeRed"
|
|
|
|
|
|
def test_get_features_category_filter_keeps_matching(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that category_id filter returns only features whose category matches."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -1008,7 +1004,7 @@ class TestVehiclesService:
|
|
|
opt_sensors = Mock()
|
|
|
opt_sensors.label, opt_sensors.define, opt_sensors.category = "HAL_BEACON_ENABLED", "HAL_BEACON_ENABLED", "Sensors"
|
|
|
opt_sensors.description, opt_sensors.default, opt_sensors.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_logging, opt_ekf, opt_sensors]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -1019,7 +1015,7 @@ class TestVehiclesService:
|
|
|
assert result[0].category.name == "Logging"
|
|
|
|
|
|
def test_get_features_category_filter_excludes_non_matching(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that category_id filter excludes features whose category does not match."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -1035,7 +1031,7 @@ class TestVehiclesService:
|
|
|
opt_ekf = Mock()
|
|
|
opt_ekf.label, opt_ekf.define, opt_ekf.category = "HAL_NAVEKF3_AVAILABLE", "HAL_NAVEKF3_AVAILABLE", "EKF"
|
|
|
opt_ekf.description, opt_ekf.default, opt_ekf.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_logging, opt_ekf]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -1044,7 +1040,7 @@ class TestVehiclesService:
|
|
|
assert result == []
|
|
|
|
|
|
def test_get_features_category_filter_no_matches_returns_empty(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that a category_id with no matching features returns an empty list."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -1060,7 +1056,7 @@ class TestVehiclesService:
|
|
|
opt_b = Mock()
|
|
|
opt_b.label, opt_b.define, opt_b.category = "FEATURE_B", "DEFINE_B", "Logging"
|
|
|
opt_b.description, opt_b.default, opt_b.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_a, opt_b]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -1071,7 +1067,7 @@ class TestVehiclesService:
|
|
|
# Tests for get_feature
|
|
|
|
|
|
def test_get_feature_found(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that the correct feature is returned when it exists."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -1084,7 +1080,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "HAL_LOGGING_ENABLED", "HAL_LOGGING_ENABLED", "Logging"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -1095,7 +1091,7 @@ class TestVehiclesService:
|
|
|
assert result.name == "HAL_LOGGING_ENABLED"
|
|
|
|
|
|
def test_get_feature_not_found(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that None is returned when the feature does not exist."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -1108,7 +1104,7 @@ class TestVehiclesService:
|
|
|
opt = Mock()
|
|
|
opt.label, opt.define, opt.category = "HAL_LOGGING_ENABLED", "HAL_LOGGING_ENABLED", "Logging"
|
|
|
opt.description, opt.default, opt.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|
|
|
@@ -1117,7 +1113,7 @@ class TestVehiclesService:
|
|
|
assert result is None
|
|
|
|
|
|
def test_get_feature_returns_correct_match_among_many(
|
|
|
- self, service, mock_versions_fetcher, mock_ap_src_metadata_fetcher
|
|
|
+ self, service, mock_versions_manager, mock_ap_src_metadata_fetcher
|
|
|
):
|
|
|
"""Test that only the matching feature is returned when multiple features exist."""
|
|
|
version_info = VersionInfo(
|
|
|
@@ -1136,7 +1132,7 @@ class TestVehiclesService:
|
|
|
opt_c = Mock()
|
|
|
opt_c.label, opt_c.define, opt_c.category = "FEATURE_C", "DEFINE_C", "Cat"
|
|
|
opt_c.description, opt_c.default, opt_c.dependency = "", 1, None
|
|
|
- mock_versions_fetcher.get_version_info.return_value = version_info
|
|
|
+ mock_versions_manager.get_version_info.return_value = version_info
|
|
|
mock_ap_src_metadata_fetcher.get_build_options_at_commit.return_value = [opt_a, opt_b, opt_c]
|
|
|
mock_ap_src_metadata_fetcher.get_board_defaults_from_fw_server.return_value = None
|
|
|
|