microsoft/teams.net

Public

mirrored from https://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/move-activity-implementations

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Tests/Microsoft.Teams.Apps.Tests/Activities/Conversations/Channels/ChannelMemberAddedActivityTests.cs

93lines · modecode

1using Microsoft.Teams.Api.Activities;
2using Microsoft.Teams.Api.Auth;
3using Microsoft.Teams.Apps.Activities;
4using Microsoft.Teams.Apps.Annotations;
5using Microsoft.Teams.Apps.Testing.Plugins;
6
7namespace Microsoft.Teams.Apps.Tests.Activities;
8
9public class ChannelMemberAddedActivityTests
10{
11 private readonly App _app = new();
12 private readonly IToken _token = Globals.Token;
13 private readonly Controller _controller = new();
14
15 public ChannelMemberAddedActivityTests()
16 {
17 _app.AddPlugin(new TestPlugin());
18 _app.AddController(_controller);
19 }
20
21 [Fact]
22 public async Task Should_CallHandler()
23 {
24 var calls = 0;
25
26 _app.OnActivity(context =>
27 {
28 calls++;
29 Assert.True(context.Activity.Type.IsConversationUpdate);
30 return context.Next();
31 });
32
33 _app.OnChannelMemberAdded(context =>
34 {
35 calls++;
36 Assert.True(context.Activity.Type.IsConversationUpdate);
37 Assert.Equal(ConversationUpdateActivity.EventType.ChannelMemberAdded, context.Activity.ChannelData?.EventType);
38 return Task.CompletedTask;
39 });
40
41 var res = await _app.Process<TestPlugin>(_token, new ConversationUpdateActivity()
42 {
43 ChannelData = new()
44 {
45 EventType = ConversationUpdateActivity.EventType.ChannelMemberAdded
46 }
47 });
48
49 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
50 Assert.Equal(2, calls);
51 Assert.Equal(1, _controller.Calls);
52 Assert.Equal(3, res.Meta.Routes);
53 }
54
55 [Fact]
56 public async Task Should_Not_CallHandler()
57 {
58 var calls = 0;
59
60 _app.OnChannelMemberAdded(context =>
61 {
62 calls++;
63 Assert.True(context.Activity.Type.IsConversationUpdate);
64 return Task.CompletedTask;
65 });
66
67 var res = await _app.Process<TestPlugin>(_token, new ConversationUpdateActivity()
68 {
69 ChannelData = new()
70 {
71 EventType = ConversationUpdateActivity.EventType.ChannelDeleted
72 }
73 });
74
75 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
76 Assert.Equal(0, calls);
77 Assert.Equal(0, _controller.Calls);
78 Assert.Equal(0, res.Meta.Routes);
79 }
80
81 [TeamsController]
82 public class Controller
83 {
84 public int Calls { get; private set; } = 0;
85
86 [Conversation.ChannelMemberAdded]
87 public void OnChannelMemberAdded([Context] IContext.Next next)
88 {
89 Calls++;
90 next();
91 }
92 }
93}