using Microsoft.Extensions.Logging; using Dapr.Actors; using Dapr.Actors.Client; using Moq; using MaksIT.Dapr.Services; namespace MaksIT.Dapr.Tests; public class DaprActorServiceTests { [Fact] public void Create_ReturnsBadRequest_WhenActorIdEmpty() { var service = new DaprActorService( Mock.Of>(), Mock.Of()); var result = service.Create(" ", "MyActor"); Assert.False(result.IsSuccess); } [Fact] public void Create_ReturnsOk_WhenFactorySucceeds() { var actor = ActorProxy.Create(new ActorId("1"), "MyActor"); var factory = new Mock(); factory .Setup(f => f.Create(It.IsAny(), "MyActor", null)) .Returns(actor); var service = new DaprActorService( Mock.Of>(), factory.Object); var result = service.Create("1", "MyActor"); Assert.True(result.IsSuccess); Assert.NotNull(result.Value); } [Fact] public async Task InvokeAsync_ReturnsBadRequest_WhenMethodEmpty() { var service = new DaprActorService( Mock.Of>(), Mock.Of()); var result = await service.InvokeAsync("1", "MyActor", " "); Assert.False(result.IsSuccess); } [Fact] public async Task InvokeAsync_ReturnsInternalServerError_WhenFactoryThrows() { var factory = new Mock(); factory .Setup(f => f.Create(It.IsAny(), "MyActor", null)) .Throws(new InvalidOperationException("sidecar unavailable")); var service = new DaprActorService( Mock.Of>(), factory.Object); var result = await service.InvokeAsync("1", "MyActor", "DoWork"); Assert.False(result.IsSuccess); } }