def leaderboard(): global leader_board if 'username' in session: user = session.get('username') my_users[user]['game-over'] = True leader_board = get_leaderboard(my_users, leader_board) socketio.emit('leaders', {'data': leader_board}) return render_template('leaderboard.html', leaders=leader_board) else: leader_board = get_leaderboard(my_users, leader_board) return render_template('leaderboard.html', leaders=leader_board)
def game(): global online global leader_board idType = id_type() if 'username' in session: user = session.get('username') if user in my_users: del my_users[user]['username'] my_users[user] = set_up_new_user(user) if not user in online: online = add_user_online(my_users, user, online) else: online = remove_user_online(user, online) online = add_user_online(my_users, user, online) leader_board = get_leaderboard(my_users, leader_board) socketio.emit('in_out_game', {'data': online}) socketio.emit('leaders', {'data': leader_board}) return render_template('game.html', username=user, type_id=idType, on_line=online, leader=leader_board[:3]) else: user = session.get('username') my_users[user] = set_up_new_user(user) if not user in online: online = add_user_online(my_users, user, online) else: online = remove_user_online(user, online) online = add_user_online(my_users, user, online) leader_board = get_leaderboard(my_users, leader_board) socketio.emit('in_out_game', {'data': online}) socketio.emit('leaders', {'data': leader_board}) return render_template('game.html', username=user, type_id=idType, on_line=online, leader=leader_board[:3]) else: return redirect(url_for('index'))
def answer(): global online global leader_board if request.method == 'POST': data = request.get_json() user = session.get('username') result = check_answer(data['questionId'], data['answer']) if result[0]['result'] == 'correct': online = update_user_online(user, online) my_users[session.get('username')]['score'] = my_users[session.get( 'username')]['score'] + 1 else: my_users[user]['wrong'].append( [result[0]['id'], result[0]['answer']]) socketio.emit('in_out_game', {'data': online}) score = my_users[user]['score'] socketio.emit('my_score', {'score': score, 'user': user}) answered_count = len(my_users[user]['answered']) if answered_count == 12: my_users[user]['game-over'] = True leader_board = get_leaderboard(my_users, leader_board) socketio.emit('leaders', {'data': leader_board}) data = {'msg': result, 'game-over': True} return jsonify(data) else: data = {'msg': result} return jsonify(data) else: return redirect(url_for('index'))
def leavegame(): global leader_board if 'username' in session: user = session.get('username') my_users[user]['game-over'] = True leader_board = get_leaderboard(my_users, leader_board) socketio.emit('leaders', {'data': leader_board}) return redirect(url_for('index'))
def test_returns_list_length_0_if_no_one_answers_correctly(self): '''Should return an empty list if user/s played game and have answered no questions correctly''' my_users = { 'j': { 'username': '******', 'ans': [], 'wrong': [], 'score': 0 }, } leader_board = [] result = get_leaderboard(my_users, leader_board) self.assertEqual(0, len(result))
def test_returns_usernames_score(self): '''Should return tuples with username and score and highest score/username pair should be first in list''' my_users = { 'j': { 'username': '******', 'ans': [], 'wrong': [], 'score': 2 }, 'e': { 'username': '******', 'ans': [], 'wrong': [], 'score': 5 }, 'a': { 'username': '******', 'ans': [], 'wrong': [], 'score': 9 }, 'b': { 'username': '******', 'ans': [], 'wrong': [], 'score': 6 }, 'c': { 'username': '******', 'ans': [], 'wrong': [], 'score': 2 }, 'd': { 'username': '******', 'ans': [], 'wrong': [], 'score': 7 } } leader_board = [] result = get_leaderboard(my_users, leader_board) self.assertEqual(9, result[0][1]) self.assertEqual('a', result[0][0]) self.assertTrue(type(result[0]) == tuple)
def test_returns_list_length_greater_than_0(self): '''Should return a list of length of at least one if a user has played game and answered a question correctly''' my_users = { 'j': { 'username': '******', 'ans': [], 'wrong': [], 'score': 1 }, } leader_board = [] result = get_leaderboard(my_users, leader_board) self.assertEqual(1, len(result))
def test_return_list_length(self): '''Should return a list of length 5 as 5 users score greater than 0''' my_users = { 'j': { 'username': '******', 'ans': [], 'wrong': [], 'score': 2 }, 'e': { 'username': '******', 'ans': [], 'wrong': [], 'score': 5 }, 'a': { 'username': '******', 'ans': [], 'wrong': [], 'score': 9 }, 'b ': { 'username': '******', 'ans': [], 'wrong': [], 'score': 6 }, 'c': { 'username': '******', 'ans': [], 'wrong': [], 'score': 2 }, 'd': { 'username': '******', 'ans': [], 'wrong': [], 'score': 0 } } leader_board = [] result = get_leaderboard(my_users, leader_board) self.assertEqual(5, len(result))
def test_get_leaderboard_returns_list(self): '''Ensure get_leaderboard returns a list''' my_users = { 'j': { 'username': '******', 'ans': [], 'wrong': [], 'score': 2 }, 'e': { 'username': '******', 'ans': [], 'wrong': [], 'score': 5 }, 'a': { 'username': '******', 'ans': [], 'wrong': [], 'score': 9 }, 'b ': { 'username': '******', 'ans': [], 'wrong': [], 'score': 6 }, 'c': { 'username': '******', 'ans': [], 'wrong': [], 'score': 2 }, 'd': { 'username': '******', 'ans': [], 'wrong': [], 'score': 7 } } leader_board = [] result = get_leaderboard(my_users, leader_board) self.assertTrue(type(result) == list)