Skip to content

Commit

Permalink
Merge pull request #1 from vitalybibikov/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
vitalybibikov authored Apr 16, 2024
2 parents 57706f7 + 6287d78 commit 78a5fa0
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 8 deletions.
5 changes: 5 additions & 0 deletions DynamoDBv2.Transactions.sln
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{A282
scripts\localstack\dynamodb\init-aws.sh = scripts\localstack\dynamodb\init-aws.sh
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{302323FD-9917-45B3-AA5C-3D3A4396535C}"
ProjectSection(SolutionItems) = preProject
.github\workflows\dotnet.yml = .github\workflows\dotnet.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down
11 changes: 11 additions & 0 deletions docker-compose.override.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,17 @@ services:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- './localstack:/var/lib/localstack'
- './test-results:/app/test-results'
unittests:
environment:
<<: *common-variables
AWS_ACCESS_KEY_ID: dummy
AWS_SECRET_ACCESS_KEY: dummy
AWS_HOST: http://localstack:4566
ports:
- 5056:8080
volumes:
- './localstack:/var/lib/localstack'
- './test-results:/app/test-results'
localstack:
environment:
<<: *common-variables
Expand Down
5 changes: 5 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ services:
dockerfile: ./test/DynamoDBv2.Transactions.IntegrationTests/Dockerfile
depends_on:
- localstack
unittests:
image: ${DOCKER_REGISTRY-}unittests
build:
context: .
dockerfile: ./test/DynamoDBv2.Transactions.UnitTests/Dockerfile

localstack:
container_name: localstack
Expand Down
2 changes: 1 addition & 1 deletion src/TransactionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamoDBv2.Transactions;

public sealed class TransactionManager(AmazonDynamoDBClient client)
public sealed class TransactionManager(IAmazonDynamoDB client)
: ITransactionManager
{
public async Task<TransactWriteItemsResponse?> ExecuteTransactionAsync(IEnumerable<ITransactionRequest> requests, CancellationToken token = default)
Expand Down
8 changes: 8 additions & 0 deletions test/DynamoDBv2.Transactions.UnitTests/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine3.18 AS build

COPY . .
WORKDIR "/app/test-results"
WORKDIR "/test/DynamoDBv2.Transactions.UnitTests"
RUN dotnet build "DynamoDBv2.Transactions.UnitTests.csproj"

ENTRYPOINT ["dotnet", "test", "--logger", "trx;LogFileName=/app/test-results/unittests-results.trx"]
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>..\..</DockerfileContext>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.6" />
<PackageReference Include="Moq" Version="4.20.70" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"profiles": {
"DynamoDBv2.Transactions.UnitTests": {
"commandName": "Project"
},
"Container (Dockerfile)": {
"commandName": "Docker"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@

namespace DynamoDBv2.Transactions.UnitTests
{
public class TransactionManagerTests
public class TransactionManagerMockTests
{
[Fact]
public async Task ExecuteTransactionAsync_MapsOperationsCorrectly()
{
// Arrange
var client = new Mock<AmazonDynamoDBClient>();
var manager = new TransactionManager(client.Object);
var mockAmazonDynamoDB = new Mock<IAmazonDynamoDB>();
var manager = new TransactionManager(mockAmazonDynamoDB.Object);
var requests = new List<ITransactionRequest>
{
new ConditionCheckTransactionRequest<SomeDynamoDbEntity>(),
Expand All @@ -30,15 +30,15 @@ public async Task ExecuteTransactionAsync_MapsOperationsCorrectly()
var response = await manager.ExecuteTransactionAsync(requests);

// Assert
client.Verify(c => c.TransactWriteItemsAsync(It.IsAny<TransactWriteItemsRequest>(), CancellationToken.None), Times.Once());
mockAmazonDynamoDB.Verify(c => c.TransactWriteItemsAsync(It.IsAny<TransactWriteItemsRequest>(), CancellationToken.None), Times.Once());
}

[Fact]
public async Task ExecuteTransactionAsync_AllItemsPassedToEnd()
{
// Arrange
var client = new Mock<AmazonDynamoDBClient>();
var manager = new TransactionManager(client.Object);
var mockAmazonDynamoDB = new Mock<IAmazonDynamoDB>();
var manager = new TransactionManager(mockAmazonDynamoDB.Object);
var requests = new List<ITransactionRequest>
{
new ConditionCheckTransactionRequest<SomeDynamoDbEntity>(),
Expand All @@ -52,7 +52,7 @@ public async Task ExecuteTransactionAsync_AllItemsPassedToEnd()
await manager.ExecuteTransactionAsync(requests);

// Assert
client.Verify(x => x.TransactWriteItemsAsync(It.Is<TransactWriteItemsRequest>(req =>
mockAmazonDynamoDB.Verify(x => x.TransactWriteItemsAsync(It.Is<TransactWriteItemsRequest>(req =>
req.TransactItems.Count == 5 &&
req.TransactItems[0].ConditionCheck != null &&
req.TransactItems[1].Delete != null &&
Expand Down

0 comments on commit 78a5fa0

Please sign in to comment.