microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/update-sample-to-blazor

Branches

Tags

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

Clone

HTTPS

Download ZIP

core/test/Microsoft.Teams.Core.UnitTests/Schema/EntitiesTest.cs

124lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using System.Text.Json;
5using System.Text.Json.Nodes;
6using Microsoft.Teams.Core.Schema;
7
8namespace Microsoft.Teams.Core.UnitTests.Schema;
9
10public class EntitiesTest
11{
12 [Fact]
13 public void Test_Entity_Deserialization()
14 {
15 string json = """
16 {
17 "type": "message",
18 "entities": [
19 {
20 "type": "mention",
21 "mentioned": {
22 "id": "user1",
23 "name": "User One"
24 },
25 "text": "<at>User One</at>"
26 }
27 ]
28 }
29 """;
30 CoreActivity activity = CoreActivity.FromJsonString(json);
31 Assert.NotNull(activity);
32 Assert.True(activity.Properties.ContainsKey("entities"));
33 JsonElement entitiesElement = Assert.IsType<JsonElement>(activity.Properties["entities"]);
34 Assert.Equal(JsonValueKind.Array, entitiesElement.ValueKind);
35 Assert.Equal(1, entitiesElement.GetArrayLength());
36 JsonElement e1 = entitiesElement[0];
37 Assert.Equal("mention", e1.GetProperty("type").GetString());
38 Assert.True(e1.TryGetProperty("mentioned", out JsonElement mentioned));
39 Assert.True(mentioned.TryGetProperty("id", out _));
40 Assert.Equal("user1", mentioned.GetProperty("id").GetString());
41 Assert.Equal("User One", mentioned.GetProperty("name").GetString());
42 Assert.Equal("<at>User One</at>", e1.GetProperty("text").GetString());
43 }
44
45 [Fact]
46 public void Entitiy_Serialization()
47 {
48 JsonNodeOptions nops = new()
49 {
50 PropertyNameCaseInsensitive = false
51 };
52
53 CoreActivity activity = new(ActivityType.Message);
54 JsonObject mentionEntity = new()
55 {
56 ["type"] = "mention",
57 ["mentioned"] = new JsonObject
58 {
59 ["id"] = "user1",
60 ["name"] = "UserOne"
61 },
62 ["text"] = "<at>User One</at>"
63 };
64 activity.Properties["entities"] = new JsonArray(nops, mentionEntity);
65 string json = activity.ToJson();
66 Assert.NotNull(json);
67 Assert.Contains("\"type\": \"mention\"", json);
68 Assert.Contains("\"id\": \"user1\"", json);
69 Assert.Contains("\"name\": \"UserOne\"", json);
70 Assert.Contains("\"text\": \"\\u003Cat\\u003EUser One\\u003C/at\\u003E\"", json);
71 }
72
73 [Fact]
74 public void Entity_RoundTrip()
75 {
76 string json = """
77 {
78 "type": "message",
79 "entities": [
80 {
81 "type": "mention",
82 "mentioned": {
83 "id": "user1",
84 "name": "User One"
85 },
86 "text": "<at>User One</at>"
87 }
88 ]
89 }
90 """;
91 CoreActivity activity = CoreActivity.FromJsonString(json);
92 string serialized = activity.ToJson();
93 Assert.NotNull(serialized);
94 Assert.Contains("\"type\": \"mention\"", serialized);
95 Assert.Contains("\"id\": \"user1\"", serialized);
96 Assert.Contains("\"name\": \"User One\"", serialized);
97 Assert.Contains("\"text\": \"\\u003Cat\\u003EUser One\\u003C/at\\u003E\"", serialized);
98 }
99
100 [Fact]
101 public void Test_Unknown_Entity()
102 {
103 string json = """
104 {
105 "type": "message",
106 "entities": [
107 {
108 "type": "unknownEntityType",
109 "someProperty": "someValue"
110 }
111 ]
112 }
113 """;
114 CoreActivity activity = CoreActivity.FromJsonString(json);
115 Assert.NotNull(activity);
116 Assert.True(activity.Properties.ContainsKey("entities"));
117 JsonElement entitiesElement = Assert.IsType<JsonElement>(activity.Properties["entities"]);
118 Assert.Equal(JsonValueKind.Array, entitiesElement.ValueKind);
119 Assert.Equal(1, entitiesElement.GetArrayLength());
120 JsonElement e1 = entitiesElement[0];
121 Assert.Equal("unknownEntityType", e1.GetProperty("type").GetString());
122 Assert.Equal("someValue", e1.GetProperty("someProperty").GetString());
123 }
124}
125