test for issue #305, marked with xfail (#306)

This commit is contained in:
Girts 2023-10-15 20:18:24 -07:00 committed by GitHub
parent 8b5dd6c1f8
commit 61d192e207
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 1 deletions

View File

@ -2,6 +2,10 @@ syntax = "proto3";
package oneof;
message MixedDrink {
int32 shots = 1;
}
message Test {
oneof foo {
int32 pitied = 1;
@ -13,6 +17,7 @@ message Test {
oneof bar {
int32 drinks = 11;
string bar_name = 12;
MixedDrink mixed_drink = 13;
}
}

View File

@ -1,5 +1,10 @@
import pytest
import betterproto
from tests.output_betterproto.oneof import Test
from tests.output_betterproto.oneof import (
MixedDrink,
Test,
)
from tests.output_betterproto_pydantic.oneof import Test as TestPyd
from tests.util import get_test_case_json_data
@ -19,3 +24,20 @@ def test_which_name():
def test_which_count_pyd():
message = TestPyd(pitier="Mr. T", just_a_regular_field=2, bar_name="a_bar")
assert betterproto.which_one_of(message, "foo") == ("pitier", "Mr. T")
def test_oneof_constructor_assign():
message = Test(mixed_drink=MixedDrink(shots=42))
field, value = betterproto.which_one_of(message, "bar")
assert field == "mixed_drink"
assert value.shots == 42
# Issue #305:
@pytest.mark.xfail
def test_oneof_nested_assign():
message = Test()
message.mixed_drink.shots = 42
field, value = betterproto.which_one_of(message, "bar")
assert field == "mixed_drink"
assert value.shots == 42