add tests
This commit is contained in:
186
ChatBot.Tests/Models/ChatSessionTests.cs
Normal file
186
ChatBot.Tests/Models/ChatSessionTests.cs
Normal file
@@ -0,0 +1,186 @@
|
||||
using ChatBot.Models;
|
||||
using ChatBot.Models.Dto;
|
||||
using FluentAssertions;
|
||||
using OllamaSharp.Models.Chat;
|
||||
|
||||
namespace ChatBot.Tests.Models;
|
||||
|
||||
public class ChatSessionTests
|
||||
{
|
||||
[Fact]
|
||||
public void Constructor_ShouldInitializeProperties()
|
||||
{
|
||||
// Arrange & Act
|
||||
var session = new ChatSession();
|
||||
|
||||
// Assert
|
||||
session.ChatId.Should().Be(0);
|
||||
session.SessionId.Should().NotBeNullOrEmpty();
|
||||
session.ChatType.Should().Be("private");
|
||||
session.ChatTitle.Should().Be(string.Empty);
|
||||
session.Model.Should().Be(string.Empty);
|
||||
session.CreatedAt.Should().BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(1));
|
||||
session.LastUpdatedAt.Should().BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(1));
|
||||
session.GetAllMessages().Should().NotBeNull();
|
||||
session.GetAllMessages().Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddUserMessage_ShouldAddMessageToSession()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
var content = "Hello";
|
||||
var username = "testuser";
|
||||
|
||||
// Act
|
||||
session.AddUserMessage(content, username);
|
||||
|
||||
// Assert
|
||||
session.GetAllMessages().Should().HaveCount(1);
|
||||
var message = session.GetAllMessages().First();
|
||||
message.Role.Should().Be(ChatRole.User);
|
||||
message.Content.Should().Be(content);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddAssistantMessage_ShouldAddMessageToSession()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
var content = "Hello! How can I help you?";
|
||||
|
||||
// Act
|
||||
session.AddAssistantMessage(content);
|
||||
|
||||
// Assert
|
||||
session.GetAllMessages().Should().HaveCount(1);
|
||||
var message = session.GetAllMessages().First();
|
||||
message.Role.Should().Be(ChatRole.Assistant);
|
||||
message.Content.Should().Be(content);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddMessage_ShouldAddMessageToSession()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
var content = "You are a helpful assistant.";
|
||||
var message = new ChatMessage { Role = ChatRole.System, Content = content };
|
||||
|
||||
// Act
|
||||
session.AddMessage(message);
|
||||
|
||||
// Assert
|
||||
session.GetAllMessages().Should().HaveCount(1);
|
||||
var addedMessage = session.GetAllMessages().First();
|
||||
addedMessage.Role.Should().Be(ChatRole.System);
|
||||
addedMessage.Content.Should().Be(content);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ClearHistory_ShouldRemoveAllMessages()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
session.AddUserMessage("Hello", "testuser");
|
||||
session.AddAssistantMessage("Hi there!");
|
||||
|
||||
// Act
|
||||
session.ClearHistory();
|
||||
|
||||
// Assert
|
||||
session.GetAllMessages().Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetMessageCount_ShouldReturnCorrectCount()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
session.AddUserMessage("Hello", "testuser");
|
||||
session.AddAssistantMessage("Hi there!");
|
||||
session.AddUserMessage("How are you?", "testuser");
|
||||
|
||||
// Act
|
||||
var count = session.GetMessageCount();
|
||||
|
||||
// Assert
|
||||
count.Should().Be(3);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetLastMessage_ShouldReturnLastMessage()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
session.AddUserMessage("Hello", "testuser");
|
||||
session.AddAssistantMessage("Hi there!");
|
||||
session.AddUserMessage("How are you?", "testuser");
|
||||
|
||||
// Act
|
||||
var messages = session.GetAllMessages();
|
||||
var lastMessage = messages.LastOrDefault();
|
||||
|
||||
// Assert
|
||||
lastMessage.Should().NotBeNull();
|
||||
lastMessage!.Content.Should().Be("How are you?");
|
||||
lastMessage.Role.Should().Be(ChatRole.User);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetLastMessage_ShouldReturnNull_WhenNoMessages()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
|
||||
// Act
|
||||
var messages = session.GetAllMessages();
|
||||
var lastMessage = messages.LastOrDefault();
|
||||
|
||||
// Assert
|
||||
lastMessage.Should().BeNull();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddMessage_ShouldUpdateLastUpdatedAt()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
var originalTime = session.LastUpdatedAt;
|
||||
var message = new ChatMessage { Role = ChatRole.User, Content = "Test" };
|
||||
|
||||
// Act
|
||||
session.AddMessage(message);
|
||||
|
||||
// Assert
|
||||
session.LastUpdatedAt.Should().BeAfter(originalTime);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetMessageCount_ShouldReturnZero_WhenNoMessages()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
|
||||
// Act
|
||||
var count = session.GetMessageCount();
|
||||
|
||||
// Assert
|
||||
count.Should().Be(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetMessageCount_ShouldReturnCorrectCount_WhenHasMessages()
|
||||
{
|
||||
// Arrange
|
||||
var session = new ChatSession();
|
||||
session.AddUserMessage("Hello", "testuser");
|
||||
|
||||
// Act
|
||||
var count = session.GetMessageCount();
|
||||
|
||||
// Assert
|
||||
count.Should().Be(1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user