-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAiControllerTests.cs
More file actions
55 lines (46 loc) · 2.18 KB
/
Copy pathAiControllerTests.cs
File metadata and controls
55 lines (46 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace TalentManagementAPI.WebApi.Tests.Controllers
{
public class AiControllerTests
{
private readonly Mock<IAiChatService> _aiChatServiceMock = new();
private readonly Mock<IFeatureManagerSnapshot> _featureManagerMock = new();
private readonly Mock<IAiResponseMetadata> _aiMetadataMock = new();
private readonly AiController _controller;
public AiControllerTests()
{
_controller = new AiController(
_aiChatServiceMock.Object,
_featureManagerMock.Object,
_aiMetadataMock.Object);
}
[Fact]
public async Task Chat_AiDisabled_ReturnsServiceUnavailableProblemDetails()
{
_featureManagerMock
.Setup(m => m.IsEnabledAsync("AiEnabled"))
.ReturnsAsync(false);
var result = await _controller.Chat(new AiChatRequest("hello"), CancellationToken.None);
var objectResult = result.Should().BeOfType<ObjectResult>().Subject;
objectResult.StatusCode.Should().Be(StatusCodes.Status503ServiceUnavailable);
var problem = objectResult.Value.Should().BeOfType<ProblemDetails>().Subject;
problem.Title.Should().Be("AI chat is disabled");
problem.Detail.Should().Be("AI chat is disabled. Enable FeatureManagement:AiEnabled to use this endpoint.");
_aiChatServiceMock.Verify(
m => m.ChatAsync(It.IsAny<string>(), It.IsAny<string?>(), It.IsAny<CancellationToken>()),
Times.Never);
}
[Fact]
public async Task Chat_AiEnabled_ReturnsOkWithReply()
{
_featureManagerMock
.Setup(m => m.IsEnabledAsync("AiEnabled"))
.ReturnsAsync(true);
_aiChatServiceMock
.Setup(m => m.ChatAsync("hello", null, It.IsAny<CancellationToken>()))
.ReturnsAsync("hi");
var result = await _controller.Chat(new AiChatRequest("hello"), CancellationToken.None);
var okResult = result.Should().BeOfType<OkObjectResult>().Subject;
okResult.Value.Should().BeEquivalentTo(new AiChatResponse("hi"));
}
}
}