public void StartTournament_SavesAndStarts()
        {
            var dbMock     = DatabaseFaker.GetFake();
            var db         = dbMock.Object;
            var controller = new TournamentAdminController(db, ServiceFaker.GetFakeFormFeedbackHandler(), new Mock <NaHub>().Object);
            var tournament = Factory.CreateInitializedTourney()
                             .WithJudges(1)
                             .WithContestants(4);

            db.AddTournament(tournament);

            var model = new EditTournamentViewModel(tournament);

            model.RoundList[0].ContestantsPerHeat = 3;
            controller.StartTournament(model);

            Assert.AreEqual(3, tournament.GetRoundNo(1).ContestantsPerHeat);
            Assert.AreEqual(TournamentStatus.Running, tournament.Status);
        }
        public void EditTournamentPost_AddDeleteAndReplaceOk()
        {
            var dbMock        = DatabaseFaker.GetFake();
            var db            = dbMock.Object;
            var oldTournament = new Tournament();

            oldTournament.Rounds = new HashSet <Round>();
            oldTournament.Rounds.Add(new Round()
            {
                Id = 1
            });
            oldTournament.Rounds.Add(new Round()
            {
                Id = 2
            });
            db.AddTournament(oldTournament);

            var newTournament = new Tournament();

            newTournament.Rounds = new HashSet <Round>();
            var newTournamentModel = new EditTournamentViewModel(newTournament);

            newTournamentModel.RoundList.Add(new Round()
            {
                Id = 1, Title = "Hi"
            });
            newTournamentModel.RoundList.Add(new Round()
            {
                Id = 3
            });

            var target = new TournamentAdminController(db, ServiceFaker.GetFakeFormFeedbackHandler(), new Mock <NaHub>().Object);

            target.SaveTournament(newTournamentModel);

            Assert.IsTrue(oldTournament.Rounds.Any(p => p.Id == 1), "1");
            Assert.IsFalse(oldTournament.Rounds.Any(p => p.Id == 2), "2");
            Assert.IsTrue(oldTournament.Rounds.Any(p => p.Id == 3), "3");
            Assert.AreEqual("Hi", oldTournament.Rounds.FirstOrDefault(p => p.Id == 1).Title);
        }
        public void SaveTournament_StartedTournament_DoesntOverwriteStatus()
        {
            var updatedTournament = new Tournament();

            updatedTournament.InitializeDefaults();
            updatedTournament.Status = TournamentStatus.Prestart;
            var savedTournament = new Tournament();

            savedTournament.InitializeDefaults();
            savedTournament.Status = TournamentStatus.Running;

            var dbMock = DatabaseFaker.GetFake();
            var db     = dbMock.Object;

            dbMock.Setup(p => p.GetTournament(It.IsAny <long>())).Returns(savedTournament);

            var target = new TournamentAdminController(db, ServiceFaker.GetFakeFormFeedbackHandler(), new Mock <NaHub>().Object);

            target.SaveTournament(new EditTournamentViewModel(updatedTournament));

            Assert.AreEqual(TournamentStatus.Running, savedTournament.Status);
        }
        public void SaveTournament_StartedTournament_SavesNewName()
        {
            var updatedTournament = new Tournament();

            updatedTournament.InitializeDefaults();
            updatedTournament.Name = "After";

            var savedTournament = new Tournament();

            savedTournament.InitializeDefaults();
            savedTournament.Name = "Before";

            var dbMock = DatabaseFaker.GetFake();
            var db     = dbMock.Object;

            dbMock.Setup(p => p.GetTournament(It.IsAny <long>())).Returns(savedTournament);

            var target = new TournamentAdminController(db, ServiceFaker.GetFakeFormFeedbackHandler(), new Mock <NaHub>().Object);
            var updatedTouranmentModel = new EditTournamentViewModel(updatedTournament);

            target.SaveTournament(updatedTouranmentModel);

            Assert.AreEqual("After", savedTournament.Name);
        }