Skip to content

Commit

Permalink
Merge 470d189 into c98e315
Browse files Browse the repository at this point in the history
  • Loading branch information
NiallEgan committed Aug 15, 2018
2 parents c98e315 + 470d189 commit 4858376
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 19 deletions.
15 changes: 9 additions & 6 deletions aimmo-game/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,17 @@ def remove_session_id_from_mappings(sid,


def send_logs(session_id_to_avatar_id, logs_provider):
def should_send_logs(logs):
return logs is not None and logs != ''

for sid, avatar_id in session_id_to_avatar_id.iteritems():
avatar_logs = logs_provider.get_user_logs(avatar_id)
socketio_server.emit(
'log',
avatar_logs,
room=sid,
)
if should_send_logs(avatar_logs):
socketio_server.emit(
'log',
avatar_logs,
room=sid,
)


def send_game_state(session_id_to_avatar_id):
Expand All @@ -97,7 +101,6 @@ def send_updates(session_id_to_avatar_id=_default_session_id_to_avatar_id_mappin
send_logs(session_id_to_avatar_id, logs_provider)



def get_game_state(state_provider=_default_state_provider):
with state_provider as game_state:
world_map = game_state.world_map
Expand Down
46 changes: 33 additions & 13 deletions aimmo-game/tests/test_socketio.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,15 @@ def setUp(self):

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_socketio_emit_called(self, mocked_socketio,
mocked_game_state):
def test_socketio_emit_called(self, mocked_socketio, mocked_game_state):
service.world_update_on_connect(self.sid, self.environ,
session_id_to_avatar_id=self.mocked_mappings)

self.assertTrue(mocked_socketio.return_value.emit.assert_called_once)

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_matched_session_id_to_avatar_id_mapping(self, mocked_socketio,
mocked_game_state):
def test_matched_session_id_to_avatar_id_mapping(self, mocked_socketio, mocked_game_state):
self.assertEqual(len(self.mocked_mappings), 0)

service.world_update_on_connect(self.sid, self.environ,
Expand All @@ -44,8 +42,7 @@ def test_matched_session_id_to_avatar_id_mapping(self, mocked_socketio,

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_no_match_session_id_to_avatar_id_mapping(self, mocked_socketio,
mocked_game_state):
def test_no_match_session_id_to_avatar_id_mapping(self, mocked_socketio, mocked_game_state):
self.environ['QUERY_STRING'] = 'corrupted!@$%string123'

self.assertEqual(len(self.mocked_mappings), 0)
Expand All @@ -59,25 +56,48 @@ def test_no_match_session_id_to_avatar_id_mapping(self, mocked_socketio,

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_send_updates_for_one_user(self, mocked_socketio,
mocked_game_state):
def test_send_updates_for_one_user(self, mocked_socketio, mocked_game_state):
self.mocked_mappings[self.sid] = 1
self.mocked_logs_provider.set_user_logs(self.mocked_mappings[self.sid], 'Logs one')

service.send_updates(session_id_to_avatar_id=self.mocked_mappings,
logs_provider=self.mocked_logs_provider)

game_state_call = mock.call('game-state', {'foo': 'bar'}, room=self.sid)
log_call = mock.call('log', None, room=self.sid)
log_call = mock.call('log', 'Logs one', room=self.sid)

mocked_socketio.emit.assert_has_calls([game_state_call, log_call], any_order=True)

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_send_updates_for_multiple_users(self, mocked_socketio,
mocked_game_state):
def test_no_logs_not_emitted(self, mocked_socketio, mocked_game_state):
""" If there are no logs for an avatar, no logs should be emitted. """
self.mocked_mappings[self.sid] = 1
service.send_updates(session_id_to_avatar_id=self.mocked_mappings,
logs_provider=self.mocked_logs_provider)

mocked_socketio.emit.assert_called_once_with('game-state', {'foo': 'bar'}, room=self.sid)

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_empty_logs_not_emitted(self, mocked_socketio, mocked_game_state):
""" If the logs are an empty sting, no logs should be emitted. """
self.mocked_mappings[self.sid] = 1
self.mocked_logs_provider.set_user_logs(self.mocked_mappings[self.sid], '')
service.send_updates(session_id_to_avatar_id=self.mocked_mappings,
logs_provider=self.mocked_logs_provider)

mocked_socketio.emit.assert_called_once_with('game-state', {'foo': 'bar'}, room=self.sid)

@mock.patch('service.get_game_state', return_value={'foo': 'bar'})
@mock.patch('service.socketio_server')
def test_send_updates_for_multiple_users(self, mocked_socketio, mocked_game_state):
self.mocked_mappings[self.sid] = 1
self.mocked_mappings['differentsid'] = 2

self.mocked_logs_provider.set_user_logs(self.mocked_mappings[self.sid], 'Logs one')
self.mocked_logs_provider.set_user_logs(self.mocked_mappings['differentsid'], 'Logs two')

service.send_updates(session_id_to_avatar_id=self.mocked_mappings,
logs_provider=self.mocked_logs_provider)

Expand All @@ -90,11 +110,11 @@ def test_send_updates_for_multiple_users(self, mocked_socketio,
room='differentsid')

user_one_log_call = mock.call('log',
None,
'Logs one',
room=self.sid)

user_two_log_call = mock.call('log',
None,
'Logs two',
room='differentsid')

mocked_socketio.emit.assert_has_calls([user_one_game_state_call,
Expand Down

0 comments on commit 4858376

Please sign in to comment.