| 
34 | 34 |  TabContext,  | 
35 | 35 |  MeetingParticipantsEventDetails,  | 
36 | 36 |  ReadReceiptInfo,  | 
 | 37 | + TeamsChannelData,  | 
37 | 38 | )  | 
38 | 39 | from botframework.connector import Channels  | 
39 | 40 | from simple_adapter import SimpleAdapter  | 
@@ -351,6 +352,26 @@ async def on_teams_meeting_end_event(  | 
351 | 352 |  turn_context.activity.value, turn_context  | 
352 | 353 |  )  | 
353 | 354 | 
 
  | 
 | 355 | + async def on_message_update_activity(self, turn_context: TurnContext):  | 
 | 356 | + self.record.append("on_message_update_activity")  | 
 | 357 | + return await super().on_message_update_activity(turn_context)  | 
 | 358 | + | 
 | 359 | + async def on_teams_message_edit(self, turn_context: TurnContext):  | 
 | 360 | + self.record.append("on_teams_message_edit")  | 
 | 361 | + return await super().on_teams_message_edit(turn_context)  | 
 | 362 | + | 
 | 363 | + async def on_teams_message_undelete(self, turn_context: TurnContext):  | 
 | 364 | + self.record.append("on_teams_message_undelete")  | 
 | 365 | + return await super().on_teams_message_undelete(turn_context)  | 
 | 366 | + | 
 | 367 | + async def on_message_delete_activity(self, turn_context: TurnContext):  | 
 | 368 | + self.record.append("on_message_delete_activity")  | 
 | 369 | + return await super().on_message_delete_activity(turn_context)  | 
 | 370 | + | 
 | 371 | + async def on_teams_message_soft_delete(self, turn_context: TurnContext):  | 
 | 372 | + self.record.append("on_teams_message_soft_delete")  | 
 | 373 | + return await super().on_teams_message_soft_delete(turn_context)  | 
 | 374 | + | 
