Given_An_Valid_YgoProDeck_That_Fails_Decks_Validation_UploadYgoProDeck_Command_Should_Not_Be_Successful() { // Arrange var deck = new StringBuilder(); deck.Append("#created by ..."); deck.AppendLine("#main"); deck.AppendLine("16261341"); deck.AppendLine("16261341"); deck.AppendLine("16261341"); deck.AppendLine("16261341"); deck.AppendLine("#extra"); deck.AppendLine("!side"); var command = new UploadYgoProDeckCommand { UserId = Guid.NewGuid().ToString(), Name = "Test deck", Deck = deck.ToString() }; commandValidator.Validate(Arg.Any <UploadYgoProDeckCommand>()).Returns(new ValidationResult()); _ygoProDeckValidator.Validate(Arg.Any <YgoProDeck>()).Returns(new ValidationResult { Errors = { new ValidationFailure("CardCopyCount", "Only 3 copies of the card allowed.") } }); // Act var result = await _sut.Handle(command, CancellationToken.None); // Assert result.IsSuccessful.Should().BeFalse(); }
Given_An_Valid_YgoProDeck__Deck_Validation_Is_Successful_UploadYgoProDeck_Command_Should_Be_Successful() { // Arrange var deck = new StringBuilder(); deck.Append("#created by ..."); deck.AppendLine("#main"); deck.AppendLine("16261341"); deck.AppendLine("16261341"); deck.AppendLine("16261341"); deck.AppendLine("16261341"); deck.AppendLine("#extra"); deck.AppendLine("!side"); var command = new UploadYgoProDeckCommand { UserId = Guid.NewGuid().ToString(), Name = "Test deck", Deck = deck.ToString() }; commandValidator.Validate(Arg.Any <UploadYgoProDeckCommand>()).Returns(new ValidationResult()); _ygoProDeckValidator.Validate(Arg.Any <YgoProDeck>()).Returns(new ValidationResult()); _deckService.Add(Arg.Any <YgoProDeck>()).Returns(new Deck { Id = 3242342 }); // Act var result = await _sut.Handle(command, CancellationToken.None); // Assert result.IsSuccessful.Should().BeTrue(); }
public void Given_An_Invalid_Deck_Validation_Should_Fail(string deck) { var command = new UploadYgoProDeckCommand { Deck = deck }; // Act Action act = () => _sut.ShouldHaveValidationErrorFor(c => c.Deck, command); // Assert act.Invoke(); }
public async Task Given_An_Invalid_YgoProDeck_UploadYgoProDeck_Command_Should_Not_Be_Successful() { // Arrange var command = new UploadYgoProDeckCommand(); commandValidator.Validate(Arg.Any <UploadYgoProDeckCommand>()).Returns( new ValidationResult { Errors = { new ValidationFailure("DeckName", "Invalid deck name") } }); // Act var result = await _sut.Handle(command, CancellationToken.None); // Assert result.IsSuccessful.Should().BeFalse(); }
[HttpPost] // 10MB request size public async Task <IActionResult> Post([FromForm] IFormFile file) { if (file != null) { if (file.Length > 0) { var user = await GetCurrentUserAsync(); if (user != null) { var command = new UploadYgoProDeckCommand { Name = Path.GetFileNameWithoutExtension(file.FileName), UserId = user.Id }; using (var reader = new StreamReader(file.OpenReadStream())) { command.Deck = await reader.ReadToEndAsync(); } var result = await _mediator.Send(command); if (result.IsSuccessful) { return(CreatedAtRoute("GetDeckById", new { id = result.Data }, result.Data)); } return(BadRequest(result.Errors)); } return(BadRequest()); } return(BadRequest(YgoproDeckFileIsEmpty)); } return(BadRequest(YgoproDeckFileNotSelected)); }