mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 07:13:12 +00:00
test(work-orders): fix sync/webhook/recon fixtures for AccountId stamp [SH-221]
Seed resolvable Customer accounts and mock account resolution so create-path CI tests match fail-closed account scope. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
1edcf479ae
commit
bca2e0d50d
3 changed files with 19 additions and 7 deletions
|
|
@ -55,7 +55,7 @@ public class SyncServiceBehaviorTests
|
|||
var accountResolver = new Mock<IWorkOrderAccountResolver>();
|
||||
accountResolver
|
||||
.Setup(r => r.TryResolveFromCustomerAsync(It.IsAny<string?>(), It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync((int?)null);
|
||||
.ReturnsAsync(1);
|
||||
var service = new SyncService(data.Object, external.Object, accountResolver.Object);
|
||||
var result = await service.SyncWorkOrdersAsync(CancellationToken.None);
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ public class SyncServiceBehaviorTests
|
|||
Assert.Equal(3, result.LocationsCreated);
|
||||
Assert.Equal("Updated Title", existingWO.WorkerOrderTitle);
|
||||
Assert.Equal("In Progress", existingWO.Status);
|
||||
data.Verify(d => d.EnqueueWorkOrder(It.Is<WorkOrder>(w => w.ExternalWorkOrderId == "EXT-2")), Times.Once);
|
||||
data.Verify(d => d.EnqueueWorkOrder(It.Is<WorkOrder>(w => w.ExternalWorkOrderId == "EXT-2" && w.AccountId == 1)), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -81,17 +81,18 @@ public class SyncServiceBehaviorTests
|
|||
|
||||
var items = new List<Dictionary<string, string?>>
|
||||
{
|
||||
new() { ["work_order_id"] = "W1", ["wo_status"] = "completed", ["severity"] = "2" }
|
||||
new() { ["work_order_id"] = "W1", ["wo_status"] = "completed", ["severity"] = "2", ["customer"] = "Acme" }
|
||||
};
|
||||
external.Setup(e => e.ScanWorkOrdersAsync(It.IsAny<CancellationToken>())).Returns(items.ToAsyncEnumerable());
|
||||
|
||||
var accountResolver = new Mock<IWorkOrderAccountResolver>();
|
||||
accountResolver
|
||||
.Setup(r => r.TryResolveFromCustomerAsync(It.IsAny<string?>(), It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync((int?)null);
|
||||
.Setup(r => r.TryResolveFromCustomerAsync("Acme", It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(42);
|
||||
await new SyncService(data.Object, external.Object, accountResolver.Object).SyncWorkOrdersAsync(CancellationToken.None);
|
||||
|
||||
data.Verify(d => d.EnqueueWorkOrder(It.Is<WorkOrder>(w => w.Status == "Done" && w.Priority == "Sev 2" && w.Severity == "2")), Times.Once);
|
||||
data.Verify(d => d.EnqueueWorkOrder(It.Is<WorkOrder>(w =>
|
||||
w.Status == "Done" && w.Priority == "Sev 2" && w.Severity == "2" && w.AccountId == 42)), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -204,6 +204,8 @@ public sealed class WorkOrderReconciliationTests
|
|||
.UseInMemoryDatabase($"convergence-{Guid.NewGuid()}")
|
||||
.Options;
|
||||
await using var context = new ApplicationDbContext(options);
|
||||
context.Accounts.Add(new Accounts { Id = 1, Name = "Recon Customer", IsDeleted = false });
|
||||
await context.SaveChangesAsync();
|
||||
var data = new WorkOrderWebhookDataService(context);
|
||||
var time = DateTimeOffset.Parse("2026-07-24T12:00:00Z");
|
||||
|
||||
|
|
@ -268,7 +270,8 @@ public sealed class WorkOrderReconciliationTests
|
|||
WorkerOrderNumber = "123",
|
||||
Source = "procurement",
|
||||
IsStateEvent = true,
|
||||
Title = title
|
||||
Title = title,
|
||||
Customer = "Recon Customer"
|
||||
};
|
||||
|
||||
private sealed class MockClient : IProcurementWorkOrderClient
|
||||
|
|
|
|||
|
|
@ -252,6 +252,9 @@ public sealed class WorkOrderWebhookDataServiceTests
|
|||
.Options;
|
||||
await using var context = new CountingDbContext(options);
|
||||
await context.Database.EnsureCreatedAsync();
|
||||
context.Accounts.Add(new Accounts { Id = 1, Name = "Webhook Customer", IsDeleted = false });
|
||||
await context.SaveChangesAsync();
|
||||
context.ResetSaveCount();
|
||||
var data = new WorkOrderWebhookDataService(context);
|
||||
|
||||
var comment = Mutation(
|
||||
|
|
@ -309,6 +312,8 @@ public sealed class WorkOrderWebhookDataServiceTests
|
|||
.Options;
|
||||
await using var context = new ApplicationDbContext(options);
|
||||
await context.Database.EnsureCreatedAsync();
|
||||
context.Accounts.Add(new Accounts { Id = 1, Name = "Webhook Customer", IsDeleted = false });
|
||||
await context.SaveChangesAsync();
|
||||
var data = new WorkOrderWebhookDataService(context);
|
||||
var mutation = Mutation(
|
||||
"cancel-delivery",
|
||||
|
|
@ -377,6 +382,7 @@ public sealed class WorkOrderWebhookDataServiceTests
|
|||
Source = "procurement",
|
||||
IsStateEvent = eventType != "work_order.comment_added",
|
||||
Title = title,
|
||||
Customer = "Webhook Customer",
|
||||
Status = "Open",
|
||||
CommentId = commentId,
|
||||
CommentText = commentId == null ? null : "A comment"
|
||||
|
|
@ -391,6 +397,8 @@ public sealed class WorkOrderWebhookDataServiceTests
|
|||
|
||||
public int SaveCount { get; private set; }
|
||||
|
||||
public void ResetSaveCount() => SaveCount = 0;
|
||||
|
||||
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
SaveCount++;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue