8000 Merge pull request #786 from microsoft/josh/helperTests · TheCompuGuru/botbuilder-python@0af971b · GitHub
[go: up one dir, main page]

Skip to content

Commit 0af971b

Browse files
authored
Merge pull request microsoft#786 from microsoft/josh/helperTests
Fixes microsoft#655
2 parents 2b92193 + 2d10a59 commit 0af971b

File tree

3 files changed

+104
-9
lines changed

3 files changed

+104
-9
lines changed

libraries/botbuilder-core/tests/simple_adapter.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,32 @@
22
# Licensed under the MIT License.
33

44
import unittest
5-
from typing import List
5+
from typing import List, Tuple, Awaitable, Callable
66
from botbuilder.core import BotAdapter, TurnContext
7-
from botbuilder.schema import Activity, ConversationReference, ResourceResponse 8000
7+
from botbuilder.schema import (
8+
Activity,
9+
ConversationReference,
10+
ResourceResponse,
11+
ConversationParameters,
12+
)
813

914

1015
class SimpleAdapter(BotAdapter):
1116
# pylint: disable=unused-argument
1217

13-
def __init__(self, call_on_send=None, call_on_update=None, call_on_delete=None):
18+
def __init__(
19+
self,
20+
call_on_send=None,
21+
call_on_update=None,
22+
call_on_delete=None,
23+
call_create_conversation=None,
24+
):
1425
super(SimpleAdapter, self).__init__()
1526
self.test_aux = unittest.TestCase("__init__")
1627
self._call_on_send = call_on_send
1728
self._call_on_update = call_on_update
1829
self._call_on_delete = call_on_delete
30+
self._call_create_conversation = call_create_conversation
1931

2032
async def delete_activity(
2133
self, context: TurnContext, reference: ConversationReference
@@ -46,6 +58,15 @@ async def send_activities(
4658

4759
return responses
4860

61+
async def create_conversation(
62+
self,
63+
reference: ConversationReference,
64+
logic: Callable[[TurnContext], Awaitable] = None,
65+
conversation_parameters: ConversationParameters = None,
66+
) -> Tuple[ConversationReference, str]:
67+
if self._call_create_conversation is not None:
68+
self._call_create_conversation()
69+
4970
async def update_activity(self, context: TurnContext, activity: Activity):
5071
self.test_aux.assertIsNotNone(
5172
activity, "SimpleAdapter.update_activity: missing activity"

libraries/botbuilder-core/tests/teams/simple_adapter.py renamed to libraries/botbuilder-core/tests/teams/simple_adapter_with_create_conversation.py

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,32 @@
22
# Licensed under the MIT License.
33

44
import unittest
5-
from typing import List
5+
from typing import List, Tuple, Awaitable, Callable
66
from botbuilder.core import BotAdapter, TurnContext
7-
from botbuilder.schema import Activity, ConversationReference, ResourceResponse
7+
from botbuilder.schema import (
8+
Activity,
9+
ConversationReference,
10+
ResourceResponse,
11+
ConversationParameters,
12+
)
813

914

10-
class SimpleAdapter(BotAdapter):
15+
class SimpleAdapterWithCreateConversation(BotAdapter):
1116
# pylint: disable=unused-argument
1217

13-
def __init__(self, call_on_send=None, call_on_update=None, call_on_delete=None):
14-
super(SimpleAdapter, self).__init__()
18+
def __init__(
19+
self,
20+
call_on_send=None,
21+
call_on_update=None,
22+
call_on_delete=None,
23+
call_create_conversation=None,
24+
):
25+
super(SimpleAdapterWithCreateConversation, self).__init__()
1526
self.test_aux = unittest.TestCase("__init__")
1627
self._call_on_send = call_on_send
1728
self._call_on_update = call_on_update
1829
self._call_on_delete = call_on_delete
30+
self._call_create_conversation = call_create_conversation
1931

2032
async def delete_activity(
2133
self, context: TurnContext, reference: ConversationReference
@@ -46,6 +58,17 @@ async def send_activities(
4658

4759
return responses
4860

61+
async def create_conversation(
62+
self,
63+
reference: ConversationReference,
64+
logic: Callable[[TurnContext], Awaitable] = None,
65+
conversation_parameters: ConversationParameters = None,
66+
) -> Tuple[ConversationReference, str]:
67+
if self._call_create_conversation is not None:
68+
self._call_create_conversation()
69+
ref = ConversationReference(activity_id="new_conversation_id")
70+
return (ref, "reference123")
71+
4972
async def update_activity(self, context: TurnContext, activity: Activity):
5073
self.test_aux.assertIsNotNone(
5174
activity, "SimpleAdapter.update_activity: missing activity"
@@ -57,4 +80,4 @@ async def update_activity(self, context: TurnContext, activity: Activity):
5780

5881
async def process_request(self, activity, handler):
5982
context = TurnContext(self, activity)
60-
return self.run_pipeline(context, handler)
83+
return await self.run_pipeline(context, handler)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
4+
import aiounittest
5+
6+
7+
from botbuilder.core import TurnContext, MessageFactory
8+
from botbuilder.core.teams import TeamsInfo, TeamsActivityHandler
9+
from botbuilder.schema import Activity
10+
from botbuilder.schema.teams import TeamsChannelData, TeamInfo
11+
from botframework.connector import Channels
12+
from simple_adapter_with_create_conversation import SimpleAdapterWithCreateConversation
13+
14+
15+
class TestTeamsInfo(aiounittest.AsyncTestCase):
16+
async def test_send_message_to_teams(self):
17+
def create_conversation():
18+
pass
19+
20+
adapter = SimpleAdapterWithCreateConversation(
21+
call_create_conversation=create_conversation
22+
)
23+
24+
activity = Activity(
25+
type="message",
26+
text="test_send_message_to_teams_channel",
27+
channel_id=Channels.ms_teams,
28+
service_url="https://example.org",
29+
channel_data=TeamsChannelData(team=TeamInfo(id="team-id")),
30+
)
31+
turn_context = TurnContext(adapter, activity)
32+
handler = TestTeamsActivityHandler()
33+
await handler.on_turn(turn_context)
34+
35+
36+
class TestTeamsActivityHandler(TeamsActivityHandler):
37+
async def on_turn(self, turn_context: TurnContext):
38+
super().on_turn(turn_context)
39+
40+
if turn_context.activity.text == "test_send_message_to_teams_channel":
41+
await self.call_send_message_to_teams(turn_context)
42+
43+
async def call_send_message_to_teams(self, turn_context: TurnContext):
44+
msg = MessageFactory.text("call_send_message_to_teams")
45+
channel_id = "teams_channel_123"
46+
reference = await TeamsInfo.send_message_to_teams_channel(
47+
turn_context, msg, channel_id
48+
)
49+
50+
assert reference[0].activity_id == "new_conversation_id"
51+
assert reference[1] == "reference123"

0 commit comments

Comments
 (0)
0