Skip to content

Commit

Permalink
simplify asserts in unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Jul 3, 2020
1 parent 280d132 commit a4f9992
Show file tree
Hide file tree
Showing 14 changed files with 2,459 additions and 1,500 deletions.
639 changes: 391 additions & 248 deletions tests/asyncio/test_asyncio_client.py

Large diffs are not rendered by default.

186 changes: 114 additions & 72 deletions tests/asyncio/test_asyncio_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import unittest

import six

if six.PY3:
from unittest import mock
else:
Expand Down Expand Up @@ -38,53 +39,61 @@ def setUp(self):

def test_connect(self):
self.bm.connect('123', '/foo')
self.assertIn(None, self.bm.rooms['/foo'])
self.assertIn('123', self.bm.rooms['/foo'])
self.assertIn('123', self.bm.rooms['/foo'][None])
self.assertIn('123', self.bm.rooms['/foo']['123'])
self.assertEqual(self.bm.rooms['/foo'], {None: {'123': True},
'123': {'123': True}})
assert None in self.bm.rooms['/foo']
assert '123' in self.bm.rooms['/foo']
assert '123' in self.bm.rooms['/foo'][None]
assert '123' in self.bm.rooms['/foo']['123']
assert self.bm.rooms['/foo'] == {
None: {'123': True},
'123': {'123': True},
}

def test_pre_disconnect(self):
self.bm.connect('123', '/foo')
self.bm.connect('456', '/foo')
self.bm.pre_disconnect('123', '/foo')
self.assertEqual(self.bm.pending_disconnect, {'/foo': ['123']})
self.assertFalse(self.bm.is_connected('123', '/foo'))
assert self.bm.pending_disconnect == {'/foo': ['123']}
assert not self.bm.is_connected('123', '/foo')
self.bm.pre_disconnect('456', '/foo')
self.assertEqual(self.bm.pending_disconnect, {'/foo': ['123', '456']})
self.assertFalse(self.bm.is_connected('456', '/foo'))
assert self.bm.pending_disconnect == {'/foo': ['123', '456']}
assert not self.bm.is_connected('456', '/foo')
self.bm.disconnect('123', '/foo')
self.assertEqual(self.bm.pending_disconnect, {'/foo': ['456']})
assert self.bm.pending_disconnect == {'/foo': ['456']}
self.bm.disconnect('456', '/foo')
self.assertEqual(self.bm.pending_disconnect, {})
assert self.bm.pending_disconnect == {}

def test_disconnect(self):
self.bm.connect('123', '/foo')
self.bm.connect('456', '/foo')
self.bm.enter_room('123', '/foo', 'bar')
self.bm.enter_room('456', '/foo', 'baz')
self.bm.disconnect('123', '/foo')
self.assertEqual(self.bm.rooms['/foo'], {None: {'456': True},
'456': {'456': True},
'baz': {'456': True}})
assert self.bm.rooms['/foo'] == {
None: {'456': True},
'456': {'456': True},
'baz': {'456': True},
}

def test_disconnect_default_namespace(self):
self.bm.connect('123', '/')
self.bm.connect('123', '/foo')
self.bm.connect('456', '/')
self.bm.connect('456', '/foo')
self.assertTrue(self.bm.is_connected('123', '/'))
self.assertTrue(self.bm.is_connected('123', '/foo'))
assert self.bm.is_connected('123', '/')
assert self.bm.is_connected('123', '/foo')
self.bm.disconnect('123', '/')
self.assertFalse(self.bm.is_connected('123', '/'))
self.assertTrue(self.bm.is_connected('123', '/foo'))
assert not self.bm.is_connected('123', '/')
assert self.bm.is_connected('123', '/foo')
self.bm.disconnect('123', '/foo')
self.assertFalse(self.bm.is_connected('123', '/foo'))
self.assertEqual(self.bm.rooms['/'], {None: {'456': True},
'456': {'456': True}})
self.assertEqual(self.bm.rooms['/foo'], {None: {'456': True},
'456': {'456': True}})
assert not self.bm.is_connected('123', '/foo')
assert self.bm.rooms['/'] == {
None: {'456': True},
'456': {'456': True},
}
assert self.bm.rooms['/foo'] == {
None: {'456': True},
'456': {'456': True},
}

def test_disconnect_twice(self):
self.bm.connect('123', '/')
Expand All @@ -95,10 +104,14 @@ def test_disconnect_twice(self):
self.bm.disconnect('123', '/foo')
self.bm.disconnect('123', '/')
self.bm.disconnect('123', '/foo')
self.assertEqual(self.bm.rooms['/'], {None: {'456': True},
'456': {'456': True}})
self.assertEqual(self.bm.rooms['/foo'], {None: {'456': True},
'456': {'456': True}})
assert self.bm.rooms['/'] == {
None: {'456': True},
'456': {'456': True},
}
assert self.bm.rooms['/foo'] == {
None: {'456': True},
'456': {'456': True},
}

