feat(deployment): DeployToSiteAsync for single-site artifact deployment
Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
@@ -233,6 +233,41 @@ public class ArtifactDeploymentServiceTests : TestKit
|
||||
Arg.Any<string>(), "retry-site", Arg.Any<object>(), Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
// ── PLAN-07 Task 4: single-site artifact deployment ──
|
||||
|
||||
[Fact]
|
||||
public async Task DeployToSiteAsync_DeploysOnlyToTargetSite()
|
||||
{
|
||||
// Two sites exist; deploying to site 1 must build/send exactly one per-site
|
||||
// command (for SITE1) and never touch SITE2's per-site data.
|
||||
var site1 = new Site("Site One", "SITE1") { Id = 1 };
|
||||
_siteRepo.GetSiteByIdAsync(1, Arg.Any<CancellationToken>()).Returns(site1);
|
||||
var recorder = new ArtifactProbeRecorder();
|
||||
var probe = Sys.ActorOf(Props.Create(() => new ArtifactProbeActor(recorder)));
|
||||
var service = CreateServiceWithCommActor(probe);
|
||||
|
||||
var result = await service.DeployToSiteAsync(1, "tester");
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.Single(result.Value.SiteResults);
|
||||
Assert.Equal("SITE1", result.Value.SiteResults[0].SiteId);
|
||||
Assert.Single(recorder.Received);
|
||||
await _siteRepo.Received(1).GetDataConnectionsBySiteIdAsync(1, Arg.Any<CancellationToken>());
|
||||
await _siteRepo.DidNotReceive().GetDataConnectionsBySiteIdAsync(2, Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeployToSiteAsync_UnknownSite_ReturnsFailure()
|
||||
{
|
||||
_siteRepo.GetSiteByIdAsync(999, Arg.Any<CancellationToken>()).Returns((Site?)null);
|
||||
var service = CreateService();
|
||||
|
||||
var result = await service.DeployToSiteAsync(999, "tester");
|
||||
|
||||
Assert.True(result.IsFailure);
|
||||
Assert.Contains("999", result.Error);
|
||||
}
|
||||
|
||||
private ArtifactDeploymentService CreateService()
|
||||
{
|
||||
var comms = new CommunicationService(
|
||||
|
||||
Reference in New Issue
Block a user