using Dapr.Client; using MaksIT.Dapr.Services; using Microsoft.Extensions.Logging; using Moq; namespace MaksIT.Dapr.Tests; public class DaprStateStoreServiceTests { [Fact] public async Task SetStateAsync_ReturnsOk_WhenSaveSucceeds() { var clientMock = new Mock(); clientMock .Setup(x => x.SaveStateAsync( It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) .Returns(Task.CompletedTask); var service = new DaprStateStoreService( Mock.Of>(), clientMock.Object); var result = await service.SetStateAsync("store", "key", "value"); Assert.True(result.IsSuccess); } [Fact] public async Task GetStateAsync_ReturnsOk_WhenStateExists() { var clientMock = new Mock(); clientMock .Setup(x => x.GetStateAsync( It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync("value"); var service = new DaprStateStoreService( Mock.Of>(), clientMock.Object); var result = await service.GetStateAsync("store", "key"); Assert.True(result.IsSuccess); Assert.Equal("value", result.Value); } [Fact] public async Task GetStateAsync_ReturnsNotFound_WhenStateIsNull() { var clientMock = new Mock(); clientMock .Setup(x => x.GetStateAsync( It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync((string?)null); var service = new DaprStateStoreService( Mock.Of>(), clientMock.Object); var result = await service.GetStateAsync("store", "key"); Assert.False(result.IsSuccess); Assert.Null(result.Value); } [Fact] public async Task DeleteStateAsync_ReturnsInternalServerError_WhenDeleteFails() { var clientMock = new Mock(); clientMock .Setup(x => x.DeleteStateAsync( It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) .ThrowsAsync(new InvalidOperationException("delete failed")); var service = new DaprStateStoreService( Mock.Of>(), clientMock.Object); var result = await service.DeleteStateAsync("store", "key"); Assert.False(result.IsSuccess); } }