microsoft/TypeAgent

Public

mirrored fromhttps://github.com/microsoft/TypeAgentAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
d4944c6517c9a96a3c419f827769f518913f1b75

Branches

Tags

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

Clone

HTTPS

Download ZIP

dotnet/autoShell.Tests/ActionHandlerBaseTests.cs

82lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using System.Text.Json;
5using System.Text.Json.Serialization;
6using autoShell.Handlers;
7
8namespace autoShell.Tests;
9
10/// <summary>
11/// Tests for <see cref="ActionHandlerBase"/> deserialization and error handling in AddAction&lt;T&gt;.
12/// </summary>
13public class ActionHandlerBaseTests
14{
15 private record TestParams
16 {
17 [JsonPropertyName("name")]
18 public string Name { get; init; } = "";
19
20 [JsonPropertyName("count")]
21 public int Count { get; init; } = 0;
22 }
23
24 private class TestHandler : ActionHandlerBase
25 {
26 public TestParams? LastParams { get; private set; }
27
28 public TestHandler()
29 {
30 AddAction<TestParams>("TypedAction", p =>
31 {
32 LastParams = p;
33 return ActionResult.Ok("ok");
34 });
35 }
36 }
37
38 private static JsonElement Parse(string json) => JsonDocument.Parse(json).RootElement;
39
40 /// <summary>
41 /// Verifies that AddAction&lt;T&gt; correctly deserializes valid JSON to the typed parameter record.
42 /// </summary>
43 [Fact]
44 public void TypedAction_ValidJson_DeserializesToTypedParams()
45 {
46 var handler = new TestHandler();
47 var result = handler.Handle("TypedAction", Parse("""{"name":"test","count":5}"""));
48
49 Assert.True(result.Success);
50 Assert.NotNull(handler.LastParams);
51 Assert.Equal("test", handler.LastParams!.Name);
52 Assert.Equal(5, handler.LastParams.Count);
53 }
54
55 /// <summary>
56 /// Verifies that AddAction&lt;T&gt; returns a failure when the JSON is "null".
57 /// JsonSerializer.Deserialize returns null for the JSON literal "null".
58 /// </summary>
59 [Fact]
60 public void TypedAction_NullJson_ReturnsFailure()
61 {
62 var handler = new TestHandler();
63 var result = handler.Handle("TypedAction", Parse("null"));
64
65 Assert.False(result.Success);
66 Assert.Contains("null", result.Message, StringComparison.OrdinalIgnoreCase);
67 }
68
69 /// <summary>
70 /// Verifies that AddAction&lt;T&gt; returns a failure when JSON has a type mismatch
71 /// (e.g., string where int is expected).
72 /// </summary>
73 [Fact]
74 public void TypedAction_TypeMismatch_ReturnsFailure()
75 {
76 var handler = new TestHandler();
77 var result = handler.Handle("TypedAction", Parse("""{"name":"test","count":"notAnInt"}"""));
78
79 Assert.False(result.Success);
80 Assert.Contains("Invalid parameters", result.Message);
81 }
82}
83