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.Api.Tests/Activities/Invokes/SuggestedActionSubmitActivityTests.cs

85lines · modecode

1#pragma warning disable ExperimentalTeamsSuggestedAction
2
3using System.Text.Json;
4
5using Microsoft.Teams.Api.Activities;
6using Microsoft.Teams.Api.Activities.Invokes;
7
8using MessageActivity = Microsoft.Teams.Api.Activities.MessageActivity;
9
10namespace Microsoft.Teams.Api.Tests.Activities;
11
12public class SuggestedActionSubmitActivityTests
13{
14 [Fact]
15 public void SuggestedActionSubmitActivity_JsonDeserialize()
16 {
17 var json = File.ReadAllText(@"../../../Json/Activity/Invokes/SuggestedActionSubmitActivity.json");
18
19 var activity = JsonSerializer.Deserialize<SuggestedActionSubmitActivity>(json);
20
21 Assert.NotNull(activity);
22 Assert.Equal("suggestedActionSubmitId", activity!.Id);
23 Assert.Equal("channelId", activity.ChannelId.Value);
24 Assert.Equal("suggestedActions/submit", activity.Name.Value);
25 var value = Assert.IsType<JsonElement>(activity.Value);
26 Assert.Equal(JsonValueKind.Object, value.ValueKind);
27 Assert.Equal("approve", value.GetProperty("vote").GetString());
28 }
29
30 [Fact]
31 public void SuggestedActionSubmitActivity_JsonDeserialize_DispatchedFromInvokeBase()
32 {
33 var json = File.ReadAllText(@"../../../Json/Activity/Invokes/SuggestedActionSubmitActivity.json");
34
35 var activity = JsonSerializer.Deserialize<InvokeActivity>(json);
36
37 Assert.IsType<SuggestedActionSubmitActivity>(activity);
38 }
39
40 [Fact]
41 public void SuggestedActionSubmitActivity_JsonDeserialize_DispatchedFromActivityBase()
42 {
43 var json = File.ReadAllText(@"../../../Json/Activity/Invokes/SuggestedActionSubmitActivity.json");
44
45 var activity = JsonSerializer.Deserialize<Activity>(json);
46
47 Assert.IsType<SuggestedActionSubmitActivity>(activity);
48 }
49
50 [Fact]
51 public void SuggestedActionSubmitActivity_GetPath()
52 {
53 var activity = new SuggestedActionSubmitActivity();
54
55 Assert.Equal("Activity.Invoke.SuggestedActions/submit", activity.GetPath());
56 }
57
58 [Fact]
59 public void OutgoingMessage_WithActionSubmitSuggestedAction_SerializesToSpecShape()
60 {
61 // Verifies the wire format the bot produces when sending an Action.Submit
62 // suggested action. Per the design spec the platform expects:
63 // suggestedActions.actions[i].type == "Action.Submit"
64 // suggestedActions.actions[i].title == button label
65 // suggestedActions.actions[i].value == structured payload (object)
66 var message = new MessageActivity("Approve or reject:")
67 {
68 SuggestedActions = new SuggestedActions
69 {
70 Actions =
71 {
72 new Cards.Action(Cards.ActionType.Submit) { Title = "Approve", Value = new { vote = "approve" } }
73 }
74 }
75 };
76
77 var json = JsonSerializer.Serialize(message);
78 using var doc = JsonDocument.Parse(json);
79
80 var action = doc.RootElement.GetProperty("suggestedActions").GetProperty("actions")[0];
81 Assert.Equal("Action.Submit", action.GetProperty("type").GetString());
82 Assert.Equal("Approve", action.GetProperty("title").GetString());
83 Assert.Equal("approve", action.GetProperty("value").GetProperty("vote").GetString());
84 }
85}
86