Browse Source

#185 Unit test for workspaces ; moved ContentController to content.py ; replaced double quotes with single quotes

Alexis CLEMENT 8 years ago
parent
commit
0077373232

+ 31 - 2
tracim/tracim/controllers/content.py View File

@@ -6,13 +6,13 @@ import traceback
6 6
 
7 7
 from cgi import FieldStorage
8 8
 import tg
9
-from tg import tmpl_context
9
+from tg import tmpl_context, require, predicates
10 10
 from tg.i18n import ugettext as _
11 11
 from tg.predicates import not_anonymous
12 12
 from sqlalchemy.orm.exc import NoResultFound
13 13
 from tg import abort
14 14
 
15
-from tracim.controllers import TIMRestController
15
+from tracim.controllers import TIMRestController, StandardController
16 16
 from tracim.controllers import TIMRestPathContextSetup
17 17
 from tracim.controllers import TIMRestControllerWithBreadcrumb
18 18
 from tracim.controllers import TIMWorkspaceContentRestController
@@ -1074,3 +1074,32 @@ class UserWorkspaceFolderRestController(TIMRestControllerWithBreadcrumb):
1074 1074
             msg = _('{} not un-deleted: {}').format(self._item_type_label, str(e))
1075 1075
             tg.flash(msg, CST.STATUS_ERROR)
1076 1076
             tg.redirect(back_url)
1077
+
1078
+
1079
+class ContentController(StandardController):
1080
+
1081
+    '''
1082
+    Class of controllers used for example in home to mark read the unread 
1083
+    contents via mark_all_read()
1084
+    '''
1085
+
1086
+    @classmethod
1087
+    def current_item_id_key_in_context(cls) -> str:
1088
+        return''
1089
+
1090
+    @tg.expose()
1091
+    def index(self):
1092
+        return dict()
1093
+
1094
+    @require(predicates.not_anonymous())
1095
+    @tg.expose()
1096
+    def mark_all_read(self):
1097
+        '''
1098
+        Mark as read all the content that hasn't been read
1099
+        redirects the user to "/home"
1100
+        '''
1101
+        user = tg.tmpl_context.current_user
1102
+        content_api = ContentApi(user)
1103
+        content_api.mark_read__all()
1104
+
1105
+        tg.redirect("/home")

+ 0 - 28
tracim/tracim/controllers/read.py View File

@@ -1,28 +0,0 @@
1
-# -*- coding: utf-8 -*-
2
-import tg
3
-from tg import require, predicates
4
-from tracim.controllers import StandardController
5
-from tracim.lib.content import ContentApi
6
-from tracim.model.data import ContentType
7
-
8
-
9
-class ContentController(StandardController):
10
-
11
-    @classmethod
12
-    def current_item_id_key_in_context(cls) -> str:
13
-        return''
14
-
15
-    @tg.expose()
16
-    def index(self):
17
-        return dict()
18
-
19
-    @require(predicates.not_anonymous())
20
-    @tg.expose()
21
-    def mark_all_read(self):
22
-        user = tg.tmpl_context.current_user
23
-        content_api = ContentApi(user)
24
-        content_api.mark_read__all()
25
-
26
-        tg.redirect("/home")
27
-
28
-

+ 1 - 1
tracim/tracim/controllers/root.py View File

@@ -12,7 +12,7 @@ from tg import url
12 12
 
13 13
 from tg.i18n import ugettext as _
14 14
 from tracim.controllers.api import APIController
15
-from tracim.controllers.read import ContentController
15
+from tracim.controllers.content import ContentController
16 16
 
17 17
 from tracim.lib import CST
18 18
 from tracim.lib.base import logger

+ 0 - 1
tracim/tracim/controllers/workspace.py View File

@@ -9,7 +9,6 @@ from tracim.config.app_cfg import CFG
9 9
 
10 10
 from tracim.controllers import TIMRestController
11 11
 from tracim.controllers.content import UserWorkspaceFolderRestController
12
-from tracim.controllers.read import ContentController
13 12
 
14 13
 from tracim.lib.helpers import convert_id_into_instances
15 14
 from tracim.lib.content import ContentApi

+ 79 - 4
tracim/tracim/tests/library/test_content_api.py View File

@@ -348,6 +348,80 @@ class TestContentApi(BaseTest, TestStandard):
348 348
         eq_(ActionDescription.COMMENT, c.revision_type)
349 349
 
350 350
 
