From 3eedf52248c8e9ad7e9ade3c1c99d0ee5b7bd5c3 Mon Sep 17 00:00:00 2001 From: tr00d Date: Mon, 24 Jun 2024 16:40:44 +0200 Subject: [PATCH] refactor: use PBT to assert ranges of values for Start in ExperienceComposer --- .../Start/RequestBuilderTest.cs | 66 +++++++++++-------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/Vonage.Test/Video/ExperienceComposer/Start/RequestBuilderTest.cs b/Vonage.Test/Video/ExperienceComposer/Start/RequestBuilderTest.cs index 78db7468..710ef61a 100644 --- a/Vonage.Test/Video/ExperienceComposer/Start/RequestBuilderTest.cs +++ b/Vonage.Test/Video/ExperienceComposer/Start/RequestBuilderTest.cs @@ -1,4 +1,6 @@ using System; +using FsCheck; +using FsCheck.Xunit; using Vonage.Server; using Vonage.Test.Common.Extensions; using Vonage.Video.ExperienceComposer.Start; @@ -204,33 +206,43 @@ public void Parse_ShouldReturnFailure_GivenApplicationIdIsEmpty() => .Should() .BeParsingFailure("ApplicationId cannot be empty."); - [Fact] - public void Build_ShouldReturnFailure_GivenMaxDurationIsLowerThanSixty() => - StartRequest - .Build() - .WithApplicationId(this.validApplicationId) - .WithSessionId(ValidSessionId) - .WithToken(ValidToken) - .WithUrl(this.validUri) - .WithResolution(ValidResolution) - .WithName(ValidName) - .WithMaxDuration(59) - .Create() - .Should() - .BeParsingFailure("MaxDuration cannot be lower than 60."); + [Property] + public Property Build_ShouldReturnFailure_GivenMaxDurationIsBelowMinimum() => + Prop.ForAll( + GetDurationsBelowMinimum(), + invalidDuration => StartRequest + .Build() + .WithApplicationId(this.validApplicationId) + .WithSessionId(ValidSessionId) + .WithToken(ValidToken) + .WithUrl(this.validUri) + .WithResolution(ValidResolution) + .WithName(ValidName) + .WithMaxDuration(invalidDuration) + .Create() + .Should() + .BeParsingFailure("MaxDuration cannot be lower than 60.")); + + private static Arbitrary GetDurationsBelowMinimum() => + Gen.Choose(59, -int.MaxValue).ToArbitrary(); + + private static Arbitrary GetDurationsAboveMaximum() => + Gen.Choose(36001, int.MaxValue).ToArbitrary(); [Fact] - public void Build_ShouldReturnFailure_GivenMaxDurationIsHigherThanThirtySixThousand() => - StartRequest - .Build() - .WithApplicationId(this.validApplicationId) - .WithSessionId(ValidSessionId) - .WithToken(ValidToken) - .WithUrl(this.validUri) - .WithResolution(ValidResolution) - .WithName(ValidName) - .WithMaxDuration(36001) - .Create() - .Should() - .BeParsingFailure("MaxDuration cannot be higher than 36000."); + public void Build_ShouldReturnFailure_GivenMaxDurationIsAboveMaximum() => + Prop.ForAll( + GetDurationsAboveMaximum(), + invalidDuration => StartRequest + .Build() + .WithApplicationId(this.validApplicationId) + .WithSessionId(ValidSessionId) + .WithToken(ValidToken) + .WithUrl(this.validUri) + .WithResolution(ValidResolution) + .WithName(ValidName) + .WithMaxDuration(invalidDuration) + .Create() + .Should() + .BeParsingFailure("MaxDuration cannot be higher than 36000.")); } \ No newline at end of file