public void UserInvitedByInviteLink()
        {
            var    home    = new HomePage(driver);
            var    game    = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");
            string website = game.InviteLink;

            driver.Quit();
            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            Assert.Equal("Test Room", uGame.RoomName);
        }
        public void ModeratorCanRemovePlayer()
        {
            var    home    = new HomePage(driver);
            var    game    = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            game.ClickPlayerTwoAvatar();
            game.RemoveUser();
            Assert.True(game.PlayerList);
        }
        public void CanPlayerUserResetTimer()
        {
            var home = new HomePage(driver);
            var game = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");

            game.Start();
            game.Vote(1);
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            Assert.False(uGame.ResetTimerButton.Displayed);
        }
        public void DeleteGameRoomWithUserInside()
        {
            var    home    = new HomePage(driver);
            var    game    = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");
            var room  = game.GoToRoomsPage();

            room.DeleteGameRoom();
            uGame.Vote(1);
            Assert.Equal("Waiting for moderator", uGame.ToastMessage);
        }
        public void ModeratorCanPressFinishVotingOnlyAfterAllUsersVoted()
        {
            var home = new HomePage(driver);
            var game = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");

            game.Start();
            game.Vote(1);
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            uGame.Vote(2);
            Assert.NotNull(game.FinishVotingButton);
        }
        public void NewUserJoinAndVoteAfterVotingStarts()
        {
            var home = new HomePage(driver);
            var game = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");

            game.Start();
            game.Vote(1);
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            uGame.Vote(2);
            Assert.Equal("2", game.VoteValueTwo);
        }
        public void UserCanSeeOthersVotesOnlyAfterVoting()
        {
            var home = new HomePage(driver);
            var game = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");

            game.Start();
            game.Vote(1);
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            uGame.Vote(2);
            //asserts that after the second user has voted, he can see the first user's vote
            Assert.Equal("1", game.VoteValueOne);
        }
        public void ObserverSeesPlayersVotingInRealTime()
        {
            var home = new HomePage(driver);
            var game = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");

            game.Start();
            game.Vote(1);
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            uGame.ClickPlayerTwoAvatar();
            uGame.ClickObserverRole();
            Assert.NotEqual("00:00:00", uGame.Timer);
            Assert.Equal("1", game.VoteValueOne);
        }
        public void DeAssignRoleOfModerator()
        {
            var    home    = new HomePage(driver);
            var    game    = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            game.ClickPlayerTwoAvatar();
            game.ClickModeratorRole();    //assign player two as moderator
            game.ClickPlayerOneAvatar();
            game.ClickModeratorRole();    //de-assign player one as moderator
            //first player is Jack who makes the room and is moderator (and is the first in the player name list)
            //Jack makes John the moderator and then de-assigns himself as moderator
            //now Jack is second in the player name list
            Assert.Equal("Jack", game.PlayerTwoName);
        }
        public void VoteLeaveSiteAndVoteAgain()
        {
            var home = new HomePage(driver);
            var game = home.MultipleUserQuickPlayGame("Jack", "Test Room", "Test Story", "Test Story 2");

            game.Start();
            string website = game.InviteLink;

            driver2 = new FirefoxDriver();
            var uHome = new QuickPlayPage(driver2, website);
            var uGame = uHome.JoinQuickPlay("John");

            uGame.Vote(1);
            driver2.Navigate().GoToUrl("https://www.google.com/");
            driver2.Navigate().GoToUrl(website);
            uGame.Vote(1);
            //Asserts that the second user (John) has voted once again after rejoining
            //since the moderator did not press "Finish Voting" before John left the website
            //being able to vote once again proves that the web app did not remember the initial vote input
            Assert.Equal("John voted.", uGame.ToastMessage);
        }