public void Validate_GivenAllPropertiesAreValid_ExpectValidationSuccess()
        {
            var request = new EnableAccountRequest
            {
                UserId = TestVariables.UserId,
            };
            var validator = new EnableAccountRequest.Validator();
            var result    = validator.Validate(request);

            Assert.True(result.IsValid);
        }
        public void Validate_GivenNameIsEmpty_ExpectValidationFailure()
        {
            var request = new EnableAccountRequest
            {
                UserId = Guid.Empty,
            };
            var validator = new EnableAccountRequest.Validator();
            var result    = validator.Validate(request);

            Assert.False(result.IsValid);
            Assert.Contains(
                result.Errors,
                failure => failure.PropertyName == "UserId");
        }
        public async Task <IActionResult> EnableAccount([FromBody] EnableAccountRequest request)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.Json(new EnableAccountResponse(false)));
            }

            var maybe = this._currentAuthenticatedUserProvider.CurrentAuthenticatedUser;

            if (maybe.HasNoValue)
            {
                return(this.Json(new EnableAccountResponse(false)));
            }

            if (maybe.Value.UserId == request.UserId)
            {
                return(this.Json(new EnableAccountResponse(false)));
            }

            var result = await this._mediator.Send(new EnableAccountCommand(request.UserId));

            return(this.Json(new EnableAccountResponse(result.IsSuccess)));
        }