public void Validation_Should_PassForValid(string[] answers, string word) { var model = new AddWordPostModel { Answers = answers, Word = word }; ValidateObject(model).Count.Should().Be(0, $"Answers: \"{string.Join(" ,", answers)}\" and Word: \"{word}\" should pass the validation."); }
public void Validation_Should_FailForInvalid(string[] answers, string word) { var model = new AddWordPostModel { Answers = answers, Word = word }; ValidateObject(model).Count.Should().Be(2, $"Answers: \"{string.Join(" ,", answers)}\" and Word: \"{word}\" should fail both validations."); }
public void Should_FailValidation(string word, string[] answers) { var model = new AddWordPostModel { Answers = answers, Word = word }; var context = new ValidationContext(model, null, null); var result = new List <ValidationResult>(); var valid = Validator.TryValidateObject(model, context, result, true); valid.Should().BeFalse(); }
public async Task Should_Error_ForInvalidModelState() { var data = new AddWordPostModel { Word = "Bonjour", Answers = new [] { "Hello", "Good Morning" } }; var mockHandler = new MockCommandHandler <AddWordCommand>().ReturnsForAll().Handler; var controller = new WordsController(mockHandler, null); controller.ModelState.AddModelError(string.Empty, "Something is wrong!"); var result = await controller.AddWord(data); result.Should().BeOfType <BadRequestObjectResult>(); }
public async Task <IActionResult> AddWord([FromBody] AddWordPostModel postData) { if (!ModelState.IsValid) { return(new BadRequestObjectResult(ModelState)); } var command = new AddWordCommand(postData.Word, postData.Answers); await _addWordCommandHandler.HandleAsync(command); var query = FindItemsQuery.ByWord(postData.Word); var queryResult = await _findItemsQueryHandler.QueryAsync(query); var createdItem = queryResult.Single(); string currentUri = Request?.Path ?? "/Words"; return(new CreatedResult(currentUri.JoinPaths(createdItem.Id.ToString()), createdItem)); }
public async Task Should_AddWord(string word, string[] answers) { var data = new AddWordPostModel { Word = word, Answers = answers }; var mockCommandHandler = new MockCommandHandler <AddWordCommand>().ReturnsForAll().Handler; var mockQueryHandler = new MockQueryHandler <FindItemsQuery, LearningItem[]>() .ReturnsForAll(new [] { new LearningItem(word, answers) }) .Handler; var controller = new WordsController(mockCommandHandler, mockQueryHandler); var result = await controller.AddWord(data); result.Should().BeOfType <CreatedResult>(); var createdResult = (CreatedResult)result; createdResult.StatusCode.Should().Be(201); createdResult.Location.Should().MatchRegex(@"\/Words\/[{(]?[0-9A-Fa-f]{8}[-]?([0-9A-Fa-f]{4}[-]?){3}[0-9A-Fa-f]{12}[)}]?"); }