Skip to content

Commit

Permalink
test for issue #305, marked with xfail (#306)
Browse files Browse the repository at this point in the history
  • Loading branch information
girtsf authored Oct 16, 2023
1 parent 8b5dd6c commit 61d192e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
5 changes: 5 additions & 0 deletions tests/inputs/oneof/oneof.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ syntax = "proto3";

package oneof;

message MixedDrink {
int32 shots = 1;
}

message Test {
oneof foo {
int32 pitied = 1;
Expand All @@ -13,6 +17,7 @@ message Test {
oneof bar {
int32 drinks = 11;
string bar_name = 12;
MixedDrink mixed_drink = 13;
}
}

24 changes: 23 additions & 1 deletion tests/inputs/oneof/test_oneof.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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

0 comments on commit 61d192e

Please sign in to comment.