public void create_todo()
        {
            const string title = "some title";
            var          args  = new TodoCreationArgs(title: title, description: "some description");

            var result = service.Create(args);

            result.IsOk.ShouldBeTrue();
            repository.Verify(x => x.Save(It.Is <Domain.Todo.Create.Models.Todo>(y => y.Title == title)));
        }
        public void return_error_when_title_is_white_space()
        {
            var args = new TodoCreationArgs(title: " ", description: "description");

            var result = service.Create(args);

            result.IsOk.ShouldBeFalse();
            result.Errors.First().FieldId.ShouldBe(nameof(args.Title));
            result.Errors.First().ErrorCode.ShouldBe(ErrorCodes.Required);
        }
        public void return_error_when_description_has_more_characters()
        {
            var description = StringGenerator.Generate(MoreThanMaximumNumberOfCharacters);
            var args        = new TodoCreationArgs(title: "a title", description: description);

            var result = service.Create(args);

            result.IsOk.ShouldBeFalse();
            result.Errors.First().FieldId.ShouldBe(nameof(args.Description));
            result.Errors.First().ErrorCode.ShouldBe(ErrorCodes.InvalidLength);
        }
        public IActionResult Create([FromBody] TodoCreationRequest todoCreationRequest)
        {
            var args     = new TodoCreationArgs(todoCreationRequest.Title, todoCreationRequest.Description);
            var response = createTodoService.Create(args);

            if (response.IsOk)
            {
                return(Ok());
            }

            return(BadRequest(response.Errors));
        }
        public void return_error_when_title_is_string_empty_and_description_has_more_characters()
        {
            var invalidLengthText = StringGenerator.Generate(MoreThanMaximumNumberOfCharacters);
            var args = new TodoCreationArgs(title: string.Empty, description: invalidLengthText);

            var result = service.Create(args);

            result.IsOk.ShouldBeFalse();
            result.Errors.First().FieldId.ShouldBe(nameof(args.Title));
            result.Errors.First().ErrorCode.ShouldBe(ErrorCodes.Required);
            result.Errors.Second().FieldId.ShouldBe(nameof(args.Description));
            result.Errors.Second().ErrorCode.ShouldBe(ErrorCodes.InvalidLength);
        }