Skip to content

Commit

Permalink
feat: implement builder for Uri in CreateConversation
Browse files Browse the repository at this point in the history
  • Loading branch information
Tr00d committed Dec 6, 2023
1 parent 5b1b575 commit 4d012dd
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Vonage.Common.Test.Extensions;
using System;
using Vonage.Common.Test.Extensions;
using Vonage.Conversations.CreateConversation;
using Xunit;

Expand Down Expand Up @@ -70,5 +71,14 @@ public class RequestBuilderTest
.Map(request => request.Name)
.Should()
.BeSuccess(new string('a', 100));

[Fact]
public void Build_ShouldSetUri() =>
CreateConversationRequest.Build()
.WithUri(new Uri("https://example.com"))
.Create()
.Map(request => request.Uri)
.Should()
.BeSuccess(new Uri("https://example.com"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ namespace Vonage.Conversations.CreateConversation;
/// </summary>
public Maybe<string> Name { get; internal init; }

/// <summary>
/// </summary>
public Maybe<Uri> Uri { get; internal init; }

/// <summary>
/// Initializes a builder for CreateConversationRequest.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Vonage.Common.Client;
using System;
using Vonage.Common.Client;
using Vonage.Common.Monads;
using Vonage.Common.Validation;

Expand All @@ -10,12 +11,14 @@ internal class CreateConversationRequestBuilder : IBuilderForOptional
private const int NameMaxLength = 100;
private Maybe<string> name;
private Maybe<string> displayName;
private Maybe<Uri> uri;

public Result<CreateConversationRequest> Create() => Result<CreateConversationRequest>.FromSuccess(
new CreateConversationRequest
{
Name = this.name,
DisplayName = this.displayName,
Uri = this.uri,
})
.Map(InputEvaluation<CreateConversationRequest>.Evaluate)
.Bind(evaluation => evaluation.WithRules(
Expand All @@ -36,6 +39,12 @@ public IBuilderForOptional WithName(string value)
return this;
}

public IBuilderForOptional WithUri(Uri value)
{
this.uri = value;
return this;
}

private static Result<CreateConversationRequest> VerifyDisplayName(CreateConversationRequest request) =>
request.DisplayName.Match(
some => InputValidation.VerifyNotEmpty(request, some, nameof(request.DisplayName)),
Expand Down Expand Up @@ -76,4 +85,11 @@ public interface IBuilderForOptional : IVonageRequestBuilder<CreateConversationR
/// <param name="value">The name.</param>
/// <returns>The builder.</returns>
IBuilderForOptional WithName(string value);

/// <summary>
/// Sets the Uri
/// </summary>
/// <param name="value">The uri.</param>
/// <returns>The builder.</returns>
IBuilderForOptional WithUri(Uri value);
}

0 comments on commit 4d012dd

Please sign in to comment.