From f09f8598f6beada39358326a4714ad56820f647d Mon Sep 17 00:00:00 2001 From: virtual-josh Date: Thu, 5 Dec 2019 11:39:35 -0800 Subject: [PATCH 1/5] black + pylint --- .../botbuilder/core/teams/__init__.py | 8 + .../core/teams/teams_activity_extensions.py | 36 +++++ .../tests/teams/test_teams_extension.py | 148 ++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py create mode 100644 libraries/botbuilder-core/tests/teams/test_teams_extension.py diff --git a/libraries/botbuilder-core/botbuilder/core/teams/__init__.py b/libraries/botbuilder-core/botbuilder/core/teams/__init__.py index 1b9242875..d9d4847e8 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/__init__.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/__init__.py @@ -7,8 +7,16 @@ from .teams_activity_handler import TeamsActivityHandler from .teams_info import TeamsInfo +from .teams_activity_extensions import ( + teams_get_channel_id, + teams_get_team_info, + teams_notify_user, +) __all__ = [ "TeamsActivityHandler", "TeamsInfo", + "teams_get_channel_id", + "teams_get_team_info", + "teams_notify_user", ] diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py new file mode 100644 index 000000000..1a9fd36bb --- /dev/null +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py @@ -0,0 +1,36 @@ +from botbuilder.schema import Activity +from botbuilder.schema.teams import NotificationInfo, TeamsChannelData, TeamInfo + + +def teams_get_channel_id(activity: Activity) -> str: + if not activity: + return None + + if activity.channel_data: + channel_data = TeamsChannelData().deserialize(activity.channel_data) + return channel_data.channel.id if channel_data.channel else None + + return None + + +def teams_get_team_info(activity: Activity) -> TeamInfo: + if not activity: + return None + + if activity.channel_data: + channel_data = TeamsChannelData().deserialize(activity.channel_data) + return channel_data.team + + return None + + +def teams_notify_user(activity: Activity): + if not activity: + return + + if not activity.channel_data: + activity.channel_data = {} + + channel_data = TeamsChannelData().deserialize(activity.channel_data) + channel_data.notification = NotificationInfo(alert=True) + activity.channel_data = channel_data diff --git a/libraries/botbuilder-core/tests/teams/test_teams_extension.py b/libraries/botbuilder-core/tests/teams/test_teams_extension.py new file mode 100644 index 000000000..23162cf03 --- /dev/null +++ b/libraries/botbuilder-core/tests/teams/test_teams_extension.py @@ -0,0 +1,148 @@ +import aiounittest + +from botbuilder.schema import Activity +from botbuilder.schema.teams import TeamInfo +from botbuilder.core.teams import ( + teams_get_channel_id, + teams_get_team_info, + teams_notify_user, +) + + +class TestTeamsActivityHandler(aiounittest.AsyncTestCase): + def test_teams_get_channel_id(self): + # Arrange + activity = Activity( + channel_data={"channel": {"id": "id123", "name": "channel_name"}} + ) + + # Act + result = teams_get_channel_id(activity) + + # Assert + assert result == "id123" + + def test_teams_get_channel_id_with_no_channel(self): + # Arrange + activity = Activity( + channel_data={"team": {"id": "id123", "name": "channel_name"}} + ) + + # Act + result = teams_get_channel_id(activity) + + # Assert + assert result is None + + def test_teams_get_channel_id_with_no_channel_id(self): + # Arrange + activity = Activity(channel_data={"team": {"name": "channel_name"}}) + + # Act + result = teams_get_channel_id(activity) + + # Assert + assert result is None + + def test_teams_get_channel_id_with_no_channel_data(self): + # Arrange + activity = Activity(type="type") + + # Act + result = teams_get_channel_id(activity) + + # Assert + assert result is None + + def test_teams_get_channel_id_with_none_activity(self): + # Arrange + activity = None + + # Act + result = teams_get_channel_id(activity) + + # Assert + assert result is None + + def test_teams_get_team_info(self): + # Arrange + activity = Activity( + channel_data={"team": {"id": "id123", "name": "channel_name"}} + ) + + # Act + result = teams_get_team_info(activity) + + # Assert + assert result is TeamInfo(id="id123", name="channel_name") + + def test_teams_get_team_info_with_no_channel_data(self): + # Arrange + activity = Activity(type="type") + + # Act + result = teams_get_team_info(activity) + + # Assert + assert result is None + + def test_teams_get_team_info_with_no_team_info(self): + # Arrange + activity = Activity(channel_data={"eventType": "eventType"}) + + # Act + result = teams_get_team_info(activity) + + # Assert + assert result is None + + def test_teams_get_team_info_with_none_activity(self): + # Arrange + activity = None + + # Act + result = teams_get_team_info(activity) + + # Assert + assert result is None + + def test_teams_notify_user(self): + # Arrange + activity = Activity(channel_data={"eventType": "eventType"}) + + # Act + teams_notify_user(activity) + + # Assert + assert activity.channel_data.notification.alert + + def test_teams_notify_user_with_no_activity(self): + # Arrange + activity = None + + # Act + teams_notify_user(activity) + + # Assert + assert activity is None + + def test_teams_notify_user_with_preexisting_notification(self): + # Arrange + activity = Activity(channel_data={"notification": {"alert": False}}) + + # Act + teams_notify_user(activity) + + # Assert + assert activity.channel_data.notification.alert + + def test_teams_notify_user_with_no_channel_data(self): + # Arrange + activity = Activity(id="id123") + + # Act + teams_notify_user(activity) + + # Assert + assert activity.channel_data.notification.alert + assert activity.id == "id123" From d72a44c06877e23e3287cf8d69f008e288d2fbe7 Mon Sep 17 00:00:00 2001 From: virtual-josh Date: Thu, 5 Dec 2019 11:49:31 -0800 Subject: [PATCH 2/5] fixing copy/paste --- libraries/botbuilder-core/tests/teams/test_teams_extension.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-core/tests/teams/test_teams_extension.py b/libraries/botbuilder-core/tests/teams/test_teams_extension.py index 23162cf03..8ac96a491 100644 --- a/libraries/botbuilder-core/tests/teams/test_teams_extension.py +++ b/libraries/botbuilder-core/tests/teams/test_teams_extension.py @@ -74,7 +74,7 @@ def test_teams_get_team_info(self): result = teams_get_team_info(activity) # Assert - assert result is TeamInfo(id="id123", name="channel_name") + assert result == TeamInfo(id="id123", name="channel_name") def test_teams_get_team_info_with_no_channel_data(self): # Arrange From 872fe3519c5f36efd38e71761e840c2db63f5304 Mon Sep 17 00:00:00 2001 From: virtual-josh Date: Thu, 5 Dec 2019 13:52:54 -0800 Subject: [PATCH 3/5] adding whitespace to see if this unblocks coveralls --- .../botbuilder/core/teams/teams_activity_extensions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py index 1a9fd36bb..ac157b54f 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py @@ -5,6 +5,7 @@ def teams_get_channel_id(activity: Activity) -> str: if not activity: return None + if activity.channel_data: channel_data = TeamsChannelData().deserialize(activity.channel_data) From 0cb6195e0bc40f50a4b360c88a4226b850f42657 Mon Sep 17 00:00:00 2001 From: virtual-josh Date: Thu, 5 Dec 2019 13:57:46 -0800 Subject: [PATCH 4/5] kicking off new build --- .../botbuilder/core/teams/teams_activity_extensions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py index ac157b54f..8ed38271e 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py @@ -1,11 +1,12 @@ from botbuilder.schema import Activity from botbuilder.schema.teams import NotificationInfo, TeamsChannelData, TeamInfo +def dummy(): + return 1 def teams_get_channel_id(activity: Activity) -> str: if not activity: return None - if activity.channel_data: channel_data = TeamsChannelData().deserialize(activity.channel_data) From 6bff52f1f281e55f876888574acaea5481038453 Mon Sep 17 00:00:00 2001 From: virtual-josh Date: Thu, 5 Dec 2019 14:11:57 -0800 Subject: [PATCH 5/5] black --- .../botbuilder/core/teams/teams_activity_extensions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py index 8ed38271e..d47ab76e0 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_activity_extensions.py @@ -1,9 +1,11 @@ from botbuilder.schema import Activity from botbuilder.schema.teams import NotificationInfo, TeamsChannelData, TeamInfo + def dummy(): return 1 + def teams_get_channel_id(activity: Activity) -> str: if not activity: return None