using Hua.Todo.Application.Services.Meeting.Models; using Hua.Todo.Core.Entities; using Xunit; namespace Hua.Todo.Host.Tests.Meeting; /// /// 工单 03-01 会议数据模型与 API 测试。 /// public class MeetingModelTests { [Fact] public void TaskType_Normal_IsZero() { Assert.Equal(0, (int)TaskType.Normal); } [Fact] public void TaskType_Meeting_IsOne() { Assert.Equal(1, (int)TaskType.Meeting); } [Fact] public void TaskEntity_DefaultTaskType_IsNormal() { var entity = new TaskEntity(); Assert.Equal(TaskType.Normal, entity.TaskType); } [Fact] public void TaskEntity_DefaultMeetingNotes_IsNull() { var entity = new TaskEntity(); Assert.Null(entity.MeetingNotes); } [Fact] public void TaskEntity_DefaultAudioDuration_IsNull() { var entity = new TaskEntity(); Assert.Null(entity.AudioDuration); } [Fact] public void TaskEntity_MeetingFields_CanBeSet() { var entity = new TaskEntity { TaskType = TaskType.Meeting, MeetingNotes = "会议讨论了三个议题", AudioDuration = 1830.5 }; Assert.Equal(TaskType.Meeting, entity.TaskType); Assert.Equal("会议讨论了三个议题", entity.MeetingNotes); Assert.Equal(1830.5, entity.AudioDuration); } [Fact] public void SaveNotesRequest_CanBeCreated() { var taskId = Guid.NewGuid(); var request = new SaveNotesRequest { TaskId = taskId, Notes = "会议纪要内容" }; Assert.Equal(taskId, request.TaskId); Assert.Equal("会议纪要内容", request.Notes); } [Fact] public void SaveNotesResponse_ContainsCorrectData() { var taskId = Guid.NewGuid(); var response = new SaveNotesResponse { TaskId = taskId, MeetingNotes = "已保存的纪要" }; Assert.Equal(taskId, response.TaskId); Assert.Equal("已保存的纪要", response.MeetingNotes); } [Fact] public void MeetingDetailResponse_ContainsCorrectData() { var taskId = Guid.NewGuid(); var response = new MeetingDetailResponse { TaskId = taskId, Title = "周一产品评审会", MeetingNotes = "纪要内容", AudioDuration = 900.0, IsCompleted = false }; Assert.Equal(taskId, response.TaskId); Assert.Equal("周一产品评审会", response.Title); Assert.Equal("纪要内容", response.MeetingNotes); Assert.Equal(900.0, response.AudioDuration); Assert.False(response.IsCompleted); } [Fact] public void TaskEntity_MeetingType_CanBeChildTask() { var parentId = Guid.NewGuid(); var parent = new TaskEntity { Id = parentId, Title = "周一例会", TaskType = TaskType.Meeting }; var child = new TaskEntity { Id = Guid.NewGuid(), Title = "准备PPT", ParentTaskId = parentId, ParentTask = parent }; parent.SubTasks.Add(child); Assert.Single(parent.SubTasks); Assert.Equal(TaskType.Meeting, parent.TaskType); Assert.Equal(parentId, child.ParentTaskId); } [Fact] public void TaskType_IsDefinedOnEntity() { // 验证 TaskType 是 TaskEntity 的有效属性 var property = typeof(TaskEntity).GetProperty("TaskType"); Assert.NotNull(property); Assert.Equal(typeof(TaskType), property.PropertyType); } [Fact] public void MeetingNotes_IsDefinedOnEntity() { var property = typeof(TaskEntity).GetProperty("MeetingNotes"); Assert.NotNull(property); Assert.Equal(typeof(string), property.PropertyType); } [Fact] public void AudioDuration_IsDefinedOnEntity() { var property = typeof(TaskEntity).GetProperty("AudioDuration"); Assert.NotNull(property); Assert.Equal(typeof(double?), property.PropertyType); } }