using TarninaHub.Application.Abstractions;
using TarninaHub.Application.Dtos;
namespace TarninaHub.Tests.Stubs;
/// Configurable ISubmissionService stub for controller tests.
public sealed class StubSubmissionService : ISubmissionService
{
public SubmissionResponse? Current { get; set; }
public SubmissionResponse? UpdateResult { get; set; }
public string? LastRequestedStatus { get; private set; }
public Task CreateAsync(
string authorId,
CreateSubmissionRequest request,
CancellationToken cancellationToken) => Task.FromResult(Current ?? throw new InvalidOperationException());
public Task> ListAsync(
string viewerId,
bool isStaff,
string? status,
int page,
int pageSize,
CancellationToken cancellationToken) => Task.FromResult(
new PagedResponse([], page, pageSize, 0));
public Task GetAsync(string submissionId, CancellationToken cancellationToken) =>
Task.FromResult(Current);
public Task UpdateStatusAsync(
string submissionId,
string newStatus,
CancellationToken cancellationToken)
{
LastRequestedStatus = newStatus;
return Task.FromResult(UpdateResult);
}
}