Files
mic-check/tests/api/MicCheck.Api.Tests.Unit/Environments/EnvironmentDocumentResponseTests.cs
James Wampler 68d426253d Add unit tests for Environments namespace (0% to 99.5% coverage)
Covers EnvironmentService (CRUD, clone, list, find-by-key), the
EnvironmentsController orchestration layer (webhooks, audit logs,
identities/traits, feature states, feature segments, identity
segments), EnvironmentDocumentService/Controller, response mappers,
and request validators.
2026-07-05 15:04:03 -07:00

64 lines
2.4 KiB
C#

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"));
}
}