354 | 375 |  async def on_teams_meeting_participants_join_event(  | 
355 | 376 |  self, meeting: MeetingParticipantsEventDetails, turn_context: TurnContext  | 
356 | 377 |  ):  | 
@@ -1254,6 +1275,124 @@ async def test_on_teams_meeting_end_event(self):  | 
1254 | 1275 |  assert bot.record[0] == "on_event_activity"  | 
1255 | 1276 |  assert bot.record[1] == "on_teams_meeting_end_event"  | 
1256 | 1277 | 
 
  | 
 | 1278 | + async def test_message_update_activity_teams_message_edit(self):  | 
 | 1279 | + # Arrange  | 
 | 1280 | + activity = Activity(  | 
 | 1281 | + type=ActivityTypes.message_update,  | 
 | 1282 | + channel_data=TeamsChannelData(event_type="editMessage"),  | 
 | 1283 | + channel_id=Channels.ms_teams,  | 
 | 1284 | + )  | 
 | 1285 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1286 | + | 
 | 1287 | + # Act  | 
 | 1288 | + bot = TestingTeamsActivityHandler()  | 
 | 1289 | + await bot.on_turn(turn_context)  | 
 | 1290 | + | 
 | 1291 | + # Assert  | 
 | 1292 | + self.assertEqual(2, len(bot.record))  | 
 | 1293 | + self.assertEqual("on_message_update_activity", bot.record[0])  | 
 | 1294 | + self.assertEqual("on_teams_message_edit", bot.record[1])  | 
 | 1295 | + | 
 | 1296 | + async def test_message_update_activity_teams_message_undelete(self):  | 
 | 1297 | + # Arrange  | 
 | 1298 | + activity = Activity(  | 
 | 1299 | + type=ActivityTypes.message_update,  | 
 | 1300 | + channel_data=TeamsChannelData(event_type="undeleteMessage"),  | 
 | 1301 | + channel_id=Channels.ms_teams,  | 
 | 1302 | + )  | 
 | 1303 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1304 | + | 
 | 1305 | + # Act  | 
 | 1306 | + bot = TestingTeamsActivityHandler()  | 
 | 1307 | + await bot.on_turn(turn_context)  | 
 | 1308 | + | 
 | 1309 | + # Assert  | 
 | 1310 | + self.assertEqual(2, len(bot.record))  | 
 | 1311 | + self.assertEqual("on_message_update_activity", bot.record[0])  | 
 | 1312 | + self.assertEqual("on_teams_message_undelete", bot.record[1])  | 
 | 1313 | + | 
 | 1314 | + async def test_message_update_activity_teams_message_undelete_no_msteams(self):  | 
 | 1315 | + # Arrange  | 
 | 1316 | + activity = Activity(  | 
 | 1317 | + type=ActivityTypes.message_update,  | 
 | 1318 | + channel_data=TeamsChannelData(event_type="undeleteMessage"),  | 
 | 1319 | + )  | 
 | 1320 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1321 | + | 
 | 1322 | + # Act  | 
 | 1323 | + bot = TestingTeamsActivityHandler()  | 
 | 1324 | + await bot.on_turn(turn_context)  | 
 | 1325 | + | 
 | 1326 | + # Assert  | 
 | 1327 | + self.assertEqual(1, len(bot.record))  | 
 | 1328 | + self.assertEqual("on_message_update_activity", bot.record[0])  | 
 | 1329 | + | 
 | 1330 | + async def test_message_update_activity_teams_no_channel_data(self):  | 
 | 1331 | + # Arrange  | 
 | 1332 | + activity = Activity(  | 
 | 1333 | + type=ActivityTypes.message_update,  | 
 | 1334 | + channel_id=Channels.ms_teams,  | 
 | 1335 | + )  | 
 | 1336 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1337 | + | 
 | 1338 | + # Act  | 
 | 1339 | + bot = TestingTeamsActivityHandler()  | 
 | 1340 | + await bot.on_turn(turn_context)  | 
 | 1341 | + | 
 | 1342 | + # Assert  | 
 | 1343 | + self.assertEqual(1, len(bot.record))  | 
 | 1344 | + self.assertEqual("on_message_update_activity", bot.record[0])  | 
 | 1345 | + | 
 | 1346 | + async def test_message_delete_activity_teams_message_soft_delete(self):  | 
 | 1347 | + # Arrange  | 
 | 1348 | + activity = Activity(  | 
 | 1349 | + type=ActivityTypes.message_delete,  | 
 | 1350 | + channel_data=TeamsChannelData(event_type="softDeleteMessage"),  | 
 | 1351 | + channel_id=Channels.ms_teams,  | 
 | 1352 | + )  | 
 | 1353 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1354 | + | 
 | 1355 | + # Act  | 
 | 1356 | + bot = TestingTeamsActivityHandler()  | 
 | 1357 | + await bot.on_turn(turn_context)  | 
 | 1358 | + | 
 | 1359 | + # Assert  | 
 | 1360 | + self.assertEqual(2, len(bot.record))  | 
 | 1361 | + self.assertEqual("on_message_delete_activity", bot.record[0])  | 
 | 1362 | + self.assertEqual("on_teams_message_soft_delete", bot.record[1])  | 
 | 1363 | + | 
 | 1364 | + async def test_message_delete_activity_teams_message_soft_delete_no_msteams(self):  | 
 | 1365 | + # Arrange  | 
 | 1366 | + activity = Activity(  | 
 | 1367 | + type=ActivityTypes.message_delete,  | 
 | 1368 | + channel_data=TeamsChannelData(event_type="softDeleteMessage"),  | 
 | 1369 | + )  | 
 | 1370 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1371 | + | 
 | 1372 | + # Act  | 
 | 1373 | + bot = TestingTeamsActivityHandler()  | 
 | 1374 | + await bot.on_turn(turn_context)  | 
 | 1375 | + | 
 | 1376 | + # Assert  | 
 | 1377 | + self.assertEqual(1, len(bot.record))  | 
 | 1378 | + self.assertEqual("on_message_delete_activity", bot.record[0])  | 
 | 1379 | + | 
 | 1380 | + async def test_message_delete_activity_teams_no_channel_data(self):  | 
 | 1381 | + # Arrange  | 
 | 1382 | + activity = Activity(  | 
 | 1383 | + type=ActivityTypes.message_delete,  | 
 | 1384 | + channel_id=Channels.ms_teams,  | 
 | 1385 | + )  | 
 | 1386 | + turn_context = TurnContext(SimpleAdapter(), activity)  | 
 | 1387 | + | 
 | 1388 | + # Act  | 
 | 1389 | + bot = TestingTeamsActivityHandler()  | 
 | 1390 | + await bot.on_turn(turn_context)  | 
 | 1391 | + | 
 | 1392 | + # Assert  | 
 | 1393 | + self.assertEqual(1, len(bot.record))  | 
 | 1394 | + self.assertEqual("on_message_delete_activity", bot.record[0])  | 
 | 1395 | + | 
1257 | 1396 |  async def test_on_teams_meeting_participants_join_event(self):  | 
1258 | 1397 |  # arrange  | 
1259 | 1398 |  activity = Activity(  | 
 | 
0 commit comments