Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions TM1py/Objects/Cube.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import collections
import json
from typing import Iterable, List, Dict, Optional
from typing import Iterable, List, Dict, Optional, Union

from TM1py.Objects.Rules import Rules
from TM1py.Objects.TM1Object import TM1Object
Expand All @@ -14,7 +14,7 @@ class Cube(TM1Object):

"""

def __init__(self, name: str, dimensions: Iterable[str], rules: Optional[Rules] = None):
def __init__(self, name: str, dimensions: Iterable[str], rules: Optional[Union[str, Rules]] = None):
"""

:param name: name of the Cube
Expand Down Expand Up @@ -48,8 +48,13 @@ def rules(self) -> Rules:
return self._rules

@rules.setter
def rules(self, value: Rules):
self._rules = value
def rules(self, value: Union[str, Rules]):
if isinstance(value, str):
self._rules = Rules(rules=value)
elif isinstance(value, Rules):
self._rules = value
else:
raise ValueError('value must be of type str or Rules')

@property
def skipcheck(self) -> bool:
Expand Down
33 changes: 33 additions & 0 deletions Tests/Cube_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import unittest

from TM1py import Cube, Rules


class TestCube(unittest.TestCase):
rules = """
['d1':'e1'] = N: 1;
['d1':'e2'] = N: 2;
['d1':'e3'] = N: 3;
"""
cube = Cube(
name="c1",
dimensions=["d1", "d2"],
rules=rules)

def test_update_rule_with_str(self):
self.cube.rules = "['d1':'e1'] = N: 1;"

self.assertEqual(
self.cube.rules,
Rules("['d1':'e1'] = N: 1;"))

def test_update_rule_with_rules_obj(self):
self.cube.rules = Rules("['d1':'e1'] = N: 2;")

self.assertEqual(
self.cube.rules,
Rules("['d1':'e1'] = N: 2;"))


if __name__ == '__main__':
unittest.main()