Package elisa :: Package plugins :: Package good :: Package media_db :: Package tests :: Module test_elisa_media
[hide private]
[frames] | no frames]

Source Code for Module elisa.plugins.good.media_db.tests.test_elisa_media

  1   
  2  from elisa.core.tests.test_media_provider import TestMediaProvider 
  3  from elisa.core.tests.elisa_test_case import BoilerPlateApp 
  4  from elisa.plugins.good.media_db import elisa_media 
  5  from elisa.core import common 
  6  from elisa.core.media_uri import MediaUri 
  7  from elisa.core.media_db import MediaDB 
  8  from elisa.core.db_backend import DBBackend, DBBackendError 
  9  from elisa.core.utils import classinit 
 10   
 11  import os, platform 
 12  import threading 
 13   
 14  DB_CONNECTIONS = {} 
 15   
16 -class FakeMediaManager:
17 18 # Allows property fget/fset/fdel/doc overriding 19 __metaclass__ = classinit.ClassInitMeta 20 __classinit__ = classinit.build_properties 21
22 - def __init__(self):
23 self._db_lock = threading.Lock()
24
25 - def media_db__get(self):
26 """ MediaDB instance accessor. 27 @warning: If '../elisa/plugins/base/tests/data/elisa.db' changes 28 the tests won't work anymore 29 """ 30 31 db = None 32 33 global DB_CONNECTIONS 34 try: 35 self._db_lock.acquire() 36 current_thread = threading.currentThread() 37 thread_id = id(current_thread) 38 backend = DB_CONNECTIONS.get(thread_id) 39 if not backend: 40 db = '../elisa/plugins/good/media_db/tests/data/elisa.db' 41 backend = DBBackend(db_backend='sqlite', 42 database=db) 43 44 DB_CONNECTIONS[thread_id] = backend 45 if backend: 46 db = MediaDB(backend) 47 finally: 48 self._db_lock.release() 49 50 return db
51
52 -class ElisaMediaApp(BoilerPlateApp):
53
54 - def __init__(self, config_file):
57 58
59 -class TestElisaMedia(TestMediaProvider):
60 61 component_class = elisa_media.ElisaMedia 62 63
64 - def __init__(self, methodName='runTest'):
65 TestMediaProvider.__init__(self, methodName=methodName) 66 db_file = 'elisa/plugins/good/media_db/tests/data/elisa.db' 67 try: 68 db = DBBackend(db_backend='sqlite', database=db_file) 69 except DBBackendError, error: 70 self.skip = error
71
72 - def setUp(self):
73 TestMediaProvider.setUp(self) 74 75 common.boot() 76 77 app = ElisaMediaApp('empty.conf') 78 common.set_application(app)
79 80 #common.application.media_manager.media_db = MediaDB(db) 81
82 - def get_valid_uris(self):
83 return [MediaUri("elisa:///")]
84
85 - def test_get_artists(self):
86 87 lc = [] 88 89 def gotchildren(l): 90 res = MediaUri('elisa://localhost/artists/archive') 91 92 uri = [] 93 for ur,els in l: 94 uri.append(ur) 95 96 self.failUnless(res in uri)
97 98 99 uri = MediaUri('elisa://localhost/artists') 100 dfr = self.component.get_direct_children(uri, lc) 101 dfr.addCallback(gotchildren) 102 return dfr
103 104 if platform.system() == 'Windows': 105 test_get_artists.skip = "Skipped under windows, to fix" 106 107
108 - def test_get_artists_by_name(self):
109 110 lc = [] 111 112 def gotchildren(l): 113 r = 'elisa://localhost/artists/archive/albums/' 114 expected_uris = [ MediaUri('%s%s' % (r, u)) 115 for u in ('lights', 116 'londinium', 117 'take%20my%20head', 118 'you%20all%20look%20the%20same%20to%20me') 119 ] 120 uris = [] 121 for ur,els in l: 122 uris.append(ur) 123 124 self.assertEqual(expected_uris, uris)
125 126 uri = MediaUri('elisa://localhost/artists/archive') 127 dfr = self.component.get_direct_children(uri, lc) 128 dfr.addCallback(gotchildren) 129 return dfr 130 131 if platform.system() == 'Windows': 132 test_get_artists_by_name.skip = "Skipped under windows, to fix" 133 134
135 - def test_get_artists_by_name_by_album(self):
136 137 lc = [] 138 139 def gotchildren(l): 140 uri = MediaUri('elisa://localhost/artists/archive/albums/londinium') 141 uris = [] 142 for ur,els in l: 143 uris.append(ur) 144 145 self.failUnless(uri in uris)
146 147 148 uri = MediaUri('elisa://localhost/artists/archive/albums') 149 dfr = self.component.get_direct_children(uri, lc) 150 dfr.addCallback(gotchildren) 151 return dfr 152 153 if platform.system() == 'Windows': 154 test_get_artists_by_name_by_album.skip = "Skipped under windows, to fix" 155
156 - def test_get_files(self):
157 158 lc = [] 159 160 def gotchildren(l): 161 expected_len = 1364 162 self.failUnless(len(l) == expected_len)
163 164 165 uri = MediaUri('elisa://localhost/files') 166 dfr = self.component.get_direct_children(uri, lc) 167 dfr.addCallback(gotchildren) 168 return dfr 169 170 if platform.system() == 'Windows': 171 test_get_files.skip = "Skipped under windows, to fix" 172