microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
docs/update-release-process

Branches

Tags

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

Clone

HTTPS

Download ZIP

Tests/Microsoft.Teams.Apps.Tests/Activities/Events/MeetingEndEventTests.cs

142lines · modecode

1
2using Microsoft.Teams.Api.Activities;
3using Microsoft.Teams.Api.Activities.Events;
4using Microsoft.Teams.Api.Auth;
5using Microsoft.Teams.Apps.Activities.Events;
6using Microsoft.Teams.Apps.Testing.Plugins;
7
8using static Microsoft.Teams.Apps.Activities.Events.Event;
9
10namespace Microsoft.Teams.Apps.Tests.Activities.Events;
11
12public class MeetingEndEventTests
13{
14 private readonly App _app = new();
15 private readonly TestPlugin _plugin = new();
16 private readonly MeetingActivityController _controller = new();
17 private readonly IToken _token = Globals.Token;
18
19 public MeetingEndEventTests()
20 {
21 _app.AddPlugin(_plugin);
22 _app.AddController(_controller);
23 _token = Globals.Token;
24 }
25
26 [Fact]
27 public async Task Should_CallHandler_OnMeetingEndEvent()
28 {
29 // Arrange
30 var handlerCalled = false;
31 var eventContext = default(IContext<MeetingEndActivity>);
32
33 _app.OnMeetingEnd(context =>
34 {
35 handlerCalled = true;
36 eventContext = context;
37 return Task.FromResult<object?>(null);
38 });
39
40 // Create a MeetingEndActivity
41 var meetingEndActivity = new MeetingEndActivity
42 {
43 Value = new MeetingEndActivityValue
44 {
45 Id = "mock-meeting-id",
46 MeetingType = "scheduled",
47 JoinUrl = "https://teams.microsoft.com/meeting/join/123",
48 Title = "Test Meeting",
49 EndTime = DateTime.UtcNow
50 }
51 };
52
53 // Act
54 var res = await _plugin.Do(_token, meetingEndActivity);
55
56 // Assert
57 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
58 Assert.True(handlerCalled, "The MeetingEnd event handler should be called");
59 Assert.NotNull(eventContext);
60 Assert.IsType<MeetingEndActivity>(eventContext.Activity);
61 Assert.Equal("mock-meeting-id", eventContext.Activity.Value.Id);
62 }
63
64 [Fact]
65 public async Task Should_NotCallHandler_ForOtherEventTypes()
66 {
67 // Arrange
68 var handlerCalled = false;
69
70 _app.OnMeetingEnd(context =>
71 {
72 handlerCalled = true;
73 return Task.FromResult<object?>(null);
74 });
75
76 // Act - Send a different activity type
77 var res = await _plugin.Do(_token, new MessageActivity("hello world"));
78
79 // Assert
80 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
81 Assert.False(handlerCalled, "The MeetingEnd event handler should not be called for other activity types");
82 }
83
84 [Fact]
85 public void MeetingEndAttribute_Select_ReturnsTrueForMeetingEndActivity()
86 {
87 // Arrange
88 var attribute = new MeetingEndAttribute();
89 var activity = new MeetingEndActivity
90 {
91 Value = new MeetingEndActivityValue
92 {
93 Id = "mock-meeting-id",
94 MeetingType = "scheduled",
95 JoinUrl = "https://teams.microsoft.com/meeting/join/123",
96 Title = "Test Meeting",
97 EndTime = DateTime.UtcNow
98 }
99 };
100
101 // Act
102 var result = attribute.Select(activity);
103
104 // Assert
105 Assert.True(result);
106 }
107
108 [Fact]
109 public void MeetingEndAttribute_Select_ReturnsFalseForOtherActivities()
110 {
111 // Arrange
112 var attribute = new MeetingEndAttribute();
113 var activity = new MessageActivity("hello world");
114
115 // Act
116 var result = attribute.Select(activity);
117
118 // Assert
119 Assert.False(result);
120 }
121
122 [Fact]
123 public async Task MeetingEndAttribute_Controller_Call()
124 {
125 var activity = new MeetingEndActivity
126 {
127 Value = new MeetingEndActivityValue
128 {
129 Id = "mock-meeting-id",
130 MeetingType = "scheduled",
131 JoinUrl = "https://teams.microsoft.com/meeting/join/123",
132 Title = "Test Meeting",
133 EndTime = DateTime.UtcNow
134 }
135 };
136
137 var res = await _app.Process<TestPlugin>(_token, activity);
138
139 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
140 Assert.Equal("meetingEndMethod", _controller.MethodCalled);
141 }
142}