1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 from elisa.core.tests.elisa_test_case import ElisaTestCase
17 from elisa.core import plugin, config
18 from elisa.core.frontend import Frontend
19 from elisa.base_components.model import Model
20 from elisa.base_components.controller import Controller
21 from elisa.base_components.view import View
22 from elisa.base_components.view import ControllerNotSupported
23
28
33
41
49
51
52 supported_controllers = ("base_test:foo_controller",)
53 bindings = {"controller_child1": "view_child1",
54 "controller_child2": ["view_child2", "view_child3"]}
55
59
61 self.old_controller = False
62 self.new_controller = False
63 self.old_frontend = False
64 self.new_frontend = False
65
67 self.old_controller = old_controller
68 self.new_controller = new_controller
69
71 self.old_frontend = old_frontend
72 self.new_frontend = new_frontend
73
77
85
86 MAPPINGS="""\
87 [base_test:bar_model]
88 supported_controllers = ['base_test:bar_controller',]
89 controller = 'base_test:bar_controller'
90 supported_views = ['base_test:bar_view']
91 view = 'base_test:bar_view'
92 """
93
94
96
108
110
111 self.failUnlessEqual(self._foo.frontend, None)
112
113 cfg = config.Config('no_file', MAPPINGS)
114 frontend = Frontend(cfg)
115
116
117 self._foo.frontend = frontend
118 self.failUnlessEqual(self._foo.frontend, frontend)
119 self.failUnlessEqual(self._foo.old_frontend, None)
120 self.failUnlessEqual(self._foo.new_frontend, frontend)
121
122
123 self._foo.reset()
124 self._foo.frontend = None
125 self.failUnlessEqual(self._foo.frontend, None)
126 self.failUnlessEqual(self._foo.old_frontend, frontend)
127 self.failUnlessEqual(self._foo.new_frontend, None)
128
129
130 self._foo.reset()
131 self._foo.frontend = frontend
132 self.failUnlessEqual(self._foo.frontend, frontend)
133 self.failUnlessEqual(self._foo.old_frontend, None)
134 self.failUnlessEqual(self._foo.new_frontend, frontend)
135
136
137 self._foo.reset()
138 self._foo.frontend = frontend
139 self.failUnlessEqual(self._foo.frontend, frontend)
140 self.failUnlessEqual(self._foo.old_frontend, False)
141 self.failUnlessEqual(self._foo.new_frontend, False)
142
144
145 self.failUnlessEqual(self._foo.frontend, None)
146 self.failUnlessEqual(self._bar.frontend, None)
147
148 frontend = Frontend()
149
150
151 self._foo.frontend = frontend
152 self.failUnlessEqual(self._foo.frontend, frontend)
153 self.failUnlessEqual(self._foo.old_frontend, None)
154 self.failUnlessEqual(self._foo.new_frontend, frontend)
155
156
157
158 self._bar.parent = self._foo
159 self.failUnlessEqual(self._bar.frontend, frontend)
160 self.failUnlessEqual(self._bar.old_frontend, None)
161 self.failUnlessEqual(self._bar.new_frontend, frontend)
162
163
164 self._foo.reset()
165 self._bar.reset()
166 self._foo.frontend = None
167 self.failUnlessEqual(self._foo.frontend, None)
168 self.failUnlessEqual(self._foo.old_frontend, frontend)
169 self.failUnlessEqual(self._foo.new_frontend, None)
170 self.failUnlessEqual(self._bar.frontend, None)
171 self.failUnlessEqual(self._bar.old_frontend, frontend)
172 self.failUnlessEqual(self._bar.new_frontend, None)
173
174
175 self._foo.reset()
176 self._bar.reset()
177 self._foo.frontend = frontend
178 self.failUnlessEqual(self._foo.frontend, frontend)
179 self.failUnlessEqual(self._foo.old_frontend, None)
180 self.failUnlessEqual(self._foo.new_frontend, frontend)
181 self.failUnlessEqual(self._bar.frontend, frontend)
182 self.failUnlessEqual(self._bar.old_frontend, None)
183 self.failUnlessEqual(self._bar.new_frontend, frontend)
184
185
186 self._foo.reset()
187 self._bar.reset()
188 self._foo.frontend = frontend
189 self.failUnlessEqual(self._foo.frontend, frontend)
190 self.failUnlessEqual(self._foo.old_frontend, False)
191 self.failUnlessEqual(self._foo.new_frontend, False)
192 self.failUnlessEqual(self._bar.frontend, frontend)
193 self.failUnlessEqual(self._bar.old_frontend, False)
194 self.failUnlessEqual(self._bar.new_frontend, False)
195
196
197
198
199 def set_frontend(view, frontend):
200 view.frontend = frontend
201
202 self._foo.reset()
203 self._bar.reset()
204 self.failUnlessRaises(Exception, reset_frontend, self._bar, Frontend())
205 self.failUnlessRaises(Exception, reset_frontend, self._bar, None)
206
207
208 self.failUnlessEqual(self._foo.frontend, frontend)
209 self.failUnlessEqual(self._foo.old_frontend, False)
210 self.failUnlessEqual(self._foo.new_frontend, False)
211 self.failUnlessEqual(self._bar.frontend, frontend)
212 self.failUnlessEqual(self._bar.old_frontend, False)
213 self.failUnlessEqual(self._bar.new_frontend, False)
214
215 test_frontend_inheritance.skip = "should be implemented for bound views"
216
217
219
220 controller = FooController()
221 self._foo.controller = controller
222 self.failUnlessEqual(self._foo.controller, controller)
223 self.failUnlessEqual(self._foo.old_controller, None)
224 self.failUnlessEqual(self._foo.new_controller, controller)
225
226
227 self._foo.reset()
228 self._foo.controller = controller
229 self.failUnlessEqual(self._foo.controller, controller)
230 self.failUnlessEqual(self._foo.old_controller, False)
231 self.failUnlessEqual(self._foo.new_controller, False)
232
233
234 self._foo.reset()
235 controller2 = FooController()
236 self._foo.controller = controller2
237 self.failUnlessEqual(self._foo.controller, controller2)
238 self.failUnlessEqual(self._foo.old_controller, controller)
239 self.failUnlessEqual(self._foo.new_controller, controller2)
240
241
242 self._foo.reset()
243 self._foo.controller = None
244 self.failUnlessEqual(self._foo.controller, None)
245 self.failUnlessEqual(self._foo.old_controller, controller2)
246 self.failUnlessEqual(self._foo.new_controller, None)
247
248
249
250 self._foo.reset()
251
252 def set_controller(view, controller):
253 view.controller = controller
254
255 controller = BarController()
256 self.failUnlessRaises(ControllerNotSupported, set_controller, self._foo, controller)
257 self.failUnlessEqual(self._foo.controller, None)
258 self.failUnlessEqual(self._foo.old_controller, False)
259 self.failUnlessEqual(self._foo.new_controller, False)
260
261
269
270
271 controller = FooController()
272 set_controller(self._foo, controller)
273
274
275 controller = BarController()
276 self.failUnlessRaises(ControllerNotSupported, set_controller, self._foo, controller)
277
278
321
322
324 cfg = config.Config('no_file', MAPPINGS)
325 frontend = Frontend(cfg)
326 self._foo.frontend = frontend
327
328
329 controller = FooController()
330 self._foo.controller = controller
331
332
333
334 controller.not_bound1 = 123
335 controller.not_bound2 = BarController()
336
337 self.failUnlessRaises(AttributeError, getattr, self._foo,
338 "view_child1")
339 self.failUnlessRaises(AttributeError, getattr, self._foo,
340 "view_child2")
341 self.failUnlessRaises(AttributeError, getattr, self._foo,
342 "view_child3")
343
345 cfg = config.Config('no_file', MAPPINGS)
346 frontend = Frontend(cfg)
347 self._foo.frontend = frontend
348
349
350
351 controller = FooController()
352 controller.initialize()
353 model = FooModel()
354 controller.model = model
355
356
357
358 child_controller = BarController()
359 child_controller.initialize()
360 child_controller.model = BarModel()
361
362 controller.controller_child1 = child_controller
363 self.failUnlessRaises(AttributeError, getattr, self._foo,
364 "view_child1")
365
366 self._foo.controller = controller
367 self.failUnless(isinstance(self._foo.view_child1,
368 BarView))
369
370
371
372 self._foo.controller = None
373 self.failUnlessRaises(AttributeError, getattr, self._foo,
374 "view_child1")
375
376
377
378 controller.controller_child1 = "test"
379 self.failUnlessRaises(AttributeError, getattr, self._foo,
380 "view_child1")
381
382
383 self._foo.controller = controller
384 self.failUnlessEqual(self._foo.view_child1, "test")
385
386
387
412
413
442