public void TestJoningAndLeavingGameQueues()
        {
            FixedTimeProvider timeProvider = new FixedTimeProvider();
            TimeProvider.Current = timeProvider;
            DateTime startingDateTime = DateTime.Parse("01/01/2001 00:00:00");

            timeProvider.CurrentDateTime = startingDateTime;

            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;

            IGameRepository gameRepository = new GameRepository(null, null, null, null, null, null);

            UserProfile firstUser = new UserProfile() { Id = Guid.NewGuid().ToString(), DisplayName = "John" };
            UserProfile secondUser = new UserProfile() { Id = Guid.NewGuid().ToString(), DisplayName = "Peter" };

            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var userRepository = new UserRepository(users, sessions, friends);

            userRepository.AddOrUpdateUser(firstUser);
            userRepository.AddOrUpdateUser(secondUser);

            gameRepository.AddUserToSkirmishGameQueue(firstUser);

            GameQueue gameQueue = null;
            //// gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = firstUser.Id } } });
            Assert.AreEqual(gameQueue.TimeElapsed(), 60);

            timeProvider.CurrentDateTime = startingDateTime.AddSeconds(10);
            Assert.AreEqual(gameQueue.TimeElapsed(), 50);

            gameRepository.AddUserToSkirmishGameQueue(secondUser);
            //// gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = firstUser.Id }, new GameUser { UserId = secondUser.Id } } });
            Assert.AreEqual(gameQueue.TimeElapsed(), 50);

            timeProvider.CurrentDateTime = startingDateTime.AddSeconds(20);
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = firstUser.Id }, new GameUser { UserId = secondUser.Id } } });

            Assert.AreEqual(gameQueue.TimeElapsed(), 40);

            // gameRepository.RemoveUserFromGameQueue(firstUser, gameQueue, "Bored");
            // gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = secondUser.Id } } });
            Assert.AreEqual(gameQueue.TimeElapsed(), 40);

            timeProvider.CurrentDateTime = startingDateTime.AddSeconds(30);
            Assert.AreEqual(gameQueue.TimeElapsed(), 30);

            // gameRepository.RemoveUserFromGameQueue(secondUser, gameQueue, "Also Bored");
            // gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser>() });
        }
 public void AddOrUpdateUserWithNullUserTest()
 {
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var target = new UserRepository(users, sessions, friends);
     target.AddOrUpdateUser(null);
 }
        public void AddOrUpdateUserTest()
        {
            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target = new UserRepository(users, sessions, friends);
            string userID = Guid.NewGuid().ToString();
            UserProfile userFirstVersion = new UserProfile() { Id = userID, DisplayName = "John" };
            target.AddOrUpdateUser(userFirstVersion);
            Assert.AreEqual(userFirstVersion, target.GetUser(userID));

            UserProfile otherUser = new UserProfile() { Id = Guid.NewGuid().ToString(), DisplayName = "Peter" };
            target.AddOrUpdateUser(otherUser);
            Assert.AreEqual(otherUser, target.GetUser(otherUser.Id));

            UserProfile userSecondVersion = new UserProfile() { Id = userID, DisplayName = "Johny" };
            Assert.AreEqual(userSecondVersion, target.GetUser(userID));
        }
 public void GetUserReferenceTimeOutTest()
 {
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var target = new UserRepository(users, sessions, friends);
     string userID = Guid.NewGuid().ToString();
     UserProfile userFirstVersion = new UserProfile() { Id = userID, DisplayName = "John" };
     target.AddOrUpdateUser(userFirstVersion);
     TimeSpan timeSpan = TimeSpan.FromSeconds(1);
     string address = target.GetUserReference(userID, timeSpan);
     System.Threading.Thread.Sleep(timeSpan.Add(TimeSpan.FromSeconds(1)));
     System.Net.WebClient webClient = new System.Net.WebClient();
     string data = webClient.DownloadString(address);
 }
        public void GetUserReferenceTest()
        {
            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target = new UserRepository(users, sessions, friends);
            var userID = Guid.NewGuid().ToString();
            var userFirstVersion = new UserProfile() { Id = userID, DisplayName = "John" };
            target.AddOrUpdateUser(userFirstVersion);
            string address = target.GetUserReference(userID, TimeSpan.FromSeconds(10));
            var webClient = new WebClient();
            string data = webClient.DownloadString(address);

            var serialized = this.Serialized(userFirstVersion, true);

            Assert.AreEqual("sgusers" + serialized, data);
        }
 public void LeaveUserFromGameTest()
 {
     Game game = this.FrancisGabrielDonAndLukeGame();
     var francisUser = new UserProfile { Id = Guid.NewGuid().ToString(), DisplayName = "Francis" };
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var userRepository = new UserRepository(users, sessions, friends);
     userRepository.AddOrUpdateUser(francisUser);
     this.gameRepository.AddOrUpdateGame(game);
     this.gameRepository.LeaveUserFromGame(francisUser.Id, game.Id);
 }