Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/Ardalis.Result/Result.Void.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,23 @@ public static Result<T> Success<T>(T value, string successMessage)
return new Result(ResultStatus.Error) { Errors = errorMessages };
}

/// <summary>
/// Represents an error that occurred during the execution of the service.
/// Sets the CorrelationId property to the provided value
/// Error messages may be provided and will be exposed via the Errors property.
/// </summary>
/// <param name="correlationId">Sets the CorrelationId property.</param>
/// <param name="errorMessages">A list of string error messages.</param>
/// <returns>A Result</returns>
public static Result ErrorWithCorrelationId(string correlationId, params string[] errorMessages)
{
return new Result(ResultStatus.Error)
{
CorrelationId = correlationId,
Errors = errorMessages
};
}

/// <summary>
/// Represents validation errors that prevent the underlying service from completing.
/// </summary>
Expand Down
3 changes: 3 additions & 0 deletions src/Ardalis.Result/Result.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ protected Result(ResultStatus status)
Status = result.Status,
Errors = result.Errors,
SuccessMessage = result.SuccessMessage,
CorrelationId = result.CorrelationId,
ValidationErrors = result.ValidationErrors,
};

Expand All @@ -43,6 +44,7 @@ protected Result(ResultStatus status)
public ResultStatus Status { get; protected set; } = ResultStatus.Ok;
public bool IsSuccess => Status == ResultStatus.Ok;
public string SuccessMessage { get; protected set; } = string.Empty;
public string CorrelationId { get; protected set; } = string.Empty;
public IEnumerable<string> Errors { get; protected set; } = new List<string>();
public List<ValidationError> ValidationErrors { get; protected set; } = new List<ValidationError>();

Expand All @@ -68,6 +70,7 @@ public PagedResult<T> ToPagedResult(PagedInfo pagedInfo)
{
Status = Status,
SuccessMessage = SuccessMessage,
CorrelationId = CorrelationId,
Errors = Errors,
ValidationErrors = ValidationErrors
};
Expand Down
17 changes: 17 additions & 0 deletions tests/Ardalis.Result.UnitTests/ResultVoidConstructor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,23 @@ public void InitializesErrorResultWithFactoryMethod(params string[] errors)
}
}

[Fact]
public void InitializesErrorResultWithCorrelationIdWithFactoryMethod()
{
var correlationId = "testId";
var errors = new string[] { "Error 1", "Error 2" };
var result = Result.ErrorWithCorrelationId(correlationId, errors);

Assert.Null(result.Value);
Assert.Equal(ResultStatus.Error, result.Status);
Assert.Equal(correlationId, result.CorrelationId);

foreach (var error in errors)
{
result.Errors.Should().ContainEquivalentOf(error);
}
}

[Fact]
public void InitializesInvalidResultWithFactoryMethod()
{
Expand Down