|
3 | 3 | from databricks.sdk.common.types.fieldmask import FieldMask |
4 | 4 |
|
5 | 5 |
|
6 | | -def test_to_json_string_basic(): |
7 | | - """Test ToJsonString with basic list of paths.""" |
| 6 | +@pytest.mark.parametrize("input_paths,expected_result,description", [ |
| 7 | + (["field1", "field2", "field3"], "field1,field2,field3", "basic list of paths"), |
| 8 | + (["single_field"], "single_field", "single path"), |
| 9 | + ([], "", "empty paths list"), |
| 10 | + (["user.name", "user.email", "address.street"], "user.name,user.email,address.street", "nested field paths"), |
| 11 | +]) |
| 12 | +def test_to_json_string(input_paths, expected_result, description): |
| 13 | + """Test ToJsonString with various path configurations.""" |
8 | 14 | field_mask = FieldMask() |
9 | | - field_mask.paths = ["field1", "field2", "field3"] |
| 15 | + field_mask.paths = input_paths |
10 | 16 |
|
11 | 17 | result = field_mask.ToJsonString() |
12 | 18 |
|
13 | | - assert result == "field1,field2,field3" |
| 19 | + assert result == expected_result |
14 | 20 |
|
15 | 21 |
|
16 | | -def test_to_json_string_single_path(): |
17 | | - """Test ToJsonString with single path.""" |
| 22 | +@pytest.mark.parametrize("input_string,expected_paths,description", [ |
| 23 | + ("field1,field2,field3", ["field1", "field2", "field3"], "basic comma-separated string"), |
| 24 | + ("single_field", ["single_field"], "single field"), |
| 25 | + ("", [], "empty string"), |
| 26 | + ("user.name,user.email,address.street", ["user.name", "user.email", "address.street"], "nested field paths"), |
| 27 | + ("field1, field2 , field3", ["field1", " field2 ", " field3"], "spaces around commas"), |
| 28 | +]) |
| 29 | +def test_from_json_string_success_cases(input_string, expected_paths, description): |
| 30 | + """Test FromJsonString with various valid input strings.""" |
18 | 31 | field_mask = FieldMask() |
19 | | - field_mask.paths = ["single_field"] |
20 | 32 |
|
21 | | - result = field_mask.ToJsonString() |
22 | | - |
23 | | - assert result == "single_field" |
24 | | - |
25 | | - |
26 | | -def test_to_json_string_empty_paths(): |
27 | | - """Test ToJsonString with empty paths list.""" |
28 | | - field_mask = FieldMask() |
29 | | - field_mask.paths = [] |
30 | | - |
31 | | - result = field_mask.ToJsonString() |
32 | | - |
33 | | - assert result == "" |
34 | | - |
35 | | - |
36 | | -def test_to_json_string_nested_paths(): |
37 | | - """Test ToJsonString with nested field paths.""" |
38 | | - field_mask = FieldMask() |
39 | | - field_mask.paths = ["user.name", "user.email", "address.street"] |
40 | | - |
41 | | - result = field_mask.ToJsonString() |
42 | | - |
43 | | - assert result == "user.name,user.email,address.street" |
44 | | - |
45 | | - |
46 | | -def test_from_json_string_basic(): |
47 | | - """Test FromJsonString with basic comma-separated string.""" |
48 | | - field_mask = FieldMask() |
49 | | - |
50 | | - field_mask.FromJsonString("field1,field2,field3") |
51 | | - |
52 | | - assert field_mask.paths == ["field1", "field2", "field3"] |
53 | | - |
54 | | - |
55 | | -def test_from_json_string_single_field(): |
56 | | - """Test FromJsonString with single field.""" |
57 | | - field_mask = FieldMask() |
58 | | - |
59 | | - field_mask.FromJsonString("single_field") |
60 | | - |
61 | | - assert field_mask.paths == ["single_field"] |
62 | | - |
63 | | - |
64 | | -def test_from_json_string_empty_string(): |
65 | | - """Test FromJsonString with empty string.""" |
66 | | - field_mask = FieldMask() |
67 | | - |
68 | | - field_mask.FromJsonString("") |
69 | | - |
70 | | - assert field_mask.paths == [] |
71 | | - |
72 | | - |
73 | | -def test_from_json_string_nested_paths(): |
74 | | - """Test FromJsonString with nested field paths.""" |
75 | | - field_mask = FieldMask() |
76 | | - |
77 | | - field_mask.FromJsonString("user.name,user.email,address.street") |
78 | | - |
79 | | - assert field_mask.paths == ["user.name", "user.email", "address.street"] |
80 | | - |
81 | | - |
82 | | -def test_from_json_string_with_spaces(): |
83 | | - """Test FromJsonString with spaces around commas.""" |
84 | | - field_mask = FieldMask() |
85 | | - |
86 | | - field_mask.FromJsonString("field1, field2 , field3") |
| 33 | + field_mask.FromJsonString(input_string) |
87 | 34 |
|
88 | | - assert field_mask.paths == ["field1", " field2 ", " field3"] |
| 35 | + assert field_mask.paths == expected_paths |
89 | 36 |
|
90 | 37 |
|
91 | | -def test_from_json_string_non_string_input(): |
92 | | - """Test FromJsonString raises ValueError for non-string input.""" |
| 38 | +@pytest.mark.parametrize("invalid_input,expected_error_substring,description", [ |
| 39 | + (123, "FieldMask JSON value not a string: 123", "non-string integer input"), |
| 40 | + (None, "FieldMask JSON value not a string: None", "None input"), |
| 41 | + (["field1", "field2"], "FieldMask JSON value not a string:", "list input"), |
| 42 | + ({"field": "value"}, "FieldMask JSON value not a string:", "dict input"), |
| 43 | +]) |
| 44 | +def test_from_json_string_error_cases(invalid_input, expected_error_substring, description): |
| 45 | + """Test FromJsonString raises ValueError for invalid input types.""" |
93 | 46 | field_mask = FieldMask() |
94 | 47 |
|
95 | 48 | with pytest.raises(ValueError) as exc_info: |
96 | | - field_mask.FromJsonString(123) |
| 49 | + field_mask.FromJsonString(invalid_input) |
97 | 50 |
|
98 | | - assert "FieldMask JSON value not a string: 123" in str(exc_info.value) |
| 51 | + assert expected_error_substring in str(exc_info.value) |
99 | 52 |
|
100 | 53 |
|
101 | | -def test_from_json_string_none_input(): |
102 | | - """Test FromJsonString raises ValueError for None input.""" |
103 | | - field_mask = FieldMask() |
104 | | - |
105 | | - with pytest.raises(ValueError) as exc_info: |
106 | | - field_mask.FromJsonString(None) |
107 | | - |
108 | | - assert "FieldMask JSON value not a string: None" in str(exc_info.value) |
109 | | - |
110 | | - |
111 | | -def test_from_json_string_list_input(): |
112 | | - """Test FromJsonString raises ValueError for list input.""" |
113 | | - field_mask = FieldMask() |
114 | | - |
115 | | - with pytest.raises(ValueError) as exc_info: |
116 | | - field_mask.FromJsonString(["field1", "field2"]) |
117 | | - |
118 | | - assert "FieldMask JSON value not a string:" in str(exc_info.value) |
119 | | - |
120 | | - |
121 | | -def test_from_json_string_dict_input(): |
122 | | - """Test FromJsonString raises ValueError for dict input.""" |
123 | | - field_mask = FieldMask() |
124 | | - |
125 | | - with pytest.raises(ValueError) as exc_info: |
126 | | - field_mask.FromJsonString({"field": "value"}) |
127 | | - |
128 | | - assert "FieldMask JSON value not a string:" in str(exc_info.value) |
129 | | - |
130 | | - |
131 | | -def test_roundtrip_conversion(): |
| 54 | +@pytest.mark.parametrize("original_paths,description", [ |
| 55 | + (["user.name", "user.email", "profile.settings"], "multiple nested fields"), |
| 56 | + (["single_field"], "single field"), |
| 57 | + ([], "empty paths"), |
| 58 | +]) |
| 59 | +def test_roundtrip_conversion(original_paths, description): |
132 | 60 | """Test that ToJsonString and FromJsonString are inverse operations.""" |
133 | 61 | field_mask = FieldMask() |
134 | | - original_paths = ["user.name", "user.email", "profile.settings"] |
135 | | - field_mask.paths = original_paths |
136 | | - |
137 | | - # Convert to string and back. |
138 | | - json_string = field_mask.ToJsonString() |
139 | | - field_mask.FromJsonString(json_string) |
140 | | - |
141 | | - assert field_mask.paths == original_paths |
142 | | - |
143 | | - |
144 | | -def test_roundtrip_conversion_single_field(): |
145 | | - """Test roundtrip conversion with single field.""" |
146 | | - field_mask = FieldMask() |
147 | | - original_paths = ["single_field"] |
148 | | - field_mask.paths = original_paths |
149 | | - |
150 | | - # Convert to string and back. |
151 | | - json_string = field_mask.ToJsonString() |
152 | | - field_mask.FromJsonString(json_string) |
153 | | - |
154 | | - assert field_mask.paths == original_paths |
155 | | - |
156 | | - |
157 | | -def test_roundtrip_conversion_empty(): |
158 | | - """Test roundtrip conversion with empty paths.""" |
159 | | - field_mask = FieldMask() |
160 | | - original_paths = [] |
161 | 62 | field_mask.paths = original_paths |
162 | 63 |
|
163 | 64 | # Convert to string and back. |
|
0 commit comments