Skip to content

Commit 829eccf

Browse files
committed
test(server): cover LocalCopyIsDoneCommandHandler UpdateProgress with action metrics (TransferredBytes) path
1 parent 7148c02 commit 829eccf

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed

tests/ByteSync.ServerCommon.Tests/Commands/Synchronizations/LocalCopyIsDoneCommandHandlerTests.cs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using FakeItEasy;
88
using FluentAssertions;
99
using Microsoft.Extensions.Logging;
10+
using ByteSync.Common.Business.Synchronizations;
1011

1112
namespace ByteSync.ServerCommon.Tests.Commands.Synchronizations;
1213

@@ -122,4 +123,49 @@ public async Task Handle_WhenRepositoryThrowsException_PropagatesException()
122123

123124
exception.Which.Should().Be(expectedException);
124125
}
125-
}
126+
127+
[Test]
128+
public async Task Handle_UsesMetricsForLocalCopyTransferredVolume_WhenProvided()
129+
{
130+
// Arrange
131+
var sessionId = "session-metrics";
132+
var client = new Client { ClientInstanceId = "clientX" };
133+
var actionId = "group-metrics";
134+
var actionsGroupIds = new List<string> { actionId };
135+
136+
var transferredBytes = 1_234L;
137+
var fileSize = 5_000L;
138+
139+
var request = new LocalCopyIsDoneRequest(sessionId, client, actionsGroupIds, "node-1",
140+
new Dictionary<string, SynchronizationActionMetrics>
141+
{
142+
[actionId] = new SynchronizationActionMetrics { TransferredBytes = transferredBytes }
143+
});
144+
145+
A.CallTo(() => _mockSynchronizationStatusCheckerService.CheckSynchronizationCanBeUpdated(A<SynchronizationEntity>._))
146+
.Returns(true);
147+
148+
var trackingAction = new TrackingActionEntity
149+
{
150+
ActionsGroupId = actionId,
151+
TargetClientInstanceAndNodeIds =
152+
[ new() { ClientInstanceId = client.ClientInstanceId, NodeId = request.NodeId! } ],
153+
Size = fileSize
154+
};
155+
var synchronization = new SynchronizationEntity { Progress = new SynchronizationProgressEntity() };
156+
157+
A.CallTo(() => _mockTrackingActionRepository.AddOrUpdate(sessionId, actionsGroupIds, A<Func<TrackingActionEntity, SynchronizationEntity, bool>>._))
158+
.Invokes((string _, List<string> _, Func<TrackingActionEntity, SynchronizationEntity, bool> func) =>
159+
{
160+
func(trackingAction, synchronization);
161+
})
162+
.Returns(new TrackingActionResult(true, [trackingAction], synchronization));
163+
164+
// Act
165+
await _localCopyIsDoneCommandHandler.Handle(request, CancellationToken.None);
166+
167+
// Assert
168+
synchronization.Progress.LocalCopyTransferredVolume.Should().Be(transferredBytes);
169+
synchronization.Progress.SynchronizedVolume.Should().Be(fileSize);
170+
}
171+
}

0 commit comments

Comments
 (0)