351
+    def test_mark_read__workspace(self):
352
+        uapi = UserApi(None)
353
+        groups = [GroupApi(None).get_one(Group.TIM_USER),
354
+                  GroupApi(None).get_one(Group.TIM_MANAGER),
355
+                  GroupApi(None).get_one(Group.TIM_ADMIN)]
356
+        user_a = uapi.create_user(email='this.is@user',
357
+                                  groups=groups, save_now=True)
358
+        user_b = uapi.create_user(email='this.is@another.user',
359
+                                  groups=groups, save_now=True)
360
+
361
+        wapi = WorkspaceApi(user_a)
362
+        workspace1 = wapi.create_workspace(
363
+            'test workspace n°1',
364
+            save_now=True)
365
+        workspace2 = wapi.create_workspace(
366
+            'test workspace n°2',
367
+            save_now=True)
368
+
369
+        role_api1 = RoleApi(user_a)
370
+        role_api1.create_one(user_b, workspace1, UserRoleInWorkspace.READER,
371
+                            False)
372
+
373
+        role_api2 = RoleApi(user_a)
374
+        role_api2.create_one(user_b, workspace2, UserRoleInWorkspace.READER,
375
+                             False)
376
+
377
+        cont_api_a = ContentApi(user_a)
378
+        cont_api_b = ContentApi(user_b)
379
+
380
+
381
+        # Creates page_1 & page_2 in workspace 1
382
+        #     and page_3 & page_4 in workspace 2
383
+        page_1 = cont_api_a.create(ContentType.Page, workspace1, None,
384
+                                   'this is a page', do_save=True)
385
+        page_2 = cont_api_a.create(ContentType.Page, workspace1, None,
386
+                                   'this is page1', do_save=True)
387
+        page_3 = cont_api_a.create(ContentType.Thread, workspace2, None,
388
+                                   'this is page2', do_save=True)
389
+        page_4 = cont_api_a.create(ContentType.File, workspace2, None,
390
+                                   'this is page3', do_save=True)
391
+
392
+        for rev in page_1.revisions:
393
+            eq_(user_b not in rev.read_by.keys(), True)
394
+        for rev in page_2.revisions:
395
+            eq_(user_b not in rev.read_by.keys(), True)
396
+        for rev in page_3.revisions:
397
+            eq_(user_b not in rev.read_by.keys(), True)
398
+        for rev in page_4.revisions:
399
+            eq_(user_b not in rev.read_by.keys(), True)
400
+
401
+        # Set as read the workspace n°1
402
+        cont_api_b.mark_read__workspace(workspace=workspace1)
403
+
404
+        for rev in page_1.revisions:
405
+            eq_(user_b in rev.read_by.keys(), True)
406
+        for rev in page_2.revisions:
407
+            eq_(user_b in rev.read_by.keys(), True)
408
+        for rev in page_3.revisions:
409
+            eq_(user_b not in rev.read_by.keys(), True)
410
+        for rev in page_4.revisions:
411
+            eq_(user_b not in rev.read_by.keys(), True)
412
+
413
+        # Set as read the workspace n°2
414
+        cont_api_b.mark_read__workspace(workspace=workspace2)
415
+
416
+        for rev in page_1.revisions:
417
+            eq_(user_b in rev.read_by.keys(), True)
418
+        for rev in page_2.revisions:
419
+            eq_(user_b in rev.read_by.keys(), True)
420
+        for rev in page_3.revisions:
421
+            eq_(user_b in rev.read_by.keys(), True)
422
+        for rev in page_4.revisions:
423
+            eq_(user_b in rev.read_by.keys(), True)
424
+
351 425
     def test_mark_read(self):
352 426
         uapi = UserApi(None)
353 427
         groups = [GroupApi(None).get_one(Group.TIM_USER),
@@ -368,7 +442,8 @@ class TestContentApi(BaseTest, TestStandard):
368 442
         cont_api_a = ContentApi(user_a)
369 443
         cont_api_b = ContentApi(user_b)
370 444
 
371
-        page_1 = cont_api_a.create(ContentType.Page, workspace, None, "this is a page", do_save=True)
445
+        page_1 = cont_api_a.create(ContentType.Page, workspace, None,
446
+                                   'this is a page', do_save=True)
372 447
 
373 448
         for rev in page_1.revisions:
374 449
             eq_(user_b not in rev.read_by.keys(), True)
@@ -399,9 +474,9 @@ class TestContentApi(BaseTest, TestStandard):
399 474
         cont_api_a = ContentApi(user_a)
400 475
         cont_api_b = ContentApi(user_b)
401 476
 
402
-        page_2 = cont_api_a.create(ContentType.Page, workspace, None, "this is page1", do_save=True)
403
-        page_3 = cont_api_a.create(ContentType.Thread, workspace, None, "this is page2", do_save=True)
404
-        page_4 = cont_api_a.create(ContentType.File, workspace, None, "this is page3", do_save=True)
477
+        page_2 = cont_api_a.create(ContentType.Page, workspace, None, 'this is page1', do_save=True)
478
+        page_3 = cont_api_a.create(ContentType.Thread, workspace, None, 'this is page2', do_save=True)
479
+        page_4 = cont_api_a.create(ContentType.File, workspace, None, 'this is page3', do_save=True)
405 480
 
406 481
         for rev in page_2.revisions:
407 482
             eq_(user_b not in rev.read_by.keys(), True)