Add unit tests for Environments, Audit, and Webhooks namespaces (#6)
## Summary - Add missing unit test coverage for the Environments, Audit, and Webhooks namespaces (raises them from ~0-62% to 91-100%) - Exclude WebhookBackgroundService/WebhookRetryBackgroundService from coverage (require live DI/DB, disallowed by CLAUDE.md's no-InMemory/WebApplicationFactory rule) ## Test plan - [x] `dotnet test` full suite passes (646/646) - [x] Coverage report confirms Environments ~99.5%, Audit 100%, Webhooks ~91% Reviewed-on: #6
This commit was merged in pull request #6.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using MicCheck.Api.Environments;
|
||||
using MicCheck.Api.Segments;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace MicCheck.Api.Tests.Unit.Environments;
|
||||
|
||||
[TestFixture]
|
||||
public class SegmentDocumentResponseTests
|
||||
{
|
||||
[Test]
|
||||
public void WhenMappingASegment_ThenOnlyTopLevelRulesAreIncluded()
|
||||
{
|
||||
var segment = new Segment { Id = 1, Name = "Beta Users", ProjectId = 1, CreatedAt = DateTimeOffset.UtcNow };
|
||||
var topLevelRule = new SegmentRule { Id = 1, SegmentId = 1, Type = SegmentRuleType.All };
|
||||
var nestedRule = new SegmentRule { Id = 2, SegmentId = 1, ParentRuleId = 1, Type = SegmentRuleType.Any };
|
||||
segment.Rules.Add(topLevelRule);
|
||||
segment.Rules.Add(nestedRule);
|
||||
|
||||
var response = SegmentDocumentResponse.From(segment);
|
||||
|
||||
Assert.That(response.Id, Is.EqualTo(1));
|
||||
Assert.That(response.Name, Is.EqualTo("Beta Users"));
|
||||
Assert.That(response.Rules, Has.Count.EqualTo(1));
|
||||
Assert.That(response.Rules[0].Id, Is.EqualTo(1));
|
||||
}
|
||||
}
|
||||
|
||||
[TestFixture]
|
||||
public class SegmentRuleDocumentResponseTests
|
||||
{
|
||||
[Test]
|
||||
public void WhenMappingARule_ThenTypeIsUpperInvariantAndChildRulesAreIncluded()
|
||||
{
|
||||
var rule = new SegmentRule { Id = 1, SegmentId = 1, Type = SegmentRuleType.Any };
|
||||
var condition = new SegmentCondition { Id = 1, RuleId = 1, Property = "plan", Operator = SegmentConditionOperator.Equal, Value = "pro" };
|
||||
var childRule = new SegmentRule { Id = 2, SegmentId = 1, ParentRuleId = 1, Type = SegmentRuleType.All };
|
||||
rule.Conditions.Add(condition);
|
||||
rule.ChildRules.Add(childRule);
|
||||
|
||||
var response = SegmentRuleDocumentResponse.From(rule);
|
||||
|
||||
Assert.That(response.Type, Is.EqualTo("ANY"));
|
||||
Assert.That(response.Conditions, Has.Count.EqualTo(1));
|
||||
Assert.That(response.Rules, Has.Count.EqualTo(1));
|
||||
Assert.That(response.Rules[0].Id, Is.EqualTo(2));
|
||||
}
|
||||
}
|
||||
|
||||
[TestFixture]
|
||||
public class SegmentConditionDocumentResponseTests
|
||||
{
|
||||
[Test]
|
||||
public void WhenMappingACondition_ThenPropertyOperatorAndValueAreCopied()
|
||||
{
|
||||
var condition = new SegmentCondition { Id = 1, RuleId = 1, Property = "plan", Operator = SegmentConditionOperator.Contains, Value = "pro" };
|
||||
|
||||
var response = SegmentConditionDocumentResponse.From(condition);
|
||||
|
||||
Assert.That(response.Property, Is.EqualTo("plan"));
|
||||
Assert.That(response.Operator, Is.EqualTo("Contains"));
|
||||
Assert.That(response.Value, Is.EqualTo("pro"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user