예제 #1
0
        public void IT_TournamentShellCreate()
        {
            long?id = null;

            try
            {
                // Setup/Act
                using (var db = new NordicArenaDataContext())
                {
                    var tourney = new Tournament("I-Test tournament");
                    db.Tournaments.Add(tourney);
                    db.SaveChanges();
                    id = tourney.Id;
                }
                // Asssert
                using (var db = new EfTournamentService())
                {
                    var tourney = db.GetTournament(id.Value);
                    Assert.AreEqual("I-Test tournament", tourney.Name);
                }
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #2
0
        public void IT_TournementWithJudge()
        {
            long?  id        = null;
            string judgeName = Guid.NewGuid().ToString();

            try
            {
                // Setup part 1
                using (var db = new NordicArenaDataContext())
                {
                    var judge   = new Judge(judgeName);
                    var tourney = new Tournament("I-Test tournament");
                    tourney.Judges = new List <Judge>();
                    tourney.Judges.Add(judge);
                    db.Tournaments.Add(tourney);
                    db.SaveChanges();
                    id = tourney.Id;
                }
                // Asssert
                using (var db = new EfTournamentService())
                {
                    var tourney = db.GetTournament(id.Value);
                    var judge   = tourney.Judges.FirstOrDefault();
                    Assert.AreEqual("I-Test tournament", tourney.Name);
                    Assert.AreEqual(judgeName, judge.Name);
                }
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #3
0
        public void UpdateTournamentAndRound_AddRound()
        {
            var setupService  = new EfTournamentService();
            var actService    = new EfTournamentService();
            var assertService = new EfTournamentService();

            var tourney = Factory.CreateInitializedTourney();

            setupService.AddTournament(tourney);
            long id = tourney.Id;

            try
            {
                var newRoundList = new List <Round>();
                var initialRound = new Round("Q");
                newRoundList.Add(initialRound);
                newRoundList.Add(tourney.Rounds.First());
                tourney.Rounds = newRoundList;

                // Act
                actService.UpdateTournamentAndRounds(tourney);

                var result    = assertService.GetTournamentGuarded(id);
                var roundList = result.GetRoundsOrdered();
                Assert.AreEqual("Q", roundList.First().Title);
                Assert.AreEqual(newRoundList[1].Title, roundList.Last().Title);
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #4
0
        public void UpdateTournamentAndRound_DeleteRound()
        {
            var setupService  = new EfTournamentService();
            var actService    = new EfTournamentService();
            var assertService = new EfTournamentService();

            var tourney = Factory.CreateInitializedTourney();
            var round   = new Round("Superfinale");

            round.RoundNo            = 2;
            round.QualifiesFromRound = tourney.GetRoundNo(1);
            tourney.Rounds.Add(round);
            setupService.AddTournament(tourney);
            long id = tourney.Id;

            try
            {
                var newRoundList = new List <Round>();
                newRoundList.Add(tourney.GetRoundNo(2));
                tourney.Rounds = newRoundList;

                // Act
                actService.UpdateTournamentAndRounds(tourney);

                var result    = assertService.GetTournamentGuarded(id);
                var roundList = result.GetRoundsOrdered().ToList();
                Assert.AreEqual(1, roundList.Count);
                Assert.AreEqual("Superfinale", roundList[0].Title);
                Assert.AreEqual(null, roundList[0].QualifiesFromRound);
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #5
0
        public void UpdateTournamentAndRound_UpdateRoundAndTournamentTitle()
        {
            var setupService  = new EfTournamentService();
            var actService    = new EfTournamentService();
            var assertService = new EfTournamentService();

            var tourney = Factory.CreateInitializedTourney();

            setupService.AddTournament(tourney);
            long id = tourney.Id;

            try
            {
                // Act
                tourney.GetRoundNo(1).Title = "Roger";
                tourney.Name = "Franz";
                actService.UpdateTournamentAndRounds(tourney);

                var result = assertService.GetTournamentGuarded(id);
                Assert.AreEqual("Franz", result.Name);
                Assert.AreEqual("Roger", result.GetRoundNo(1).Title);
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #6
0
        public void IT_FullTournamentCreate()
        {
            long?id = null;

            try
            {
                // Setup part 1
                using (var db = new NordicArenaDataContext())
                {
                    var tourney = new Tournament("I-Test tournament");
                    db.Tournaments.Add(tourney);
                    db.SaveChanges();
                    id = tourney.Id;
                }
                // Setup part 2
                using (var db = new EfTournamentService())
                {
                    // Add a first round and add the contestant to that round
                    var tourney     = db.GetTournament(id.Value);
                    var contestant1 = new Contestant()
                    {
                        Name = "Roger"
                    };
                    var contestant2 = new Contestant()
                    {
                        Name = "Hans"
                    };
                    tourney.InitializeDefaults();
                    tourney.Contestants.Add(contestant1);
                    tourney.Contestants.Add(contestant2);
                    db.SaveChanges();
                }
                // Setup part 3
                using (var db = new EfTournamentService())
                {
                    var tourney = db.GetTournament(id.Value);

                    var contestant = tourney.Contestants.First(p => p.Name == "Hans");
                    var round      = tourney.Rounds.First();
                    tourney.AddContesantToRound(contestant, round);
                    db.SaveChanges();
                }
                // Asssert
                using (var db = new EfTournamentService())
                {
                    var tourney = db.GetTournament(id.Value);
                    Assert.AreEqual("I-Test tournament", tourney.Name);
                    Assert.AreEqual(1, tourney.Rounds.Count);
                    Assert.AreEqual(2, tourney.Contestants.Count);
                    Assert.AreEqual(1, tourney.Rounds.First().ContestantEntries.Count);
                    Assert.AreEqual("Hans", tourney.Rounds.First().ContestantEntries.First().Contestant.Name);
                }
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #7
0
 public static void DeleteTournament(long?id)
 {
     if (id != null)
     {
         using (var db = new EfTournamentService())
         {
             db.DeleteTournament(id.Value);
         }
     }
 }
예제 #8
0
        public void IT_UpdateRoundContestantDirectly_NoError()
        {
            long?id = null;

            try
            {
                long rcId = 0;
                // Setup/Act
                using (var db = new NordicArenaDataContext())
                {
                    var tourney = Factory.CreateInitializedTourney();
                    tourney.Contestants.Add(new Contestant("Roger"));
                    tourney.Contestants.Add(new Contestant("Hans"));
                    var judge = new Judge("Dommer");
                    judge.Tournament = tourney;
                    db.Judges.Add(judge);
                    db.Tournaments.Add(tourney);
                    db.SaveChanges();

                    tourney = db.Tournaments.FirstOrDefault(p => p.Id == tourney.Id);
                    tourney.Start();
                    db.SaveChanges();
                    id = tourney.Id;
                    var rc1 = tourney.Rounds.FirstOrDefault().ContestantEntries.FirstOrDefault();
                    rcId = rc1.Id;
                }
                using (var db = new EfTournamentService())
                {
                    // Act
                    var rc     = db.GetRoundContestantGuarded(rcId);
                    var dummy  = rc.Contestant;
                    var dummy2 = rc.Round;// Trigger lazy loading or else ... TODO: Find a better solution. Also used in production code (CalculateTotalScore() in RoundContestant.cs)
                    rc.TotalScore = 1M;
                    db.SaveChanges();
                    // Assert
                    Assert.AreEqual(1M, rc.TotalScore.Value);
                }
            }
            catch (DbEntityValidationException exc)
            {
                throw DbValidationExceptionWrapper.Wrap(exc);
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #9
0
        public void CreateTournament_IsCommitedBeforeOutOfScope()
        {
            long?tourneyId = null;

            try
            {
                var    service1    = new EfTournamentService();
                string tourneyName = "Integration test tournament" + Guid.NewGuid().ToString();
                var    tournament  = new Tournament(tourneyName);
                service1.AddTournament(tournament);
                Assert.IsTrue(tournament.Id != 0, "Tournament ID not set");
                tourneyId = tournament.Id;
                // Create a new context to verfiy with certainty that the data is committed to the database
                var service2 = new EfTournamentService();
                var result   = service2.GetTournamentGuarded(tournament.Id);
                Assert.AreEqual(tourneyName, result.Name);
            }
            finally
            {
                DatabaseHelper.DeleteTournament(tourneyId);
            }
        }
예제 #10
0
        public void IT_Tournament_InitializeDefaults_Round1IsSaved()
        {
            long?id = null;

            try {
                var tournament = new Tournament("I-Test tournament");

                using (var db = new NordicArenaDataContext()) {
                    db.Tournaments.Add(tournament);
                    tournament.InitializeDefaults();
                    db.SaveChanges();
                    id = tournament.Id;
                }
                using (var db = new EfTournamentService())
                {
                    var tourney = db.GetTournament(id.Value);
                    Assert.AreEqual(1, tourney.Rounds.Count(), "RoundCount");
                    Assert.AreEqual(1, tourney.Rounds.FirstOrDefault().RoundNo, "RoundNo");
                }
            }
            finally {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #11
0
        public void IT_PostRunJudgingsFromWeb_FinalizingJudgementOfOneContestant()
        {
            long?id = null;

            try
            {
                var scores        = new ContestantRunViewModel();
                var wrappedScores = new JudgeViewModel();
                // Setup/Act
                using (var db = new NordicArenaDataContext())
                {
                    var tourney = Factory.CreateInitializedTourney();
                    tourney.Contestants.Add(new Contestant("Roger"));
                    tourney.Contestants.Add(new Contestant("Hans"));
                    var judge = new Judge("Dommer");
                    judge.Tournament = tourney;
                    db.Judges.Add(judge);
                    db.Tournaments.Add(tourney);
                    db.SaveChanges();

                    tourney = db.Tournaments.FirstOrDefault(p => p.Id == tourney.Id);
                    tourney.Start();
                    db.SaveChanges();
                    id = tourney.Id;

                    var round1 = tourney.Rounds.FirstOrDefault();
                    round1.RunsPerContestant = 1;
                    var rc1      = round1.ContestantEntries.FirstOrDefault();
                    var critList = tourney.JudgingCriteria.ToList();
                    // Set up scores
                    scores.RoundContestantId = rc1.Id;
                    scores.TournamentId      = tourney.Id;
                    for (int i = 0; i < critList.Count; i++)
                    {
                        var score = new RunJudging();
                        score.CriterionId       = critList[i].Id;
                        score.JudgeId           = judge.Id;
                        score.RoundContestantId = rc1.Id;
                        score.RunNo             = 1;
                        score.Score             = (i + 1);
                        scores.Scores.Add(score);
                    }

                    wrappedScores.Contestants = new List <ContestantRunViewModel>();
                    wrappedScores.Contestants.Add(scores);
                    wrappedScores.Tournament = tourney;
                }
                // Act
                var ctrl = new TournamentJudgeController(null, new EfTournamentService(), ServiceFaker.GetFakeSignalRHub());

                ctrl.JudgeIndex(wrappedScores);
                // Assert
                using (var db = new EfTournamentService())
                {
                    var rc = db.GetRoundContestantGuarded(scores.RoundContestantId);
                    Assert.IsTrue(rc.TotalScore.HasValue);
                }
            }
            catch (DbEntityValidationException exc)
            {
                throw DbValidationExceptionWrapper.Wrap(exc);
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
                ServiceFaker.ResetIocContainer();
            }
        }