-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathRefreshMessageDefinitionsFunctionTests.cs
More file actions
47 lines (41 loc) · 1.89 KB
/
RefreshMessageDefinitionsFunctionTests.cs
File metadata and controls
47 lines (41 loc) · 1.89 KB
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
using ByteSync.Functions.Timer;
using ByteSync.ServerCommon.Business.Messages;
using ByteSync.ServerCommon.Interfaces.Loaders;
using ByteSync.ServerCommon.Interfaces.Repositories;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Moq;
namespace ByteSync.Functions.UnitTests.Timer;
[TestFixture]
public class RefreshMessageDefinitionsFunctionTests
{
private Mock<IMessageDefinitionsLoader> _loader = null!;
private Mock<IMessageDefinitionRepository> _repository = null!;
private Mock<ILogger<RefreshMessageDefinitionsFunction>> _logger = null!;
[SetUp]
public void SetUp()
{
_loader = new Mock<IMessageDefinitionsLoader>();
_repository = new Mock<IMessageDefinitionRepository>();
_logger = new Mock<ILogger<RefreshMessageDefinitionsFunction>>();
}
[Test]
public async Task RunAsync_ShouldFilterExpiredMessages()
{
// Arrange
var now = DateTime.UtcNow;
var messages = new List<MessageDefinition>
{
new MessageDefinition { Id = Guid.NewGuid().ToString("D"), StartDate = now.AddHours(-1), EndDate = now.AddHours(1), Message = new Dictionary<string,string>{{"en","valid"}} },
new MessageDefinition { Id = Guid.NewGuid().ToString("D"), StartDate = now.AddHours(-2), EndDate = now.AddHours(-1), Message = new Dictionary<string,string>{{"en","expired"}} }
};
_loader.Setup(l => l.Load()).ReturnsAsync(messages);
var function = new RefreshMessageDefinitionsFunction(_loader.Object, _repository.Object, _logger.Object);
// Act
var result = await function.RunAsync(new TimerInfo());
// Assert
_loader.Verify(l => l.Load(), Times.Once);
_repository.Verify(r => r.SaveAll(It.Is<List<MessageDefinition>>(l => l.Count == 1 && l[0].Message["en"] == "valid")), Times.Once);
Assert.That(result, Is.EqualTo(1));
}
}