import unittest import mock from mopidy.backends import dummy as backend from mopidy.frontends import mpd from mopidy.frontends.mpd import dispatcher from mopidy.mixers import dummy as mixer from mopidy.utils import network class MockConnetion(mock.Mock): def __init__(self, *args, **kwargs): super(MockConnetion, self).__init__(*args, **kwargs) self.host = mock.sentinel.host self.port = mock.sentinel.port self.response = [] def send(self, data): lines = (line for line in data.split('\n') if line) self.response.extend(lines) class BaseTestCase(unittest.TestCase): def setUp(self): self.backend = backend.DummyBackend.start().proxy() self.mixer = mixer.DummyMixer.start().proxy() self.dispatcher = dispatcher.MpdDispatcher() self.connection = MockConnetion() self.session = mpd.MpdSession(self.connection) def tearDown(self): self.backend.stop().get() self.mixer.stop().get() def sendRequest(self, request, clear=False): self.connection.response = [] self.session.on_line_received(request) return self.connection.response def assertInResponse(self, value): self.assert_(value in self.connection.response, u'Did not find %s ' 'in %s' % (repr(value), repr(self.connection.response))) def assertNotInResponse(self, value): self.assert_(value not in self.connection.response, u'Found %s in %s' % (repr(value), repr(self.connection.response))) def assertEqualResponse(self, value): self.assertEqual(1, len(self.connection.response)) self.assertEqual(value, self.connection.response[0])