Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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));
        }