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.backend import Backend
19 from elisa.base_components.model import Model
20 from elisa.base_components.controller import Controller
21 from elisa.base_components.controller import ModelNotSupported
22
23
28
33
35
36 supported_models = ("base_test:foo_model",)
37 bindings = {"model_child1": "controller_child1",
38 "model_child2": ["controller_child2", "controller_child3"]}
39
43
45 self.old_model = False
46 self.new_model = False
47 self.old_backend = False
48 self.new_backend = False
49
51 self.old_model = old_model
52 self.new_model = new_model
53
55 self.old_backend = old_backend
56 self.new_backend = new_backend
57
61
67
68 MAPPINGS="""\
69 [base_test:bar_model]
70 supported_controllers = ['base_test:bar_controller',]
71 controller = 'base_test:bar_controller'
72 supported_views = ['base_test:bar_view']
73 view = 'base_test:bar_view'
74 """
75
76
78
90
92
93 self.failUnlessEqual(self._foo.backend, None)
94
95 backend = Backend()
96
97
98 self._foo.backend = backend
99 self.failUnlessEqual(self._foo.backend, backend)
100 self.failUnlessEqual(self._foo.old_backend, None)
101 self.failUnlessEqual(self._foo.new_backend, backend)
102
103
104 self._foo.reset()
105 self._foo.backend = None
106 self.failUnlessEqual(self._foo.backend, None)
107 self.failUnlessEqual(self._foo.old_backend, backend)
108 self.failUnlessEqual(self._foo.new_backend, None)
109
110
111 self._foo.reset()
112 self._foo.backend = backend
113 self.failUnlessEqual(self._foo.backend, backend)
114 self.failUnlessEqual(self._foo.old_backend, None)
115 self.failUnlessEqual(self._foo.new_backend, backend)
116
117
118 self._foo.reset()
119 self._foo.backend = backend
120 self.failUnlessEqual(self._foo.backend, backend)
121 self.failUnlessEqual(self._foo.old_backend, False)
122 self.failUnlessEqual(self._foo.new_backend, False)
123
125
126 self.failUnlessEqual(self._foo.backend, None)
127 self.failUnlessEqual(self._bar.backend, None)
128
129 backend = Backend()
130
131
132 self._foo.backend = backend
133 self.failUnlessEqual(self._foo.backend, backend)
134 self.failUnlessEqual(self._foo.old_backend, None)
135 self.failUnlessEqual(self._foo.new_backend, backend)
136
137
138
139 self._bar.parent = self._foo
140 self.failUnlessEqual(self._bar.backend, backend)
141 self.failUnlessEqual(self._bar.old_backend, None)
142 self.failUnlessEqual(self._bar.new_backend, backend)
143
144
145 self._foo.reset()
146 self._bar.reset()
147 self._foo.backend = None
148 self.failUnlessEqual(self._foo.backend, None)
149 self.failUnlessEqual(self._foo.old_backend, backend)
150 self.failUnlessEqual(self._foo.new_backend, None)
151 self.failUnlessEqual(self._bar.backend, None)
152 self.failUnlessEqual(self._bar.old_backend, backend)
153 self.failUnlessEqual(self._bar.new_backend, None)
154
155
156 self._foo.reset()
157 self._bar.reset()
158 self._foo.backend = backend
159 self.failUnlessEqual(self._foo.backend, backend)
160 self.failUnlessEqual(self._foo.old_backend, None)
161 self.failUnlessEqual(self._foo.new_backend, backend)
162 self.failUnlessEqual(self._bar.backend, backend)
163 self.failUnlessEqual(self._bar.old_backend, None)
164 self.failUnlessEqual(self._bar.new_backend, backend)
165
166
167 self._foo.reset()
168 self._bar.reset()
169 self._foo.backend = backend
170 self.failUnlessEqual(self._foo.backend, backend)
171 self.failUnlessEqual(self._foo.old_backend, False)
172 self.failUnlessEqual(self._foo.new_backend, False)
173 self.failUnlessEqual(self._bar.backend, backend)
174 self.failUnlessEqual(self._bar.old_backend, False)
175 self.failUnlessEqual(self._bar.new_backend, False)
176
177
178
179
180 def set_backend(controller, backend):
181 controller.backend = backend
182
183 self._foo.reset()
184 self._bar.reset()
185 self.failUnlessRaises(Exception, reset_backend, self._bar, Backend())
186 self.failUnlessRaises(Exception, reset_backend, self._bar, None)
187
188
189 self.failUnlessEqual(self._foo.backend, backend)
190 self.failUnlessEqual(self._foo.old_backend, False)
191 self.failUnlessEqual(self._foo.new_backend, False)
192 self.failUnlessEqual(self._bar.backend, backend)
193 self.failUnlessEqual(self._bar.old_backend, False)
194 self.failUnlessEqual(self._bar.new_backend, False)
195
196 test_backend_inheritance.skip = "should be implemented for bound controllers"
197
198
200
201 model = FooModel()
202 self._foo.model = model
203 self.failUnlessEqual(self._foo.model, model)
204 self.failUnlessEqual(self._foo.old_model, None)
205 self.failUnlessEqual(self._foo.new_model, model)
206
207
208 self._foo.reset()
209 self._foo.model = model
210 self.failUnlessEqual(self._foo.model, model)
211 self.failUnlessEqual(self._foo.old_model, False)
212 self.failUnlessEqual(self._foo.new_model, False)
213
214
215 self._foo.reset()
216 model2 = FooModel()
217 self._foo.model = model2
218 self.failUnlessEqual(self._foo.model, model2)
219 self.failUnlessEqual(self._foo.old_model, model)
220 self.failUnlessEqual(self._foo.new_model, model2)
221
222
223 self._foo.reset()
224 self._foo.model = None
225 self.failUnlessEqual(self._foo.model, None)
226 self.failUnlessEqual(self._foo.old_model, model2)
227 self.failUnlessEqual(self._foo.new_model, None)
228
229
230
231 self._foo.reset()
232
233 def set_model(controller, model):
234 controller.model = model
235
236 model = BarModel()
237 self.failUnlessRaises(ModelNotSupported, set_model, self._foo, model)
238 self.failUnlessEqual(self._foo.model, None)
239 self.failUnlessEqual(self._foo.old_model, False)
240 self.failUnlessEqual(self._foo.new_model, False)
241
242
250
251
252 model = FooModel()
253 set_model(self._foo, model)
254
255
256 model = BarModel()
257 self.failUnlessRaises(ModelNotSupported, set_model, self._foo, model)
258
259
264 test_handle_input.skip = "not implemented yet"
265
267 cfg = config.Config('no_file', MAPPINGS)
268 backend = Backend(cfg)
269 self._foo.backend = backend
270
271
272 model = FooModel()
273 self._foo.model = model
274
275
276
277 model.model_child1 = BarModel()
278 self.failUnless(isinstance(self._foo.controller_child1,
279 BarController))
280
281
282
283
284 """
285 delattr(model, "model_child1")
286 self.failUnlessRaises(AttributeError, getattr, self._foo,
287 "controller_child1")
288 """
289
290
291 value = 123
292 model.model_child1 = value
293 self.failUnlessEqual(self._foo.controller_child1, value)
294
295 model.model_child1 = "test"
296 self.failUnlessEqual(self._foo.controller_child1, "test")
297
298
299 model.model_child1 = None
300 self.failUnlessEqual(self._foo.controller_child1, None)
301
302
304 cfg = config.Config('no_file', MAPPINGS)
305 backend = Backend(cfg)
306 self._foo.backend = backend
307
308
309 model = FooModel()
310 self._foo.model = model
311
312
313
314 model.not_bound1 = 123
315 model.not_bound2 = BarModel()
316
317 self.failUnlessRaises(AttributeError, getattr, self._foo,
318 "controller_child1")
319 self.failUnlessRaises(AttributeError, getattr, self._foo,
320 "controller_child2")
321 self.failUnlessRaises(AttributeError, getattr, self._foo,
322 "controller_child3")
323
325 cfg = config.Config('no_file', MAPPINGS)
326 backend = Backend(cfg)
327 self._foo.backend = backend
328
329
330 model = FooModel()
331
332
333
334 model.model_child1 = BarModel()
335 self.failUnlessRaises(AttributeError, getattr, self._foo,
336 "controller_child1")
337
338 self._foo.model = model
339 self.failUnless(isinstance(self._foo.controller_child1,
340 BarController))
341
342
343
344 self._foo.model = None
345 self.failUnlessRaises(AttributeError, getattr, self._foo,
346 "controller_child1")
347
348
349
350 model.model_child1 = "test"
351 self.failUnlessRaises(AttributeError, getattr, self._foo,
352 "controller_child1")
353
354
355 self._foo.model = model
356 self.failUnlessEqual(self._foo.controller_child1, "test")
357
358
359
361
362 model = FooModel()
363 self._foo.model = model
364
365
366 self.failUnlessRaises(Exception, setattr, model, "model_child1",
367 BarModel())
368
369
370
371 value = 123
372 model.model_child1 = value
373 self.failUnlessEqual(self._foo.controller_child1, value)
374
375 model.model_child1 = "test"
376 self.failUnlessEqual(self._foo.controller_child1, "test")
377
378
379 model.model_child1 = None
380 self.failUnlessEqual(self._foo.controller_child1, None)
381
382
384 cfg = config.Config('no_file', MAPPINGS)
385 backend = Backend(cfg)
386 self._foo.backend = backend
387
388
389 model = FooModel()
390 self._foo.model = model
391
392
393
394 model.model_child2 = BarModel()
395 self.failUnless(isinstance(self._foo.controller_child2,
396 BarController))
397 self.failUnless(isinstance(self._foo.controller_child3,
398 BarController))
399
400
401
402 self._foo.model = None
403 self.failUnlessRaises(AttributeError, getattr, self._foo,
404 "controller_child2")
405 self.failUnlessRaises(AttributeError, getattr, self._foo,
406 "controller_child3")
407