1
2 from twisted.internet import defer, reactor
3
4 from elisa.core.media_uri import MediaUri
5 from elisa.core import common
6 from elisa.extern.coherence.et import parse_xml
7
8 from node_builder_test import NodeBuilderTest, StupidModel
9 from elisa.core.tests.elisa_test_case import ElisaTestCase
10
11 from elisa.core.tests.elisa_test_case import BoilerPlateApp, DEFAULT_CONFIG
12
13 from elisa.core.observers.list import ListObservable
14
15
22
25
42
43
44
46 component_path = 'xmlmenu:uri_node_builder'
47 entry_identifiers = ['uri_node']
48
50
51 data = """
52 <MenuEntry type='uri_node'>
53 <URI>elisa://localhost/artists</URI>
54 </MenuEntry>
55 """
56 xml = parse_xml(data)
57 root = xml.getroot()
58
59 def done_callback(data, test_model):
60
61 self.assertEquals(len(test_model.children), 1)
62
63 test_model = StupidModel()
64 test_model.children = []
65 menu_config = {
66 'DefaultDirsIcon' : 'dir_icon',
67 'DefaultFilesIcon' : 'file_icon',
68 'MediaFilter' : 'ANY',
69 'ContentType' : 'sections' }
70 self.xmlmenu._model_configs[test_model] = menu_config
71
72 dfr = self.component.build_menu_entry(test_model, root)
73 dfr.addCallback(done_callback, test_model)
74
76
77 data = """
78 <MenuEntry type='uri_node'>
79 </MenuEntry>
80 """
81 xml = parse_xml(data)
82 root = xml.getroot()
83
84 def done_callback(data, test_model):
85
86 self.assertEquals(len(test_model.children), 0)
87
88 test_model = StupidModel()
89 test_model.children = []
90 menu_config = {
91 'DefaultDirsIcon' : 'dir_icon',
92 'DefaultFilesIcon' : 'file_icon',
93 'MediaFilter' : 'ANY',
94 'ContentType' : 'sections' }
95 self.xmlmenu._model_configs[test_model] = menu_config
96
97 dfr = self.component.build_menu_entry(test_model, root)
98 dfr.addCallback(done_callback, test_model)
99
108
114
116 m = StupidMediaManager()
117 m.direct_children_for_uri = {'file:///a' : [(MediaUri('e:/a'), {}),
118 (MediaUri('e:/b'), {'default_image':'c'}),
119 (MediaUri('e:/c'), {}),
120 (MediaUri('e:/d'), {})]}
121 m.media_type_for_uri = {'e:/a' : {'file_type' : 'audio'},
122 'e:/b' : {'file_type' : 'video'},
123 'e:/c' : {'file_type' : 'image'},
124 'e:/d' : {'file_type' : 'directory'}
125 }
126 common.application.media_manager = m
127 model = StupidModel()
128 model.uri = MediaUri('file:///a')
129 self.component.files_index_start = 0
130 model.activity = self.component
131 menu_config = {
132 'DefaultDirsIcon' : 'dir_icon',
133 'DefaultFilesIcon' : 'file_icon',
134 'MediaFilter' : 'ANY',
135 'ContentType' : 'sections' }
136 self.xmlmenu._model_configs[model] = menu_config
137 model.children = StupidModelList()
138 dfr = self.component.loadmore(model)
139 dfr = defer.Deferred()
140
141 def do_callback(model):
142 self.failIf(len(model.children) == 0)
143 self.component.unload(model.children)
144 self.assertEquals(len(model.children), 0)
145 dfr.callback(True)
146
147 reactor.callLater(3, do_callback, model)
148 return dfr
149
150
151 from elisa.plugins.good.xmlmenu.xmlmenu_components.uri_node_builder import MetadataObserver, UriObserver
152
155
163
165
177
186
188 m = common.application.media_manager
189 m.uri_to_media_type = {
190 'file:///testdir' : {'file_type' : 'directory'},
191 'file:///music1.mp3' : {'file_type' : 'audio'},
192 'file:///music2.mp3' : {'file_type' : 'audio'},
193 'file:///music3.mp3' : {'file_type' : 'audio'},
194 'file:///music4.mp3' : {'file_type' : 'audio'},
195 'file:///music5.mp3' : {'file_type' : 'audio'},
196 'file:///video1.mp3' : {'file_type' : 'video'},
197 'file:///video2.mp3' : {'file_type' : 'video'},
198 'file:///video3.mp3' : {'file_type' : 'video'},
199 'file:///video4.mp3' : {'file_type' : 'video'},
200 'file:///video5.mp3' : {'file_type' : 'video'},
201 'file:///image1.mp3' : {'file_type' : 'image'},
202 'file:///image2.mp3' : {'file_type' : 'image'},
203 'file:///image3.mp3' : {'file_type' : 'image'},
204 'file:///image4.mp3' : {'file_type' : 'image'},
205 'file:///image5.mp3' : {'file_type' : 'image'},
206 }
207
208 first_element_dfr = defer.Deferred()
209 model = StupidModel()
210 model.activity = self
211 model.children = []
212 default_config = {
213 'DefaultDirsIcon' : 'dir_icon',
214 'DefaultFilesIcon' : 'file_icon',
215 'MediaFilter' : 'ANY',
216 'ContentType' : 'sections' }
217 self.observer = UriObserver(model, default_config, first_element_dfr)
218
219 for key in m.uri_to_media_type.keys():
220 self.observer.inserted([(key, {})], -1)
221
222 dfr = defer.Deferred()
223
224 def do_callback():
225 self.failIf(len(model.children) == 0)
226 self.observer.removed(model.children, 0)
227 self.assertEquals(len(model.children), 0)
228 dfr.callback(True)
229
230 reactor.callLater(3, do_callback)
231 return dfr
232
236