using Meezi.API.Services.Printing;
using Microsoft.Extensions.DependencyInjection;

namespace Meezi.API.Tests;

internal sealed class NoOpPrinterService : IPrinterService
{
    public Task<PrintResult> PrintReceiptAsync(string cafeId, string orderId, CancellationToken ct = default) =>
        Task.FromResult(PrintResult.Ok());

    public Task<PrintResult> PrintKitchenTicketAsync(string cafeId, string orderId, CancellationToken ct = default) =>
        Task.FromResult(PrintResult.Ok());

    public Task<PrintResult> TestPrintAsync(string printerIp, int port, CancellationToken ct = default) =>
        Task.FromResult(PrintResult.Ok());
}

internal static class TestServiceScopeFactory
{
    public static IServiceScopeFactory Create() =>
        new ServiceCollection()
            .AddSingleton<IPrinterService, NoOpPrinterService>()
            .BuildServiceProvider()
            .GetRequiredService<IServiceScopeFactory>();
}
