using System; using System.Collections.Generic; using Centron.BusinessLogic; using Centron.BusinessLogic.Telemetry; using Centron.Data.Entities.Telemetry; using Centron.Tests.EndToEnd.Infrastructure; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.Telemetry { public class TelemetryUpsertMcpToolUsage_IncrementExisting : EndToEndTest { public TelemetryUpsertMcpToolUsage_IncrementExisting(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { int toolNameI3D = 0; this.WithSession(session => { var resolve = session.GetBL().ResolveMcpToolNameI3Ds(new[] { "create_ticket" }); Assert.True(resolve.IsSuccess); toolNameI3D = resolve.Data["create_ticket"]; }); this.Sql($@" INSERT INTO dbo.McpToolUsageTelemetry (UserID, ToolNameI3D, HardwareIDI3D, ToolMode, BucketStartUtc, [Count]) VALUES (11, {toolNameI3D}, 0, 0, '2026-05-02T12:15:00', 5)"); var bucket = new DateTime(2026, 5, 2, 12, 15, 0, DateTimeKind.Utc); var increments = new List { new() { UserID = 11, ToolNameI3D = toolNameI3D, ToolMode = McpToolMode.User, BucketStartUtc = bucket, Increment = 3 } }; this.WithSession(session => { var result = session.GetBL().UpsertMcpToolUsageBatch(increments); Assert.True(result.IsSuccess); }); var rowCount = this.Sql( $"SELECT COUNT(*) FROM dbo.McpToolUsageTelemetry WHERE UserID = 11 AND ToolNameI3D = {toolNameI3D} AND ToolMode = 0 AND BucketStartUtc = '2026-05-02T12:15:00'"); var count = this.Sql( $"SELECT [Count] FROM dbo.McpToolUsageTelemetry WHERE UserID = 11 AND ToolNameI3D = {toolNameI3D} AND ToolMode = 0 AND BucketStartUtc = '2026-05-02T12:15:00'"); Assert.Equal(1, rowCount); Assert.Equal(8, count); } } }