def test_disconnect_all(self):
self.bm.connect('123', '/foo')
Expand All @@ -107,17 +120,17 @@ def test_disconnect_all(self):
self.bm.enter_room('456', '/foo', 'baz')
self.bm.disconnect('123', '/foo')
self.bm.disconnect('456', '/foo')
self.assertEqual(self.bm.rooms, {})
assert self.bm.rooms == {}

def test_disconnect_with_callbacks(self):
self.bm.connect('123', '/')
self.bm.connect('123', '/foo')
self.bm._generate_ack_id('123', '/', 'f')
self.bm._generate_ack_id('123', '/foo', 'g')
self.bm.disconnect('123', '/foo')
self.assertNotIn('/foo', self.bm.callbacks['123'])
assert '/foo' not in self.bm.callbacks['123']
self.bm.disconnect('123', '/')
self.assertNotIn('123', self.bm.callbacks)
assert '123' not in self.bm.callbacks

def test_trigger_sync_callback(self):
self.bm.connect('123', '/')
Expand All @@ -127,7 +140,7 @@ def test_trigger_sync_callback(self):
id2 = self.bm._generate_ack_id('123', '/foo', cb)
_run(self.bm.trigger_callback('123', '/', id1, ['foo']))
_run(self.bm.trigger_callback('123', '/foo', id2, ['bar', 'baz']))
self.assertEqual(cb.call_count, 2)
assert cb.call_count == 2
cb.assert_any_call('foo')
cb.assert_any_call('bar', 'baz')

Expand All @@ -139,7 +152,7 @@ def test_trigger_async_callback(self):
id2 = self.bm._generate_ack_id('123', '/foo', cb)
_run(self.bm.trigger_callback('123', '/', id1, ['foo']))
_run(self.bm.trigger_callback('123', '/foo', id2, ['bar', 'baz']))
self.assertEqual(cb.mock.call_count, 2)
assert cb.mock.call_count == 2
cb.mock.assert_any_call('foo')
cb.mock.assert_any_call('bar', 'baz')

Expand All @@ -152,26 +165,26 @@ def test_invalid_callback(self):
_run(self.bm.trigger_callback('124', '/', id, ['foo']))
_run(self.bm.trigger_callback('123', '/foo', id, ['foo']))
_run(self.bm.trigger_callback('123', '/', id + 1, ['foo']))
self.assertEqual(cb.mock.call_count, 0)
assert cb.mock.call_count == 0

def test_get_namespaces(self):
self.assertEqual(list(self.bm.get_namespaces()), [])
assert list(self.bm.get_namespaces()) == []
self.bm.connect('123', '/')
self.bm.connect('123', '/foo')
namespaces = list(self.bm.get_namespaces())
self.assertEqual(len(namespaces), 2)
self.assertIn('/', namespaces)
self.assertIn('/foo', namespaces)
assert len(namespaces) == 2
assert '/' in namespaces
assert '/foo' in namespaces

def test_get_participants(self):
self.bm.connect('123', '/')
self.bm.connect('456', '/')
self.bm.connect('789', '/')
self.bm.disconnect('789', '/')
self.assertNotIn('789', self.bm.rooms['/'][None])
assert '789' not in self.bm.rooms['/'][None]
participants = list(self.bm.get_participants('/', None))
self.assertEqual(len(participants), 2)
self.assertNotIn('789', participants)
assert len(participants) == 2
assert '789' not in participants

def test_leave_invalid_room(self):
self.bm.connect('123', '/foo')
Expand All @@ -180,7 +193,7 @@ def test_leave_invalid_room(self):

def test_no_room(self):
rooms = self.bm.get_rooms('123', '/foo')
self.assertEqual([], rooms)
assert [] == rooms

def test_close_room(self):
self.bm.connect('123', '/foo')
Expand All @@ -189,7 +202,7 @@ def test_close_room(self):
self.bm.enter_room('123', '/foo', 'bar')
self.bm.enter_room('123', '/foo', 'bar')
_run(self.bm.close_room('bar', '/foo'))
self.assertNotIn('bar', self.bm.rooms['/foo'])
assert 'bar' not in self.bm.rooms['/foo']

def test_close_invalid_room(self):
self.bm.close_room('bar', '/foo')
Expand All @@ -198,31 +211,40 @@ def test_rooms(self):
self.bm.connect('123', '/foo')
self.bm.enter_room('123', '/foo', 'bar')
r = self.bm.get_rooms('123', '/foo')
self.assertEqual(len(r), 2)
self.assertIn('123', r)
self.assertIn('bar', r)
assert len(r) == 2
assert '123' in r
assert 'bar' in r

def test_emit_to_sid(self):
self.bm.connect('123', '/foo')
self.bm.connect('456', '/foo')
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo',
room='123'))
_run(
self.bm.emit(
'my event', {'foo': 'bar'}, namespace='/foo', room='123'
)
)
self.bm.server._emit_internal.mock.assert_called_once_with(
'123', 'my event', {'foo': 'bar'}, '/foo', None)
'123', 'my event', {'foo': 'bar'}, '/foo', None
)

