microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/close-pull-request

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

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