예제 #1
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);
            }
        }
예제 #2
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);
            }
        }
예제 #3
0
 internal static NordicArenaDataContext FeedWith(this NordicArenaDataContext db, Tournament tournament)
 {
     db.Tournaments.Add(tournament);
     foreach (var round in tournament.Rounds)
     {
         db.Rounds.Add(round);
     }
     foreach (var rc in tournament.Rounds.SelectMany(p => p.ContestantEntries).ToList())
     {
         db.RoundContestants.Add(rc);
     }
     foreach (var judge in tournament.Judges)
     {
         db.Judges.Add(judge);
     }
     foreach (var contestant in db.RoundContestants.Select(p => p.Contestant))
     {
         db.Contestants.Add(contestant);
     }
     foreach (var crit in tournament.JudgingCriteria)
     {
         db.Criteria.Add(crit);
     }
     foreach (var rj in db.RoundContestants.SelectMany(p => p.RunJudgings))
     {
         db.RunJudgings.Add(rj);
     }
     return(db);
 }
예제 #4
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);
            }
        }
예제 #5
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);
            }
        }
예제 #6
0
        public void StartingTournamentBeforeFirstSave()
        {
            long?id = null;

            try
            {
                // Setup/Act
                using (var db = new NordicArenaDataContext())
                {
                    var tourney = Factory.CreateInitializedTourney();
                    tourney.Contestants.Add(new Contestant("Roger"));
                    tourney.Contestants.Add(new Contestant("Hans"));
                    tourney.Start();
                    db.Tournaments.Add(tourney);
                    db.SaveChanges();
                    id = tourney.Id;
                }
            }
            finally
            {
                DatabaseHelper.DeleteTournament(id);
            }
        }
예제 #7
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);
            }
        }
예제 #8
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();
            }
        }