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);
}
}