microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
core/sso-in-channels

Branches

Tags

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

Clone

HTTPS

Download ZIP

core/test/Microsoft.Teams.Core.UnitTests/CoreActivityBuilderTests.cs

209lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Core.Schema;
5
6namespace Microsoft.Teams.Core.UnitTests;
7
8public class CoreActivityBuilderTests
9{
10 [Fact]
11 public void Constructor_DefaultConstructor_CreatesNewActivity()
12 {
13 CoreActivityBuilder builder = new();
14 CoreActivity activity = builder.Build();
15
16 Assert.NotNull(activity);
17 }
18
19 [Fact]
20 public void Constructor_WithExistingActivity_UsesProvidedActivity()
21 {
22 CoreActivity existingActivity = new()
23 {
24 Id = "test-id",
25 };
26
27 CoreActivityBuilder builder = new(existingActivity);
28 CoreActivity activity = builder.Build();
29
30 Assert.Equal("test-id", activity.Id);
31 }
32
33 [Fact]
34 public void Constructor_WithNullActivity_ThrowsArgumentNullException()
35 {
36 Assert.Throws<ArgumentNullException>(() => new CoreActivityBuilder(null!));
37 }
38
39 [Fact]
40 public void WithId_SetsActivityId()
41 {
42 CoreActivity activity = new CoreActivityBuilder()
43 .WithId("test-activity-id")
44 .Build();
45
46 Assert.Equal("test-activity-id", activity.Id);
47 }
48
49 [Fact]
50 public void WithServiceUrl_SetsServiceUrl()
51 {
52 Uri serviceUrl = new("https://smba.trafficmanager.net/teams/");
53
54 CoreActivity activity = new CoreActivityBuilder()
55 .WithServiceUrl(serviceUrl)
56 .Build();
57
58 Assert.Equal(serviceUrl, activity.ServiceUrl);
59 }
60
61 [Fact]
62 public void WithChannelId_SetsChannelId()
63 {
64 CoreActivity activity = new CoreActivityBuilder()
65 .WithChannelId("msteams")
66 .Build();
67
68 Assert.Equal("msteams", activity.ChannelId);
69 }
70
71 [Fact]
72 public void WithType_SetsActivityType()
73 {
74 CoreActivity activity = new CoreActivityBuilder()
75 .WithType(ActivityType.Message)
76 .Build();
77
78 Assert.Equal(ActivityType.Message, activity.Type);
79 }
80
81 [Fact]
82 public void WithText_SetsTextContent_As_Property()
83 {
84 CoreActivity activity = new CoreActivityBuilder()
85 .WithProperty("text", "Hello, World!")
86 .Build();
87
88 Assert.Equal("Hello, World!", activity.Properties["text"]);
89 }
90
91 [Fact]
92 public void FluentAPI_CompleteActivity_BuildsCorrectly()
93 {
94 CoreActivity activity = new CoreActivityBuilder()
95 .WithType(ActivityType.Message)
96 .WithId("activity-123")
97 .WithChannelId("msteams")
98 .WithProperty("text", "Test message")
99 .WithServiceUrl(new Uri("https://smba.trafficmanager.net/teams/"))
100 .Build();
101
102 Assert.Equal(ActivityType.Message, activity.Type);
103 Assert.Equal("activity-123", activity.Id);
104 Assert.Equal("msteams", activity.ChannelId);
105 Assert.Equal("Test message", activity.Properties["text"]?.ToString());
106 }
107
108 [Fact]
109 public void FluentAPI_MethodChaining_ReturnsBuilderInstance()
110 {
111 CoreActivityBuilder builder = new();
112
113 CoreActivityBuilder result1 = builder.WithId("id");
114 CoreActivityBuilder result2 = builder.WithProperty("text", "text");
115 CoreActivityBuilder result3 = builder.WithType(ActivityType.Message);
116
117 Assert.Same(builder, result1);
118 Assert.Same(builder, result2);
119 Assert.Same(builder, result3);
120 }
121
122 [Fact]
123 public void Build_CalledMultipleTimes_ReturnsSameInstance()
124 {
125 CoreActivityBuilder builder = new CoreActivityBuilder()
126 .WithId("test-id");
127
128 CoreActivity activity1 = builder.Build();
129 CoreActivity activity2 = builder.Build();
130
131 Assert.Same(activity1, activity2);
132 }
133
134 [Fact]
135 public void Builder_ModifyingExistingActivity_PreservesOriginalData()
136 {
137 CoreActivity original = new()
138 {
139 Id = "original-id",
140 Type = ActivityType.Message
141 };
142
143 CoreActivity modified = new CoreActivityBuilder(original)
144 .WithId("other-id")
145 .Build();
146
147 Assert.Equal("other-id", modified.Id);
148 Assert.Equal(ActivityType.Message, modified.Type);
149 }
150
151
152 [Fact]
153 public void WithId_WithEmptyString_SetsEmptyId()
154 {
155 CoreActivity activity = new CoreActivityBuilder()
156 .WithId(string.Empty)
157 .Build();
158
159 Assert.Equal(string.Empty, activity.Id);
160 }
161
162 [Fact]
163 public void WithChannelId_WithEmptyString_SetsEmptyChannelId()
164 {
165 CoreActivity activity = new CoreActivityBuilder()
166 .WithChannelId(string.Empty)
167 .Build();
168
169 Assert.Equal(string.Empty, activity.ChannelId);
170 }
171
172 [Fact]
173 public void WithType_WithEmptyString_SetsEmptyType()
174 {
175 CoreActivity activity = new CoreActivityBuilder()
176 .WithType(string.Empty)
177 .Build();
178
179 Assert.Equal(string.Empty, activity.Type);
180 }
181
182
183 [Fact]
184 public void Build_AfterModificationThenBuild_ReflectsChanges()
185 {
186 CoreActivityBuilder builder = new CoreActivityBuilder()
187 .WithId("id-1");
188
189 CoreActivity activity1 = builder.Build();
190 Assert.Equal("id-1", activity1.Id);
191
192 builder.WithId("id-2");
193 CoreActivity activity2 = builder.Build();
194
195 Assert.Same(activity1, activity2);
196 Assert.Equal("id-2", activity2.Id);
197 }
198
199 [Fact]
200 public void WithServiceUrl_String_SetsServiceUrl()
201 {
202 CoreActivity activity = new CoreActivityBuilder()
203 .WithServiceUrl("https://smba.trafficmanager.net/teams/")
204 .Build();
205
206 Assert.Equal(new Uri("https://smba.trafficmanager.net/teams/"), activity.ServiceUrl);
207 }
208
209}
210