-
Notifications
You must be signed in to change notification settings - Fork 109
/
Copy pathSqsEventHandlerTests.cs
87 lines (71 loc) · 2.68 KB
/
SqsEventHandlerTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System.Threading.Tasks;
using Amazon.Lambda.Core;
using Amazon.Lambda.TestUtilities;
using FakeItEasy;
using FluentAssertions;
using SqsEventHandler.Handlers;
using SqsEventHandler.Models;
using SqsEventHandler.UnitTests.Utilities;
using Xunit;
namespace SqsEventHandler.UnitTests.Handlers;
public class SqsEventHandlerTests
{
private readonly SqsEventHandler<Employee> _mockSqsEventTrigger;
public SqsEventHandlerTests()
{
_mockSqsEventTrigger = A.Fake<SqsEventHandler<Employee>>();
A.CallTo(() => _mockSqsEventTrigger.ProcessSqsMessage(A<Employee>._, A<ILambdaContext>._))
.Returns(Task.CompletedTask);
}
[Fact]
public async Task SqsEventHandler_Should_CallProcessSqsMessageOnce()
{
//Arrange
var expected = new EmployeeBuilder().Build();
var sqsEvent = new SqsEventBuilder().WithEmployees(new[] { expected });
var lambdaContext = new TestLambdaContext();
//Act
var result = await _mockSqsEventTrigger.Handler(sqsEvent, lambdaContext);
//Assert
result.BatchItemFailures.Should().BeEmpty();
A.CallTo(() => _mockSqsEventTrigger.ProcessSqsMessage(
expected,
A<ILambdaContext>._))
.MustHaveHappenedOnceExactly();
}
[Fact]
public async Task SqsEventHandler_Should_CallProcessSqsMessageTwice()
{
//Arrange
var expected1 = new EmployeeBuilder().WithEmployeeId("101");
var expected2 = new EmployeeBuilder().WithEmployeeId("102");
var sqsEvent = new SqsEventBuilder().WithEmployees(new[] { expected1, expected2 });
var lambdaContext = new TestLambdaContext();
//Act
var result = await _mockSqsEventTrigger.Handler(sqsEvent, lambdaContext);
//Assert
result.BatchItemFailures.Should().BeEmpty();
A.CallTo(() => _mockSqsEventTrigger.ProcessSqsMessage(
expected1,
A<ILambdaContext>._))
.MustHaveHappenedOnceExactly();
A.CallTo(() => _mockSqsEventTrigger.ProcessSqsMessage(
expected2,
A<ILambdaContext>._))
.MustHaveHappenedOnceExactly();
}
[Fact]
public async Task SqsEventHandler_Should_ReturnBatchItemFailures()
{
//Arrange
var sqsEvent = new SqsEventBuilder().WithoutEmployees();
var lambdaContext = new TestLambdaContext();
//Act
await _mockSqsEventTrigger.Handler(sqsEvent, lambdaContext);
//Assert
A.CallTo(() => _mockSqsEventTrigger.ProcessSqsMessage(
A<Employee>._,
A<ILambdaContext>._))
.MustNotHaveHappened();
}
}