Spaces:
Build error
Build error
| import aiounittest | |
| from botbuilder.dialogs import ObjectPath | |
| class Location: | |
| def __init__(self, lat: float = None, long: float = None): | |
| self.lat = lat | |
| self.long = long | |
| class Options: | |
| def __init__( | |
| self, | |
| first_name: str = None, | |
| last_name: str = None, | |
| age: int = None, | |
| boolean: bool = None, | |
| dictionary: dict = None, | |
| location: Location = None, | |
| ): | |
| self.first_name = first_name | |
| self.last_name = last_name | |
| self.age = age | |
| self.boolean = boolean | |
| self.dictionary = dictionary | |
| self.location = location | |
| class ObjectPathTests(aiounittest.AsyncTestCase): | |
| async def test_typed_only_default(self): | |
| default_options = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| ) | |
| overlay = Options() | |
| result = ObjectPath.assign(default_options, overlay) | |
| assert result.last_name == default_options.last_name | |
| assert result.first_name == default_options.first_name | |
| assert result.age == default_options.age | |
| assert result.boolean == default_options.boolean | |
| assert result.location.lat == default_options.location.lat | |
| assert result.location.long == default_options.location.long | |
| async def test_typed_only_overlay(self): | |
| default_options = Options() | |
| overlay = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| ) | |
| result = ObjectPath.assign(default_options, overlay) | |
| assert result.last_name == overlay.last_name | |
| assert result.first_name == overlay.first_name | |
| assert result.age == overlay.age | |
| assert result.boolean == overlay.boolean | |
| assert result.location.lat == overlay.location.lat | |
| assert result.location.long == overlay.location.long | |
| async def test_typed_full_overlay(self): | |
| default_options = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| dictionary={"one": 1, "two": 2}, | |
| ) | |
| overlay = Options( | |
| last_name="Grant", | |
| first_name="Eddit", | |
| age=32, | |
| location=Location( | |
| lat=2.2312312, | |
| long=2.234234, | |
| ), | |
| dictionary={"one": 99, "three": 3}, | |
| ) | |
| result = ObjectPath.assign(default_options, overlay) | |
| assert result.last_name == overlay.last_name | |
| assert result.first_name == overlay.first_name | |
| assert result.age == overlay.age | |
| assert result.boolean == overlay.boolean | |
| assert result.location.lat == overlay.location.lat | |
| assert result.location.long == overlay.location.long | |
| assert "one" in result.dictionary | |
| assert result.dictionary["one"] == 99 | |
| assert "two" in result.dictionary | |
| assert "three" in result.dictionary | |
| async def test_typed_partial_overlay(self): | |
| default_options = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| ) | |
| overlay = Options( | |
| last_name="Grant", | |
| ) | |
| result = ObjectPath.assign(default_options, overlay) | |
| assert result.last_name == overlay.last_name | |
| assert result.first_name == default_options.first_name | |
| assert result.age == default_options.age | |
| assert result.boolean == default_options.boolean | |
| assert result.location.lat == default_options.location.lat | |
| assert result.location.long == default_options.location.long | |
| async def test_typed_no_target(self): | |
| overlay = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| ) | |
| result = ObjectPath.assign(None, overlay) | |
| assert result.last_name == overlay.last_name | |
| assert result.first_name == overlay.first_name | |
| assert result.age == overlay.age | |
| assert result.boolean == overlay.boolean | |
| assert result.location.lat == overlay.location.lat | |
| assert result.location.long == overlay.location.long | |
| async def test_typed_no_overlay(self): | |
| default_options = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| ) | |
| result = ObjectPath.assign(default_options, None) | |
| assert result.last_name == default_options.last_name | |
| assert result.first_name == default_options.first_name | |
| assert result.age == default_options.age | |
| assert result.boolean == default_options.boolean | |
| assert result.location.lat == default_options.location.lat | |
| assert result.location.long == default_options.location.long | |
| async def test_no_target_or_overlay(self): | |
| result = ObjectPath.assign(None, None, Options) | |
| assert result | |
| async def test_dict_partial_overlay(self): | |
| default_options = { | |
| "last_name": "Smith", | |
| "first_name": "Fred", | |
| "age": 22, | |
| "location": Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| } | |
| overlay = { | |
| "last_name": "Grant", | |
| } | |
| result = ObjectPath.assign(default_options, overlay) | |
| assert result["last_name"] == overlay["last_name"] | |
| assert result["first_name"] == default_options["first_name"] | |
| assert result["age"] == default_options["age"] | |
| assert result["location"].lat == default_options["location"].lat | |
| assert result["location"].long == default_options["location"].long | |
| async def test_dict_to_typed_overlay(self): | |
| default_options = Options( | |
| last_name="Smith", | |
| first_name="Fred", | |
| age=22, | |
| location=Location( | |
| lat=1.2312312, | |
| long=3.234234, | |
| ), | |
| ) | |
| overlay = { | |
| "last_name": "Grant", | |
| } | |
| result = ObjectPath.assign(default_options, overlay) | |
| assert result.last_name == overlay["last_name"] | |
| assert result.first_name == default_options.first_name | |
| assert result.age == default_options.age | |
| assert result.boolean == default_options.boolean | |
| assert result.location.lat == default_options.location.lat | |
| assert result.location.long == default_options.location.long | |
| async def test_set_value(self): | |
| test = {} | |
| ObjectPath.set_path_value(test, "x.y.z", 15) | |
| ObjectPath.set_path_value(test, "x.p", "hello") | |
| ObjectPath.set_path_value(test, "foo", {"Bar": 15, "Blat": "yo"}) | |
| ObjectPath.set_path_value(test, "x.a[1]", "yabba") | |
| ObjectPath.set_path_value(test, "x.a[0]", "dabba") | |
| ObjectPath.set_path_value(test, "null", None) | |
| assert ObjectPath.get_path_value(test, "x.y.z") == 15 | |
| assert ObjectPath.get_path_value(test, "x.p") == "hello" | |
| assert ObjectPath.get_path_value(test, "foo.bar") == 15 | |
| assert not ObjectPath.try_get_path_value(test, "foo.Blatxxx") | |
| assert ObjectPath.try_get_path_value(test, "x.a[1]") == "yabba" | |
| assert ObjectPath.try_get_path_value(test, "x.a[0]") == "dabba" | |
| assert not ObjectPath.try_get_path_value(test, "null") | |
| async def test_remove_path_value(self): | |
| test = {} | |
| ObjectPath.set_path_value(test, "x.y.z", 15) | |
| ObjectPath.set_path_value(test, "x.p", "hello") | |
| ObjectPath.set_path_value(test, "foo", {"Bar": 15, "Blat": "yo"}) | |
| ObjectPath.set_path_value(test, "x.a[1]", "yabba") | |
| ObjectPath.set_path_value(test, "x.a[0]", "dabba") | |
| ObjectPath.remove_path_value(test, "x.y.z") | |
| with self.assertRaises(KeyError): | |
| ObjectPath.get_path_value(test, "x.y.z") | |
| assert ObjectPath.get_path_value(test, "x.y.z", 99) == 99 | |
| ObjectPath.remove_path_value(test, "x.a[1]") | |
| assert not ObjectPath.try_get_path_value(test, "x.a[1]") | |
| assert ObjectPath.try_get_path_value(test, "x.a[0]") == "dabba" | |