def request_to_join_team(team_id): # know the team will be found since decorator checks team exists team = Team.query.get(team_id) join = JoinLeagueRequest(current_user.email, current_user.name, team, current_user.gender) DB.session.add(join) DB.session.commit() return Response(json.dumps(join.json()), status=200, mimetype="application/json")
def create_league_request(): """Creates a league request for testing purposes.""" request_info = request.get_json(silent=True) team = Team.query.get(request_info.get("team_id")) league_request = JoinLeagueRequest(request_info.get("email"), request_info.get("player_name"), team, request_info.get('gender')) LOGGER.info(f"Creating join league request: {request_info}") DB.session.add(league_request) DB.session.commit() return Response(json.dumps(league_request.json()), 200, mimetype='application/json')
def join_league(): """A form submission to ask to join the league.""" # ensure given an email email = session.get("oauth_email", None) if email is None: # it should have been stored after authenicating message = "Sorry, the authentication provider did not give an email" raise OAuthException(message) # double check the player email has not be taken player = Player.query.filter(Player.email == email).first() if player is not None: login_user(player) return redirect(url_for("homepage")) # double check this is not refresh page issue pending_request = JoinLeagueRequest.query.filter( func.lower(JoinLeagueRequest.email) == email.lower()).first() if pending_request is not None: raise HaveLeagueRequestException("Double submit on form") # ensure the selected team exists team_id = request.form.get("team", None) if team_id is None: raise TeamDoesNotExist(f"Team does not exist - {team_id}") team = Team.query.get(team_id) if team is None: raise TeamDoesNotExist(f"Team does not exist - {team_id}") # save the request player_name = request.form.get("name", None) gender = "F" if request.form.get("is_female", False) else "M" league_request = JoinLeagueRequest(email, player_name, team, gender) DB.session.add(league_request) DB.session.commit() return redirect(url_for("league_request_sent"))
def testAcceptJoinLeagueRequestExistingPlayer(self): name = str(uuid.uuid1()) email = name + "@mlsb.ca" some_gender = "m" player = self.add_player(name, email, gender=some_gender) color = str(uuid.uuid1()) league = self.add_league(str(uuid.uuid1())) sponsor = self.add_sponsor(str(uuid.uuid1())) team_json = self.add_team(color, sponsor=sponsor, league=league) team = Team.query.get(team_json['team_id']) league_request = JoinLeagueRequest(email, player, team, some_gender) accepted_player = league_request.accept_request() # check player is one team now self.assertEqual(accepted_player.id, player['player_id'], "Use player account when joining team") team = Team.query.get(team_json['team_id']) self.assertTrue( bool([True for p in team.players if p.id == player['player_id']]), "Existing player added was not added to team")
def testAcceptJoinLeagueRequestNewPlayer(self): player = str(uuid.uuid1()) email = player + "@mlsb.ca" some_gender = "m" color = str(uuid.uuid1()) league = self.add_league(str(uuid.uuid1())) sponsor = self.add_sponsor(str(uuid.uuid1())) team_json = self.add_team(color, sponsor=sponsor, league=league) team = Team.query.get(team_json['team_id']) league_request = JoinLeagueRequest(email, player, team, some_gender) accepted_player = league_request.accept_request() # check player is one team now self.assertTrue(accepted_player.id is not None, "Create player account when joining team") team = Team.query.get(team_json['team_id']) self.assertTrue( bool([ True for p in team.players if p.email == email and p.id is not None ]), "New player added was not added to team")
def testJoinLeagueRequestInit(self): """ Test the constructor validates the given data""" player = str(uuid.uuid1()) email = player + "@mlsb.ca" some_gender = "m" color = str(uuid.uuid1()) league = self.add_league(str(uuid.uuid1())) sponsor = self.add_sponsor(str(uuid.uuid1())) no_team = Team(color="Black", sponsor_id=sponsor['sponsor_id'], league_id=league['league_id']) team_json = self.add_team(color, sponsor=sponsor, league=league) team = Team.query.get(team_json['team_id']) # good request and test json method league_request = JoinLeagueRequest(email, player, team, some_gender) league_request.json() # bad stuff try: JoinLeagueRequest(1, player, team, some_gender) self.assertEqual(False, True, "Should raise invalid field") except InvalidField: pass try: JoinLeagueRequest(email, 1, team, some_gender) self.assertEqual(False, True, "Should raise invalid field") except InvalidField: pass try: JoinLeagueRequest(email, player, "wrong team", some_gender) self.assertEqual(False, True, "Should raise team does not exist") except TeamDoesNotExist: pass try: JoinLeagueRequest(email, player, no_team, some_gender) self.assertEqual(False, True, "Should raise team does not exist") except TeamDoesNotExist: pass try: JoinLeagueRequest(email, player, team, "XX") self.assertEqual(False, True, "Should raise invalid field") except InvalidField: pass
def testAcceptJoinLeagueRequestTwice(self): name = str(uuid.uuid1()) email = name + "@mlsb.ca" some_gender = "m" player = self.add_player(name, email, gender=some_gender) color = str(uuid.uuid1()) league = self.add_league(str(uuid.uuid1())) sponsor = self.add_sponsor(str(uuid.uuid1())) team_json = self.add_team(color, sponsor=sponsor, league=league) team = Team.query.get(team_json['team_id']) league_request = JoinLeagueRequest(email, player, team, some_gender) league_request.accept_request() try: league_request.accept_request() self.assertTrue( False, "Should not be able to accept request league twice") except HaveLeagueRequestException: pass