Package elisa :: Package core :: Package tests :: Module test_metadata_provider
[hide private]
[frames] | no frames]

Source Code for Module elisa.core.tests.test_metadata_provider

  1  # Elisa - Home multimedia server 
  2  # Copyright (C) 2006-2008 Fluendo Embedded S.L. (www.fluendo.com). 
  3  # All rights reserved. 
  4  # 
  5  # This file is available under one of two license agreements. 
  6  # 
  7  # This file is licensed under the GPL version 3. 
  8  # See "LICENSE.GPL" in the root of this distribution including a special 
  9  # exception to use Elisa with Fluendo's plugins. 
 10  # 
 11  # The GPL part of Elisa is also available under a commercial licensing 
 12  # agreement from Fluendo. 
 13  # See "LICENSE.Elisa" in the root directory of this distribution package 
 14  # for details on that license. 
 15   
 16  from elisa.core.tests.elisa_test_case import ElisaTestCase 
 17  from elisa.core import common, plugin 
 18  from elisa.core import media_manager, metadata_manager, media_uri, media_scanner 
 19  from elisa.core import media_db 
 20  from elisa.base_components import media_provider, metadata_provider 
 21   
 22  from twisted.internet import defer, threads 
 23   
24 -class FooMetadataProvider(metadata_provider.MetadataProvider):
25
26 - def get_rank(self):
27 rank = 220 28 return rank
29
30 - def able_to_handle(self, dict):
31 if not dict.has_key('uri'): 32 return False 33 34 uri = dict['uri'] 35 36 if uri.scheme == 'foo': 37 return True 38 return False
39
40 - def get_metadata(self, dict, low_priority=False):
41 d = threads.deferToThread(self._get_metadata,dict) 42 return d
43
44 - def _get_metadata(self, dict):
45 if not dict.has_key('uri'): 46 return dict 47 dict['artist'] = 'foo' 48 dict['album'] = 'bar' 49 return dict
50
51 -class BarMetadataProvider(metadata_provider.MetadataProvider):
52 - def get_rank(self):
53 rank = 250 54 return rank
55
56 - def able_to_handle(self, dict):
57 if not dict.has_key('uri'): 58 return False 59 60 uri = dict['uri'] 61 62 if uri.scheme == 'foo' or uri.scheme == 'bar': 63 return True 64 return False
65
66 - def get_metadata(self, dict, low_priority=False):
67 d = threads.deferToThread(self._get_metadata,dict) 68 return d
69
70 - def _get_metadata(self, dict):
71 if not dict.has_key('uri'): 72 return dict 73 74 dict['artist'] = 'foo' 75 dict['album'] = 'bar' 76 dict['cover'] = 'fool' 77 78 return dict
79
80 -class TestMetadataProvider(ElisaTestCase):
81
82 - def setUp(self):
83 ElisaTestCase.setUp(self) 84 self._fooprovider = FooMetadataProvider() 85 self._barprovider = BarMetadataProvider()
86
87 - def test_able_to_handle(self):
88 foo_uri = media_uri.MediaUri(u'foo://bar') 89 foo_dict = {'uri' : foo_uri} 90 bar_uri = media_uri.MediaUri(u'bar://blah') 91 bar_dict = {'uri' : bar_uri} 92 self.assertEquals(self._fooprovider.able_to_handle(foo_dict), True) 93 self.assertEquals(self._barprovider.able_to_handle(foo_dict), True) 94 self.assertEquals(self._fooprovider.able_to_handle(bar_dict), False) 95 self.assertEquals(self._barprovider.able_to_handle(bar_dict), True)
96 97
98 - def test_metadata_foo(self):
99 foo_uri = media_uri.MediaUri(u'foo://bar') 100 foo_dict = {'uri' : foo_uri} 101 102 def dict_filled(dict): 103 self.assertEquals(dict, {'uri': foo_uri,'artist': 'foo', 'album': 'bar'})
104 105 df = self._fooprovider.get_metadata(foo_dict) 106 df.addCallback(dict_filled)
107 108
109 - def test_metadata_bar(self):
110 foo_uri = media_uri.MediaUri(u'foo://bar') 111 foo_dict = {'uri' : foo_uri} 112 113 def dict_filled(dict): 114 self.assertEquals(dict, {'uri': foo_uri,'artist': 'foo', 'album': 115 'bar','cover' : 'fool'})
116 117 df = self._barprovider.get_metadata(foo_dict) 118 df.addCallback(dict_filled) 119