protected override void Seed(TeamDare.DAL.GameContext context)
        {
            var factory = new GameMasterFactory();

            var gameMaster = (GameMaster)factory.CreateGameMaster();

            var player = (Player)factory.CreatePlayer("tester");

            player         = (Player)factory.InitializeGameForPlayer(player, gameMaster);
            player.AppId   = "000000";
            player.AppNick = "tester";
            context.GameMasters.Add(gameMaster);
            foreach (var adv in player.GamesHistory)
            {
                context.Adventures.Add((Adventure)adv);
                foreach (var challenge in adv.Challenges)
                {
                    context.Challenges.Add((Challenge)challenge);
                }
            }
            context.Players.Add(player);
            context.SaveChanges();


            base.Seed(context);
        }
        public void TestInitializeGameForPlayer()
        {
            var factory    = new GameMasterFactory();
            var nick       = "test";
            var player     = factory.CreatePlayer(nick);
            var gameMaster = factory.CreateGameMaster();

            player = factory.InitializeGameForPlayer(player, gameMaster);
            Assert.IsNotNull(player);
            Assert.IsNotNull(player.GamesHistory);
            Assert.IsTrue(player.GamesHistory.Count == 3);
            Assert.IsTrue(player.GamesHistory.All(x => x.Id != Guid.Empty));
            Assert.IsTrue(player.GamesHistory.Count(x => x.Order == 0) == 1);
            Assert.IsTrue(player.GamesHistory.Count(x => x.Order == 1) == 1);
            Assert.IsTrue(player.GamesHistory.Count(x => x.Order == 2) == 1);
            Assert.IsTrue(player.GamesHistory.All(x => x.Title != string.Empty));
            Assert.IsTrue(player.GamesHistory.All(x => x.Hero == player));

            Assert.IsTrue(player.GamesHistory.Select(g => g.Challenges).All(c => c.Count == 3));
            Assert.IsTrue(player.GamesHistory.SelectMany(g => g.Challenges).Count(x => x.Order == 0) == 3);
            Assert.IsTrue(player.GamesHistory.SelectMany(g => g.Challenges).Count(x => x.Order == 1) == 3);
            Assert.IsTrue(player.GamesHistory.SelectMany(g => g.Challenges).Count(x => x.Order == 2) == 3);
            Assert.IsTrue(player.GamesHistory.SelectMany(g => g.Challenges).All(x => x.Id != Guid.Empty));

            Assert.IsTrue(player.GamesHistory.SelectMany(g => g.Challenges).All(x => x.Hero == player));
            Assert.IsTrue(player.GamesHistory.SelectMany(g => g.Challenges).All(x => x.Title != string.Empty));
        }
        private Activity WelcomeNewUser(Activity message)
        {
            var reply = message.CreateReply(GeneralResponses.WelcomeText);

            using (var context = new GameContext())
            {
                var defaultGameMaster = context.GameMasters.First();
                var factory           = new GameMasterFactory();

                var player = (Player)(factory.CreatePlayer(message.From.Name));
                player            = (Player)factory.InitializeGameForPlayer(player, defaultGameMaster);
                player.AppId      = message.From.Id;
                player.AppNick    = message.From.Id;
                player.GameMaster = defaultGameMaster;

                foreach (var adv in player.GamesHistory)
                {
                    context.Adventures.Add((Adventure)adv);
                    foreach (var challenge in adv.Challenges)
                    {
                        context.Challenges.Add((Challenge)challenge);
                    }
                }
                context.Players.Add(player);
                context.SaveChanges();
            }

            return(reply);
        }
        public void TestPlayerCreation()
        {
            var factory = new GameMasterFactory();
            var nick    = "test";
            var player  = factory.CreatePlayer(nick);

            Assert.IsNotNull(player);
            Assert.AreEqual(player.Nick, nick);
            Assert.IsTrue(player.Level == 0);
        }