Use betterproto wrapper classes, extract to module for testability
This commit is contained in:
0
betterproto/tests/__init__.py
Normal file
0
betterproto/tests/__init__.py
Normal file
@@ -8,7 +8,6 @@ tests = {
|
||||
"import_circular_dependency", # failing because of other bugs now
|
||||
"import_packages_same_name", # 25
|
||||
"oneof_enum", # 63
|
||||
"googletypes_service_returns_empty", # 9
|
||||
"casing_message_field_uppercase", # 11
|
||||
"namespace_keywords", # 70
|
||||
"namespace_builtin_types", # 53
|
||||
@@ -22,4 +21,5 @@ services = {
|
||||
"service",
|
||||
"import_service_input_message",
|
||||
"googletypes_service_returns_empty",
|
||||
"googletypes_service_returns_googletype",
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from typing import Any, Callable, Optional
|
||||
|
||||
import google.protobuf.wrappers_pb2 as wrappers
|
||||
import betterproto.lib.google.protobuf as protobuf
|
||||
import pytest
|
||||
|
||||
from betterproto.tests.mocks import MockChannel
|
||||
@@ -9,15 +9,15 @@ from betterproto.tests.output_betterproto.googletypes_response.googletypes_respo
|
||||
)
|
||||
|
||||
test_cases = [
|
||||
(TestStub.get_double, wrappers.DoubleValue, 2.5),
|
||||
(TestStub.get_float, wrappers.FloatValue, 2.5),
|
||||
(TestStub.get_int64, wrappers.Int64Value, -64),
|
||||
(TestStub.get_u_int64, wrappers.UInt64Value, 64),
|
||||
(TestStub.get_int32, wrappers.Int32Value, -32),
|
||||
(TestStub.get_u_int32, wrappers.UInt32Value, 32),
|
||||
(TestStub.get_bool, wrappers.BoolValue, True),
|
||||
(TestStub.get_string, wrappers.StringValue, "string"),
|
||||
(TestStub.get_bytes, wrappers.BytesValue, bytes(0xFF)[0:4]),
|
||||
(TestStub.get_double, protobuf.DoubleValue, 2.5),
|
||||
(TestStub.get_float, protobuf.FloatValue, 2.5),
|
||||
(TestStub.get_int64, protobuf.Int64Value, -64),
|
||||
(TestStub.get_u_int64, protobuf.UInt64Value, 64),
|
||||
(TestStub.get_int32, protobuf.Int32Value, -32),
|
||||
(TestStub.get_u_int32, protobuf.UInt32Value, 32),
|
||||
(TestStub.get_bool, protobuf.BoolValue, True),
|
||||
(TestStub.get_string, protobuf.StringValue, "string"),
|
||||
(TestStub.get_bytes, protobuf.BytesValue, bytes(0xFF)[0:4]),
|
||||
]
|
||||
|
||||
|
||||
|
||||
82
betterproto/tests/test_get_ref_type.py
Normal file
82
betterproto/tests/test_get_ref_type.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import pytest
|
||||
|
||||
from ..compile.importing import get_ref_type
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
["google_type", "expected_name", "expected_import"],
|
||||
[
|
||||
(
|
||||
".google.protobuf.Empty",
|
||||
"betterproto_lib_google_protobuf.Empty",
|
||||
"import betterproto.lib.google.protobuf as betterproto_lib_google_protobuf",
|
||||
),
|
||||
(
|
||||
".google.protobuf.Struct",
|
||||
"betterproto_lib_google_protobuf.Struct",
|
||||
"import betterproto.lib.google.protobuf as betterproto_lib_google_protobuf",
|
||||
),
|
||||
(
|
||||
".google.protobuf.ListValue",
|
||||
"betterproto_lib_google_protobuf.ListValue",
|
||||
"import betterproto.lib.google.protobuf as betterproto_lib_google_protobuf",
|
||||
),
|
||||
(
|
||||
".google.protobuf.Value",
|
||||
"betterproto_lib_google_protobuf.Value",
|
||||
"import betterproto.lib.google.protobuf as betterproto_lib_google_protobuf",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_import_google_wellknown_types_non_wrappers(
|
||||
google_type: str, expected_name: str, expected_import: str
|
||||
):
|
||||
imports = set()
|
||||
name = get_ref_type(package="", imports=imports, type_name=google_type)
|
||||
|
||||
assert name == expected_name
|
||||
assert imports.__contains__(expected_import)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
["google_type", "expected_name"],
|
||||
[
|
||||
(".google.protobuf.DoubleValue", "Optional[float]"),
|
||||
(".google.protobuf.FloatValue", "Optional[float]"),
|
||||
(".google.protobuf.Int32Value", "Optional[int]"),
|
||||
(".google.protobuf.Int64Value", "Optional[int]"),
|
||||
(".google.protobuf.UInt32Value", "Optional[int]"),
|
||||
(".google.protobuf.UInt64Value", "Optional[int]"),
|
||||
(".google.protobuf.BoolValue", "Optional[bool]"),
|
||||
(".google.protobuf.StringValue", "Optional[str]"),
|
||||
(".google.protobuf.BytesValue", "Optional[bytes]"),
|
||||
],
|
||||
)
|
||||
def test_importing_google_wrappers_unwraps_them(google_type: str, expected_name: str):
|
||||
imports = set()
|
||||
name = get_ref_type(package="", imports=imports, type_name=google_type)
|
||||
|
||||
assert name == expected_name
|
||||
assert imports == set()
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
["google_type", "expected_name"],
|
||||
[
|
||||
(".google.protobuf.DoubleValue", "betterproto_lib_google_protobuf.DoubleValue"),
|
||||
(".google.protobuf.FloatValue", "betterproto_lib_google_protobuf.FloatValue"),
|
||||
(".google.protobuf.Int32Value", "betterproto_lib_google_protobuf.Int32Value"),
|
||||
(".google.protobuf.Int64Value", "betterproto_lib_google_protobuf.Int64Value"),
|
||||
(".google.protobuf.UInt32Value", "betterproto_lib_google_protobuf.UInt32Value"),
|
||||
(".google.protobuf.UInt64Value", "betterproto_lib_google_protobuf.UInt64Value"),
|
||||
(".google.protobuf.BoolValue", "betterproto_lib_google_protobuf.BoolValue"),
|
||||
(".google.protobuf.StringValue", "betterproto_lib_google_protobuf.StringValue"),
|
||||
(".google.protobuf.BytesValue", "betterproto_lib_google_protobuf.BytesValue"),
|
||||
],
|
||||
)
|
||||
def test_importing_google_wrappers_without_unwrapping(
|
||||
google_type: str, expected_name: str
|
||||
):
|
||||
name = get_ref_type(package="", imports=set(), type_name=google_type, unwrap=False)
|
||||
|
||||
assert name == expected_name
|
||||
Reference in New Issue
Block a user