1 # -*- coding: utf-8 -*- |
1 # -*- coding: utf-8 -*- |
2 # copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
2 # copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
4 # |
4 # |
5 # This file is part of CubicWeb. |
5 # This file is part of CubicWeb. |
6 # |
6 # |
7 # CubicWeb is free software: you can redistribute it and/or modify it under the |
7 # CubicWeb is free software: you can redistribute it and/or modify it under the |
130 self.assertEqual(list(email._cw_related_cache), ['primary_email_object']) |
130 self.assertEqual(list(email._cw_related_cache), ['primary_email_object']) |
131 groups = user.in_group |
131 groups = user.in_group |
132 self.assertEqual(sorted(user._cw_related_cache), ['in_group_subject', 'primary_email_subject']) |
132 self.assertEqual(sorted(user._cw_related_cache), ['in_group_subject', 'primary_email_subject']) |
133 for group in groups: |
133 for group in groups: |
134 self.assertFalse('in_group_subject' in group._cw_related_cache, list(group._cw_related_cache)) |
134 self.assertFalse('in_group_subject' in group._cw_related_cache, list(group._cw_related_cache)) |
|
135 user.cw_clear_all_caches() |
|
136 user.related('in_group', entities=True) |
|
137 self.assertIn('in_group_subject', user._cw_related_cache) |
|
138 user.cw_clear_all_caches() |
|
139 user.related('in_group', targettypes=('CWGroup',), entities=True) |
|
140 self.assertNotIn('in_group_subject', user._cw_related_cache) |
135 |
141 |
136 def test_related_limit(self): |
142 def test_related_limit(self): |
137 req = self.request() |
143 req = self.request() |
138 p = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
144 p = req.create_entity('Personne', nom=u'di mascio', prenom=u'adrien') |
139 for tag in u'abcd': |
145 for tag in u'abcd': |
142 self.assertEqual(len(p.related('tags', 'object', limit=2)), 2) |
148 self.assertEqual(len(p.related('tags', 'object', limit=2)), 2) |
143 self.assertEqual(len(p.related('tags', 'object')), 4) |
149 self.assertEqual(len(p.related('tags', 'object')), 4) |
144 p.cw_clear_all_caches() |
150 p.cw_clear_all_caches() |
145 self.assertEqual(len(p.related('tags', 'object', entities=True, limit=2)), 2) |
151 self.assertEqual(len(p.related('tags', 'object', entities=True, limit=2)), 2) |
146 self.assertEqual(len(p.related('tags', 'object', entities=True)), 4) |
152 self.assertEqual(len(p.related('tags', 'object', entities=True)), 4) |
|
153 |
|
154 def test_related_targettypes(self): |
|
155 req = self.request() |
|
156 p = req.create_entity('Personne', nom=u'Loxodonta', prenom=u'Babar') |
|
157 n = req.create_entity('Note', type=u'scratch', ecrit_par=p) |
|
158 t = req.create_entity('Tag', name=u'a tag', tags=(p, n)) |
|
159 self.commit() |
|
160 req = self.request() |
|
161 t = req.entity_from_eid(t.eid) |
|
162 self.assertEqual(2, t.related('tags').rowcount) |
|
163 self.assertEqual(1, t.related('tags', targettypes=('Personne',)).rowcount) |
|
164 self.assertEqual(1, t.related('tags', targettypes=('Note',)).rowcount) |
147 |
165 |
148 def test_cw_instantiate_relation(self): |
166 def test_cw_instantiate_relation(self): |
149 req = self.request() |
167 req = self.request() |
150 p1 = req.create_entity('Personne', nom=u'di') |
168 p1 = req.create_entity('Personne', nom=u'di') |
151 p2 = req.create_entity('Personne', nom=u'mascio') |
169 p2 = req.create_entity('Personne', nom=u'mascio') |