57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
import logging
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from t_tech.invest import (
|
|
EditFavoritesActionType,
|
|
EditFavoritesRequest as DataclassModel,
|
|
)
|
|
from t_tech.invest._grpc_helpers import protobuf_to_dataclass
|
|
from t_tech.invest.grpc.instruments_pb2 import EditFavoritesRequest as ProtoModel
|
|
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
|
|
|
|
@pytest.fixture()
|
|
def unsupported_model() -> ProtoModel:
|
|
pb_obj = ProtoModel()
|
|
pb_obj.action_type = 137
|
|
return pb_obj
|
|
|
|
|
|
class TestProtobufToDataclass:
|
|
def test_protobuf_to_dataclass_does_not_raise_by_default(
|
|
self, unsupported_model: ProtoModel, caplog
|
|
):
|
|
expected = EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED
|
|
|
|
actual = protobuf_to_dataclass(
|
|
pb_obj=unsupported_model, dataclass_type=DataclassModel
|
|
).action_type
|
|
|
|
assert expected == actual
|
|
|
|
@pytest.mark.parametrize("use_default_enum_if_error", ["True", "true", "1"])
|
|
def test_protobuf_to_dataclass_does_not_raise_when_set_true(
|
|
self, unsupported_model: ProtoModel, use_default_enum_if_error: str
|
|
):
|
|
expected = EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED
|
|
|
|
os.environ["USE_DEFAULT_ENUM_IF_ERROR"] = use_default_enum_if_error
|
|
actual = protobuf_to_dataclass(
|
|
pb_obj=unsupported_model, dataclass_type=DataclassModel
|
|
).action_type
|
|
|
|
assert expected == actual
|
|
|
|
@pytest.mark.parametrize("use_default_enum_if_error", ["False", "false", "0"])
|
|
def test_protobuf_to_dataclass_does_raise_when_set_false(
|
|
self, unsupported_model: ProtoModel, use_default_enum_if_error: str
|
|
):
|
|
os.environ["USE_DEFAULT_ENUM_IF_ERROR"] = use_default_enum_if_error
|
|
with pytest.raises(ValueError):
|
|
_ = protobuf_to_dataclass(
|
|
pb_obj=unsupported_model, dataclass_type=DataclassModel
|
|
).action_type
|