public void Delete_NoErrors_CallsDeletePlayer()
        {
            var viewModel = new PlayerViewModel();

            sut.Edit(viewModel, "delete");

            _playerService.Received(1).DeletePlayer(Arg.Any<DbPlayer>());
        }
        public ActionResult Create()
        {
            var viewModel = new PlayerViewModel
            {
                Teams = GetTeams()
            };

            return View(viewModel);
        }
        public void Create_MissingPosition_DoesNotCallCreatePlayer()
        {
            sut.ModelState.AddModelError("", "Position is required");
            var viewModel = new PlayerViewModel();

            sut.Create(viewModel);

            _playerService.DidNotReceive().CreatePlayer(Arg.Any<DbPlayer>());
        }
        public void Create_AllRequiredFieldsPresent_CallsCreatePlayer()
        {
            var viewModel = new PlayerViewModel
            {
                PlayerId = 1,
                FirstName = "John",
                LastName = "Test",
                Position = Position.LeftDefense,
                Salary = 1000,
                TeamId = 1,
                Status = Status.Available
            };

            sut.Create(viewModel);

            _playerService.Received(1).CreatePlayer(Arg.Any<DbPlayer>());
        }
        public ActionResult Create(PlayerViewModel player)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var dbPlayer = Mapper.Map<DbPlayer>(player);
                    _playerService.CreatePlayer(dbPlayer);

                    return RedirectToAction("Index");
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                }
            }

            player.Teams = GetTeams();
            return View(player);
        }
        public ActionResult Edit(PlayerViewModel player, string submit)
        {
            if (submit == "submit")
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        var dbPlayer = Mapper.Map<DbPlayer>(player);
                        _playerService.UpdatePlayer(dbPlayer);

                        return RedirectToAction("Index");
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError("", ex.Message);
                    }
                }
            }
            else
            {
                try
                {
                    Delete(player);

                    return RedirectToAction("Index");
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                }
            }

            player.Teams = GetTeams();
            return View(player);
        }
        public void Update_PositionMissing_DoesNotCallUpdatePlayer()
        {
            sut.ModelState.AddModelError("", "Position is required");
            var viewModel = new PlayerViewModel();

            sut.Edit(viewModel, "submit");

            _playerService.DidNotReceive().UpdatePlayer(Arg.Any<DbPlayer>());
        }
 public void Delete(PlayerViewModel player)
 {
     var dbPlayer = Mapper.Map<DbPlayer>(player);
     _playerService.DeletePlayer(dbPlayer);
 }