187 lines
5.0 KiB
C#
187 lines
5.0 KiB
C#
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);
|
|
}
|
|
}
|