Files
2026-08-05 21:15:15 +03:00

136 lines
4.2 KiB
C#

using Chat.Domain.Entities;
using FluentAssertions;
using System;
using Xunit;
namespace Chat.Tests;
public class ConversationTests
{
[Fact]
public void Test_CanCreateConversationWithDefaultValues()
{
// Arrange & Act
var conversation = new Conversation();
// Assert
conversation.Should().NotBeNull();
conversation.Id.Should().BeEmpty();
conversation.Participant1Id.Should().BeEmpty();
conversation.Participant2Id.Should().BeEmpty();
conversation.CreatedAt.Should().BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(1));
conversation.LastMessageId.Should().BeNull();
conversation.UnreadCount1.Should().Be(0);
conversation.UnreadCount2.Should().Be(0);
}
[Fact]
public void Test_CanCreateConversationWithAllProperties()
{
// Arrange
var id = Guid.NewGuid();
var participant1Id = Guid.NewGuid();
var participant2Id = Guid.NewGuid();
var createdAt = DateTime.UtcNow.AddHours(-1);
var lastMessageId = Guid.NewGuid();
var lastMessageAt = DateTime.UtcNow;
var unreadCount1 = 5;
var unreadCount2 = 2;
// Act
var conversation = new Conversation
{
Id = id,
Participant1Id = participant1Id,
Participant2Id = participant2Id,
CreatedAt = createdAt,
LastMessageId = lastMessageId,
LastMessageAt = lastMessageAt,
UnreadCount1 = unreadCount1,
UnreadCount2 = unreadCount2
};
// Assert
conversation.Id.Should().Be(id);
conversation.Participant1Id.Should().Be(participant1Id);
conversation.Participant2Id.Should().Be(participant2Id);
conversation.CreatedAt.Should().Be(createdAt);
conversation.LastMessageId.Should().Be(lastMessageId);
conversation.LastMessageAt.Should().Be(lastMessageAt);
conversation.UnreadCount1.Should().Be(unreadCount1);
conversation.UnreadCount2.Should().Be(unreadCount2);
}
[Fact]
public void Test_ConversationPropertiesAreCorrectlySet()
{
// Arrange
var conversation = new Conversation();
// Act
conversation.Id = Guid.NewGuid();
conversation.Participant1Id = Guid.NewGuid();
conversation.Participant2Id = Guid.NewGuid();
conversation.CreatedAt = DateTime.UtcNow;
conversation.LastMessageId = Guid.NewGuid();
conversation.LastMessageAt = DateTime.UtcNow;
conversation.UnreadCount1 = 10;
conversation.UnreadCount2 = 7;
// Assert
conversation.Id.Should().NotBeEmpty();
conversation.Participant1Id.Should().NotBeEmpty();
conversation.Participant2Id.Should().NotBeEmpty();
conversation.CreatedAt.Should().BeAfter(DateTime.MinValue);
conversation.LastMessageId.Should().NotBeNull();
conversation.LastMessageAt.Should().BeAfter(DateTime.MinValue);
conversation.UnreadCount1.Should().Be(10);
conversation.UnreadCount2.Should().Be(7);
}
[Fact]
public void Test_LastMessageIdCanBeNullable()
{
// Arrange
var conversation = new Conversation();
var messageId = Guid.NewGuid();
// Act
conversation.LastMessageId = messageId;
// Assert
conversation.LastMessageId.Should().NotBeNull();
conversation.LastMessageId.Should().Be(messageId);
// Act - set to null
conversation.LastMessageId = null;
// Assert
conversation.LastMessageId.Should().BeNull();
}
[Fact]
public void Test_CreatedAtDefaultsToCurrentTime()
{
// Arrange & Act
var beforeCreation = DateTime.UtcNow;
var conversation = new Conversation();
var afterCreation = DateTime.UtcNow;
// Assert
conversation.CreatedAt.Should().BeOnOrBefore(afterCreation);
conversation.CreatedAt.Should().BeOnOrAfter(beforeCreation);
}
[Fact]
public void Test_UnreadCountsDefaultToZero()
{
// Arrange & Act
var conversation = new Conversation();
// Assert
conversation.UnreadCount1.Should().Be(0);
conversation.UnreadCount2.Should().Be(0);
}
}