Example #1
0
        public void PostManyWithCommand_Returns_expected()
        {
            //Arrange
            var availableCommands = new List <CommandComponent>();

            foreach (var val in Enum.GetValues(typeof(DieType)))
            {
                availableCommands.Add(new CommandComponent
                {
                    CommandName  = "RollDice",
                    FriendlyName = "Roll Dice",
                    IsEnabled    = true,
                    IsVisible    = true,
                    Payload      = new CommandPayload
                    {
                        ExecutionData = JObject.FromObject(new Dictionary <DieType, uint> {
                            { (DieType)val, 0 }
                        })
                    }
                });
            }

            var command = new CommandComponent
            {
                CommandName  = "RollDice",
                FriendlyName = "Roll Dice",
                IsEnabled    = true,
                IsVisible    = true,
                Payload      = new CommandPayload
                {
                    ExecutionData = JObject.FromObject(new Dictionary <DieType, uint> {
                        { DieType.D12, 0 }
                    })
                }
            };

            var request = new MultipleDiceRollComponent
            {
                SelectedCommand   = command,
                AvailableCommands = availableCommands
            };

            var rolls = _fixture.Create <DiceRolls>();

            _manager.Setup(x => x.RollDice(It.IsAny <Dictionary <string, uint> >())).Returns(rolls);

            var expected = request;



            //Act
            var actual = _sut.PostManyWithCommand(request);

            //Assert
            expected.RollValues = rolls;
            actual.Value.Should().BeEquivalentTo(expected);
        }
        public ActionResult <MultipleDiceRollComponent> PostManyWithCommand([FromBody] MultipleDiceRollComponent component)
        {
            if (component.SelectedCommand == null)
            {
                return(BadRequest("No selected command provided."));
            }

            var request = component.SelectedCommand.Payload.ExecutionData.ToObject <Dictionary <string, uint> >();

            if (request == null || !request.Any())
            {
                return(BadRequest("Invalid payload"));
            }

            var rolls = _manager.RollDice(request);

            component.RollValues = rolls;
            component.AvailableCommands.Clear();
            component.AvailableCommands.Add(GetNewMultipleRollsComponent());
            return(component);
        }