353 class WorkflowShemaTC(CubicWebTC): |
353 class WorkflowShemaTC(CubicWebTC): |
354 def test_trinfo_default_format(self): |
354 def test_trinfo_default_format(self): |
355 tr = self.request().user.cw_adapt_to('IWorkflowable').fire_transition('deactivate') |
355 tr = self.request().user.cw_adapt_to('IWorkflowable').fire_transition('deactivate') |
356 self.assertEqual(tr.comment_format, 'text/plain') |
356 self.assertEqual(tr.comment_format, 'text/plain') |
357 |
357 |
|
358 |
|
359 class CompositeSchemaTC(CubicWebTC): |
|
360 composites = { |
|
361 'BaseTransition': [('condition', 'BaseTransition', 'RQLExpression', 'subject'), |
|
362 ('condition', 'Transition', 'RQLExpression', 'subject'), |
|
363 ('condition', 'WorkflowTransition', 'RQLExpression', 'subject')], |
|
364 'CWAttribute': [('add_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
365 ('add_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
366 ('add_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
367 ('constrained_by', 'CWAttribute', 'CWConstraint', 'subject'), |
|
368 ('constrained_by', 'CWRelation', 'CWConstraint', 'subject'), |
|
369 ('read_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
370 ('read_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
371 ('read_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
372 ('update_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
373 ('update_permission', 'CWEType', 'RQLExpression', 'subject')], |
|
374 'CWEType': [('add_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
375 ('add_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
376 ('add_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
377 ('constraint_of', 'CWUniqueTogetherConstraint', 'CWEType', 'object'), |
|
378 ('cw_schema', 'CWSourceSchemaConfig', 'CWEType', 'object'), |
|
379 ('cw_schema', 'CWSourceSchemaConfig', 'CWRType', 'object'), |
|
380 ('cw_schema', 'CWSourceSchemaConfig', 'CWRelation', 'object'), |
|
381 ('delete_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
382 ('delete_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
383 ('from_entity', 'CWAttribute', 'CWEType', 'object'), |
|
384 ('from_entity', 'CWRelation', 'CWEType', 'object'), |
|
385 ('read_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
386 ('read_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
387 ('read_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
388 ('to_entity', 'CWAttribute', 'CWEType', 'object'), |
|
389 ('to_entity', 'CWRelation', 'CWEType', 'object'), |
|
390 ('update_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
391 ('update_permission', 'CWEType', 'RQLExpression', 'subject')], |
|
392 'CWRType': [('cw_schema', 'CWSourceSchemaConfig', 'CWEType', 'object'), |
|
393 ('cw_schema', 'CWSourceSchemaConfig', 'CWRType', 'object'), |
|
394 ('cw_schema', 'CWSourceSchemaConfig', 'CWRelation', 'object'), |
|
395 ('relation_type', 'CWAttribute', 'CWRType', 'object'), |
|
396 ('relation_type', 'CWRelation', 'CWRType', 'object')], |
|
397 'CWRelation': [('add_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
398 ('add_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
399 ('add_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
400 ('constrained_by', 'CWAttribute', 'CWConstraint', 'subject'), |
|
401 ('constrained_by', 'CWRelation', 'CWConstraint', 'subject'), |
|
402 ('cw_schema', 'CWSourceSchemaConfig', 'CWEType', 'object'), |
|
403 ('cw_schema', 'CWSourceSchemaConfig', 'CWRType', 'object'), |
|
404 ('cw_schema', 'CWSourceSchemaConfig', 'CWRelation', 'object'), |
|
405 ('delete_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
406 ('delete_permission', 'CWRelation', 'RQLExpression', 'subject'), |
|
407 ('read_permission', 'CWAttribute', 'RQLExpression', 'subject'), |
|
408 ('read_permission', 'CWEType', 'RQLExpression', 'subject'), |
|
409 ('read_permission', 'CWRelation', 'RQLExpression', 'subject')], |
|
410 'CWSource': [('cw_for_source', 'CWSourceSchemaConfig', 'CWSource', 'object'), |
|
411 ('cw_host_config_of', 'CWSourceHostConfig', 'CWSource', 'object'), |
|
412 ('cw_import_of', 'CWDataImport', 'CWSource', 'object'), |
|
413 ('cw_source', 'Ami', 'CWSource', 'object'), |
|
414 ('cw_source', 'BaseTransition', 'CWSource', 'object'), |
|
415 ('cw_source', 'Bookmark', 'CWSource', 'object'), |
|
416 ('cw_source', 'CWAttribute', 'CWSource', 'object'), |
|
417 ('cw_source', 'CWCache', 'CWSource', 'object'), |
|
418 ('cw_source', 'CWConstraint', 'CWSource', 'object'), |
|
419 ('cw_source', 'CWConstraintType', 'CWSource', 'object'), |
|
420 ('cw_source', 'CWDataImport', 'CWSource', 'object'), |
|
421 ('cw_source', 'CWEType', 'CWSource', 'object'), |
|
422 ('cw_source', 'CWGroup', 'CWSource', 'object'), |
|
423 ('cw_source', 'CWPermission', 'CWSource', 'object'), |
|
424 ('cw_source', 'CWProperty', 'CWSource', 'object'), |
|
425 ('cw_source', 'CWRType', 'CWSource', 'object'), |
|
426 ('cw_source', 'CWRelation', 'CWSource', 'object'), |
|
427 ('cw_source', 'CWSource', 'CWSource', 'object'), |
|
428 ('cw_source', 'CWSourceHostConfig', 'CWSource', 'object'), |
|
429 ('cw_source', 'CWSourceSchemaConfig', 'CWSource', 'object'), |
|
430 ('cw_source', 'CWUniqueTogetherConstraint', 'CWSource', 'object'), |
|
431 ('cw_source', 'CWUser', 'CWSource', 'object'), |
|
432 ('cw_source', 'Card', 'CWSource', 'object'), |
|
433 ('cw_source', 'EmailAddress', 'CWSource', 'object'), |
|
434 ('cw_source', 'ExternalUri', 'CWSource', 'object'), |
|
435 ('cw_source', 'File', 'CWSource', 'object'), |
|
436 ('cw_source', 'Note', 'CWSource', 'object'), |
|
437 ('cw_source', 'Personne', 'CWSource', 'object'), |
|
438 ('cw_source', 'Produit', 'CWSource', 'object'), |
|
439 ('cw_source', 'RQLExpression', 'CWSource', 'object'), |
|
440 ('cw_source', 'Service', 'CWSource', 'object'), |
|
441 ('cw_source', 'Societe', 'CWSource', 'object'), |
|
442 ('cw_source', 'State', 'CWSource', 'object'), |
|
443 ('cw_source', 'StateFull', 'CWSource', 'object'), |
|
444 ('cw_source', 'SubNote', 'CWSource', 'object'), |
|
445 ('cw_source', 'SubWorkflowExitPoint', 'CWSource', 'object'), |
|
446 ('cw_source', 'Tag', 'CWSource', 'object'), |
|
447 ('cw_source', 'TrInfo', 'CWSource', 'object'), |
|
448 ('cw_source', 'Transition', 'CWSource', 'object'), |
|
449 ('cw_source', 'Usine', 'CWSource', 'object'), |
|
450 ('cw_source', 'Workflow', 'CWSource', 'object'), |
|
451 ('cw_source', 'WorkflowTransition', 'CWSource', 'object')], |
|
452 'CWUser': [('for_user', 'CWProperty', 'CWUser', 'object'), |
|
453 ('use_email', 'CWUser', 'EmailAddress', 'subject'), |
|
454 ('wf_info_for', 'TrInfo', 'CWUser', 'object'), |
|
455 ('wf_info_for', 'TrInfo', 'StateFull', 'object')], |
|
456 'StateFull': [('wf_info_for', 'TrInfo', 'CWUser', 'object'), |
|
457 ('wf_info_for', 'TrInfo', 'StateFull', 'object')], |
|
458 'Transition': [('condition', 'BaseTransition', 'RQLExpression', 'subject'), |
|
459 ('condition', 'Transition', 'RQLExpression', 'subject'), |
|
460 ('condition', 'WorkflowTransition', 'RQLExpression', 'subject')], |
|
461 'Workflow': [('state_of', 'State', 'Workflow', 'object'), |
|
462 ('transition_of', 'BaseTransition', 'Workflow', 'object'), |
|
463 ('transition_of', 'Transition', 'Workflow', 'object'), |
|
464 ('transition_of', 'WorkflowTransition', 'Workflow', 'object')], |
|
465 'WorkflowTransition': [('condition', 'BaseTransition', 'RQLExpression', 'subject'), |
|
466 ('condition', 'Transition', 'RQLExpression', 'subject'), |
|
467 ('condition', 'WorkflowTransition', 'RQLExpression', 'subject'), |
|
468 ('subworkflow_exit', 'WorkflowTransition', 'SubWorkflowExitPoint', 'subject')] |
|
469 } |
|
470 |
|
471 def test_composite_entities(self): |
|
472 schema = self.vreg.schema |
|
473 self.assertEqual(sorted(self.composites.keys()), |
|
474 [eschema.type |
|
475 for eschema in sorted(schema.entities()) |
|
476 if eschema.is_composite]) |
|
477 for etype in self.composites: |
|
478 self.assertEqual(self.composites[etype], |
|
479 sorted([(r.rtype.type, r.subject.type, r.object.type, role) |
|
480 for r, role in sorted(schema[etype].composite_rdef_roles)])) |
|
481 |
358 if __name__ == '__main__': |
482 if __name__ == '__main__': |
359 unittest_main() |
483 unittest_main() |