using Shouldly; namespace JdeScoping.Database.Tests.Infrastructure; /// /// Extension methods for Shouldly to support patterns from FluentAssertions. /// public static class ShouldlyExtensions { /// /// Asserts that a nullable DateTime is close to the expected value within a tolerance. /// Equivalent to FluentAssertions' BeCloseTo. /// public static void ShouldBeCloseTo(this DateTime? actual, DateTime expected, TimeSpan tolerance) { actual.ShouldNotBeNull(); Math.Abs((actual.Value - expected).TotalMilliseconds) .ShouldBeLessThanOrEqualTo(tolerance.TotalMilliseconds); } /// /// Asserts that a DateTime is close to the expected value within a tolerance. /// Equivalent to FluentAssertions' BeCloseTo. /// public static void ShouldBeCloseTo(this DateTime actual, DateTime expected, TimeSpan tolerance) { Math.Abs((actual - expected).TotalMilliseconds) .ShouldBeLessThanOrEqualTo(tolerance.TotalMilliseconds); } /// /// Asserts that two collections contain equivalent items (same items, order independent). /// Equivalent to FluentAssertions' BeEquivalentTo for simple types. /// public static void ShouldBeEquivalentTo(this IEnumerable actual, IEnumerable expected) { var actualList = actual.ToList(); var expectedList = expected.ToList(); actualList.Count.ShouldBe(expectedList.Count, "Collections should have the same count"); foreach (var item in expectedList) { actualList.ShouldContain(item); } } }