StartGameNow_shortcuts_the_join_game_process_and_assigns_all_remaining_teams_to_current_players_and_starts_the_game()
        {
            var message = ((TestMessage)smartContractState.Message);

            message.Sender = contractOwnerAddress;

            var contract = SetupValidSweepstake();

            message.Sender = contractOwnerAddress;
            contract.JoinGame("owner");
            message.Sender = punter1Address;
            contract.JoinGame("p1");

            message.Sender = contractOwnerAddress;
            contract.StartGameNow();

            var persistedPlayers = persistentState.GetAddressList("PlayersAddresses");

            persistedPlayers.Count.Should().Be(4);

            var persistedAssignedTeams = persistentState.GetStringList("AssignedTeams");

            persistedAssignedTeams.GetValue(0).Should().Be("england");
            persistedPlayers.GetValue(0).Should().Be(contractOwnerAddress);
            persistedAssignedTeams.GetValue(1).Should().Be("argentina");
            persistedPlayers.GetValue(1).Should().Be(punter1Address);
            persistedAssignedTeams.GetValue(2).Should().Be("germany");
            persistedPlayers.GetValue(2).Should().Be(contractOwnerAddress);
            persistedAssignedTeams.GetValue(3).Should().Be("brazil");
            persistedPlayers.GetValue(3).Should().Be(punter1Address);
        }