using Hua.Todo.Application.Services.Meeting; using Hua.Todo.Application.Services.Meeting.Models; using Xunit; namespace Hua.Todo.Host.Tests.Meeting; /// /// 工单 03-02 音频录制与转写测试。 /// public class MeetingTranscriptionTests { [Fact] public void TranscribeRequest_CanBeCreated() { var taskId = Guid.NewGuid(); var request = new TranscribeRequest { TaskId = taskId, AudioBase64 = "dGVzdA==", Format = "webm", AudioDuration = 90.0 }; Assert.Equal(taskId, request.TaskId); Assert.Equal("dGVzdA==", request.AudioBase64); Assert.Equal("webm", request.Format); Assert.Equal(90.0, request.AudioDuration); } [Fact] public void TranscribeResponse_CanBeCreated() { var taskId = Guid.NewGuid(); var response = new TranscribeResponse { TaskId = taskId, Transcript = "这是转写后的文字内容", AudioDuration = 90.0 }; Assert.Equal(taskId, response.TaskId); Assert.Equal("这是转写后的文字内容", response.Transcript); Assert.Equal(90.0, response.AudioDuration); } [Fact] public void TranscribeResponse_DefaultValues() { var response = new TranscribeResponse(); Assert.Equal(Guid.Empty, response.TaskId); Assert.Equal(string.Empty, response.Transcript); Assert.Equal(0.0, response.AudioDuration); } [Fact] public void TranscribeRequest_DefaultValues() { var request = new TranscribeRequest(); Assert.Equal(Guid.Empty, request.TaskId); Assert.Equal(string.Empty, request.AudioBase64); Assert.Equal(string.Empty, request.Format); Assert.Equal(0.0, request.AudioDuration); } [Fact] public void ISttService_InterfaceExists() { var type = typeof(ISttService); Assert.True(type.IsInterface); Assert.Contains("Hua.Todo.Application.Services.Meeting", type.Namespace); } [Fact] public void SttService_ImplementsISttService() { var type = typeof(SttService); Assert.True(typeof(ISttService).IsAssignableFrom(type)); } [Fact] public void ISttService_HasTranscribeAsyncMethod() { var method = typeof(ISttService).GetMethod("TranscribeAsync"); Assert.NotNull(method); Assert.Equal(typeof(Task), method.ReturnType); var parameters = method.GetParameters(); Assert.Equal(3, parameters.Length); Assert.Equal(typeof(Stream), parameters[0].ParameterType); Assert.Equal(typeof(string), parameters[1].ParameterType); Assert.Equal(typeof(CancellationToken), parameters[2].ParameterType); } [Fact] public void IMeetingService_HasTranscribeAudioAsyncMethod() { var method = typeof(IMeetingService).GetMethod("TranscribeAudioAsync"); Assert.NotNull(method); Assert.Equal(typeof(Task), method.ReturnType); var parameters = method.GetParameters(); Assert.Single(parameters); Assert.Equal(typeof(TranscribeRequest), parameters[0].ParameterType); } }