using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.Model; using Microsoft.Extensions.DependencyInjection; using Moq; using ServerlessTestApi.Infrastructure.DataAccess; namespace ApiTests.UnitTest; public static class ServiceExtensions { public static IServiceCollection AddMockServices(this IServiceCollection services) { return services.AddSingleton(NewMockDynamoDB); } private static IAmazonDynamoDB NewMockDynamoDB(IServiceProvider serviceProvider) { var item = ProductMapper.ProductToDynamoDb(new("testid", "Test Product", 10)); var dynamoDb = new Mock(); dynamoDb.Setup(ddb => ddb.ScanAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(new ScanResponse() { Items = new(capacity: 1) { item } }); dynamoDb.Setup(p => p.GetItemAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(new GetItemResponse() { IsItemSet = true, Item = item, }); dynamoDb.Setup(p => p.PutItemAsync(It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync(new PutItemResponse()); dynamoDb.Setup(p => p.DeleteItemAsync(It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync(new DeleteItemResponse()); return dynamoDb.Object; } }