cc-4228: added tests for m.m.eventcontractor

This commit is contained in:
Rudi Grinberg 2012-08-17 11:02:46 -04:00
parent 04836695e7
commit 4a10fb2ecf
2 changed files with 53 additions and 2 deletions
python_apps/media-monitor2

View File

@ -104,8 +104,7 @@ class FakePyinotify(object):
instantiate objects from the classes below whenever we want to turn
a single event into multiple events
"""
def __init__(self, path):
self.pathname = path
def __init__(self, path): self.pathname = path
class OrganizeFile(BaseEvent, HasMetaData):
def __init__(self, *args, **kwargs):

View File

@ -0,0 +1,52 @@
import unittest
from media.monitor.eventcontractor import EventContractor
#from media.monitor.exceptions import BadSongFile
from media.monitor.events import FakePyinotify, NewFile, MoveFile, \
DeleteFile
from mock import patch
class TestMMP(unittest.TestCase):
def test_event_registered(self):
ev = EventContractor()
e1 = NewFile( FakePyinotify('bullshit.mp3') )
e2 = MoveFile( FakePyinotify('bullshit.mp3') )
ev.register(e1)
self.assertTrue( ev.event_registered(e2) )
def test_get_old_event(self):
ev = EventContractor()
e1 = NewFile( FakePyinotify('bullshit.mp3') )
e2 = MoveFile( FakePyinotify('bullshit.mp3') )
ev.register(e1)
self.assertEqual( ev.get_old_event(e2), e1 )
def test_register(self):
ev = EventContractor()
e1 = NewFile( FakePyinotify('bullshit.mp3') )
e2 = DeleteFile( FakePyinotify('bullshit.mp3') )
self.assertTrue( ev.register(e1) )
# Check that morph_into is called when it should be
with patch.object(NewFile, 'morph_into', return_value='kimchi') \
as mock_method:
ret = ev.register(e2)
self.assertFalse(ret)
mock_method.assert_called_once_with(e2)
# This time we are not patching morph
self.assertFalse( ev.register(e2) )
# We did not an element
self.assertTrue( len(ev.store.keys()) == 1 )
morphed = ev.get_old_event(e2)
self.assertTrue( isinstance(morphed, DeleteFile) )
delete_ev = e1.safe_pack()[0]
print( ev.store )
self.assertEqual( delete_ev['mode'], u'delete')
self.assertTrue( len(ev.store.keys()) == 0 )
e3 = DeleteFile( FakePyinotify('horseshit.mp3') )
self.assertTrue( ev.register(e3) )
self.assertTrue( ev.register(e2) )
if __name__ == '__main__': unittest.main()