Skip to content

Commit 5657023

Browse files
neilnynMariusWirtz
authored andcommitted
test: add regression for closing brace in dimension/hierarchy name
1 parent e780340 commit 5657023

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

Tests/ElementService_test.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import copy
33
import unittest
44
from pathlib import Path
5+
from unittest.mock import MagicMock
56

67
from mdxpy import MdxBuilder
78

@@ -16,7 +17,7 @@
1617
TM1pyWritePartialFailureException,
1718
)
1819
from TM1py.Objects import Dimension, Element, ElementAttribute, Hierarchy
19-
from TM1py.Services import TM1Service
20+
from TM1py.Services import TM1Service, ElementService
2021

2122

2223
class TestElementService(unittest.TestCase):
@@ -1611,5 +1612,29 @@ def tearDownClass(cls):
16111612
cls.tm1.logout()
16121613

16131614

1615+
class TestElementServiceUrlBuilding(unittest.TestCase):
1616+
"""URL construction unit tests. Do not require a running TM1 server;
1617+
the REST service is mocked to verify URL building in isolation."""
1618+
1619+
def test_get_parents_of_all_elements_with_closing_brace_in_name(self):
1620+
# regression: dimension/hierarchy names may contain a closing brace
1621+
# (e.g. TM1 control objects like "}APQ Time Second"). URL construction
1622+
# must not raise "Single '}' encountered in format string".
1623+
element_service = ElementService.__new__(ElementService)
1624+
element_service._rest = MagicMock()
1625+
element_service._rest.GET.return_value.json.return_value = {"value": []}
1626+
1627+
dimension_name = "}APQ Time Second"
1628+
result = element_service.get_parents_of_all_elements(
1629+
dimension_name=dimension_name, hierarchy_name=dimension_name
1630+
)
1631+
1632+
self.assertEqual({}, result)
1633+
element_service._rest.GET.assert_called_once_with(
1634+
url="/Dimensions('}APQ Time Second')/Hierarchies('}APQ Time Second')"
1635+
"/Elements?$select=Name&$expand=Parents($select=Name)"
1636+
)
1637+
1638+
16141639
if __name__ == "__main__":
16151640
unittest.main()

0 commit comments

Comments
 (0)