def test_emit_to_room(self):
self.bm.connect('123', '/foo')
self.bm.enter_room('123', '/foo', 'bar')
self.bm.connect('456', '/foo')
self.bm.enter_room('456', '/foo', 'bar')
self.bm.connect('789', '/foo')
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo',
room='bar'))
self.assertEqual(self.bm.server._emit_internal.mock.call_count, 2)
_run(
self.bm.emit(
'my event', {'foo': 'bar'}, namespace='/foo', room='bar'
)
)
assert self.bm.server._emit_internal.mock.call_count == 2
self.bm.server._emit_internal.mock.assert_any_call(
'123', 'my event', {'foo': 'bar'}, '/foo', None)
'123', 'my event', {'foo': 'bar'}, '/foo', None
)
self.bm.server._emit_internal.mock.assert_any_call(
'456', 'my event', {'foo': 'bar'}, '/foo', None)
'456', 'my event', {'foo': 'bar'}, '/foo', None
)

def test_emit_to_all(self):
self.bm.connect('123', '/foo')
Expand All @@ -232,13 +254,16 @@ def test_emit_to_all(self):
self.bm.connect('789', '/foo')
self.bm.connect('abc', '/bar')
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo'))
self.assertEqual(self.bm.server._emit_internal.mock.call_count, 3)
assert self.bm.server._emit_internal.mock.call_count == 3
self.bm.server._emit_internal.mock.assert_any_call(
'123', 'my event', {'foo': 'bar'}, '/foo', None)
'123', 'my event', {'foo': 'bar'}, '/foo', None
)
self.bm.server._emit_internal.mock.assert_any_call(
'456', 'my event', {'foo': 'bar'}, '/foo', None)
'456', 'my event', {'foo': 'bar'}, '/foo', None
)
self.bm.server._emit_internal.mock.assert_any_call(
'789', 'my event', {'foo': 'bar'}, '/foo', None)
'789', 'my event', {'foo': 'bar'}, '/foo', None
)

def test_emit_to_all_skip_one(self):
self.bm.connect('123', '/foo')
Expand All @@ -247,13 +272,18 @@ def test_emit_to_all_skip_one(self):
self.bm.enter_room('456', '/foo', 'bar')
self.bm.connect('789', '/foo')
self.bm.connect('abc', '/bar')
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo',
skip_sid='456'))
self.assertEqual(self.bm.server._emit_internal.mock.call_count, 2)
_run(
self.bm.emit(
'my event', {'foo': 'bar'}, namespace='/foo', skip_sid='456'
)
)
assert self.bm.server._emit_internal.mock.call_count == 2
self.bm.server._emit_internal.mock.assert_any_call(
'123', 'my event', {'foo': 'bar'}, '/foo', None)
'123', 'my event', {'foo': 'bar'}, '/foo', None
)
self.bm.server._emit_internal.mock.assert_any_call(
'789', 'my event', {'foo': 'bar'}, '/foo', None)
'789', 'my event', {'foo': 'bar'}, '/foo', None
)

def test_emit_to_all_skip_two(self):
self.bm.connect('123', '/foo')
Expand All @@ -262,25 +292,37 @@ def test_emit_to_all_skip_two(self):
self.bm.enter_room('456', '/foo', 'bar')
self.bm.connect('789', '/foo')
self.bm.connect('abc', '/bar')
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo',
skip_sid=['123', '789']))
self.assertEqual(self.bm.server._emit_internal.mock.call_count, 1)
_run(
self.bm.emit(
'my event',
{'foo': 'bar'},
namespace='/foo',
skip_sid=['123', '789'],
)
)
assert self.bm.server._emit_internal.mock.call_count == 1
self.bm.server._emit_internal.mock.assert_any_call(
'456', 'my event', {'foo': 'bar'}, '/foo', None)
'456', 'my event', {'foo': 'bar'}, '/foo', None
)

def test_emit_with_callback(self):
self.bm.connect('123', '/foo')
self.bm._generate_ack_id = mock.MagicMock()
self.bm._generate_ack_id.return_value = 11
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo',
callback='cb'))
_run(
self.bm.emit(
'my event', {'foo': 'bar'}, namespace='/foo', callback='cb'
)
)
self.bm._generate_ack_id.assert_called_once_with('123', '/foo', 'cb')
self.bm.server._emit_internal.mock.assert_called_once_with(
'123', 'my event', {'foo': 'bar'}, '/foo', 11)
'123', 'my event', {'foo': 'bar'}, '/foo', 11
)

def test_emit_to_invalid_room(self):
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/',
room='123'))
_run(
self.bm.emit('my event', {'foo': 'bar'}, namespace='/', room='123')
)

def test_emit_to_invalid_namespace(self):
_run(self.bm.emit('my event', {'foo': 'bar'}, namespace='/foo'))
Loading

0 comments on commit a4f9992

Please sign in to comment.