Skip to content

Commit 8b4b2f1

Browse files
authored
Add option to override group in create_attribute (#97)
* Update create_attribute method to receive group as argument * Add tests for create_attribute, with and without passing group
1 parent dee5e4d commit 8b4b2f1

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

src/fastcs_odin/util.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -274,17 +274,18 @@ def unpack_status_arrays(parameters: list[OdinParameter], uris: list[list[str]])
274274
return parameters
275275

276276

277-
def create_attribute(parameter: OdinParameter, api_prefix: str):
277+
def create_attribute(
278+
parameter: OdinParameter, api_prefix: str, group: str | None = None
279+
):
278280
"""Create ``Attribute`` from ``OdinParameter``."""
279281
if parameter.metadata.writeable:
280282
attr_class = AttrRW
281283
else:
282284
attr_class = AttrR
283285

284-
if len(parameter.path) >= 2:
285-
group = snake_to_pascal(f"{parameter.path[0]}")
286-
else:
287-
group = None
286+
if group is None:
287+
if len(parameter.path) >= 2:
288+
group = snake_to_pascal(f"{parameter.path[0]}")
288289

289290
return attr_class(
290291
parameter.metadata.fastcs_datatype,

tests/test_util.py

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
from fastcs_odin.util import create_odin_parameters
1+
import pytest
2+
from fastcs.attributes import AttrR, AttrRW
3+
from fastcs.datatypes import Int
4+
5+
from fastcs_odin.util import (
6+
OdinParameter,
7+
OdinParameterMetadata,
8+
create_attribute,
9+
create_odin_parameters,
10+
)
211

312

413
def test_create_parameters():
@@ -15,3 +24,40 @@ def test_create_parameters():
1524
}
1625
parameters = create_odin_parameters(data)
1726
assert len(parameters) == 0
27+
28+
29+
@pytest.mark.parametrize(
30+
"metadata, uri, expected_attr, group",
31+
[
32+
(
33+
OdinParameterMetadata(value=0, type="int", writeable=False),
34+
["name"],
35+
AttrR(Int(), io_ref=None, group=None),
36+
None,
37+
),
38+
(
39+
OdinParameterMetadata(value=0, type="int", writeable=True),
40+
["name"],
41+
AttrRW(Int(), io_ref=None, group=None),
42+
None,
43+
),
44+
(
45+
OdinParameterMetadata(value=0, type="int", writeable=False),
46+
["my_group", "name"],
47+
AttrR(Int(), io_ref=None, group="MyGroup"),
48+
None,
49+
),
50+
(
51+
OdinParameterMetadata(value=0, type="int", writeable=True),
52+
["my_group", "name"],
53+
AttrRW(Int(), io_ref=None, group="MyOtherGroup"),
54+
"MyOtherGroup",
55+
),
56+
],
57+
)
58+
def test_create_parameters_groups(metadata, uri, expected_attr, group):
59+
param = OdinParameter(uri, metadata)
60+
61+
attr = create_attribute(param, "test", group=group)
62+
63+
assert attr.group == expected_attr.group

0 commit comments

Comments
 (0)