📄 tests/Integrations/FaceCamera/FaceDetectionServiceTests/IntegrationTests.cs
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Shouldly;

namespace MMirror.Integrations.FaceCamera.Tests.FaceDetectionServiceTests;

[TestClass]
public sealed class IntegrationTests
{
    [TestMethod]
    public async Task IntegrationTest()
    {
        var host = Host.CreateApplicationBuilder();
        host.Configuration.AddUserSecrets<IntegrationTests>();
        host.Services.AddFaceCameraServices();
        var app = host.Build();
        var faceDetectionService = app.Services.GetRequiredService<FaceDetectionService>();
        var tcs = new TaskCompletionSource<FaceDetection[]>();
        faceDetectionService.FaceDetected += OnFaceDetected;
        var faces = await tcs.Task;
        faces.Length.ShouldBeGreaterThan(0);

        void OnFaceDetected(ReadOnlySpan<FaceDetection> faces)
        {
            faceDetectionService.FaceDetected -= OnFaceDetected;
            tcs.SetResult(faces.ToArray());
        }
    }
}