|  | @@ -1,4 +1,12 @@
 | 
	
		
			
			| 1 | 1 |  # -*- coding: utf-8 -*-
 | 
	
		
			
			|  | 2 | +import transaction
 | 
	
		
			
			|  | 3 | +
 | 
	
		
			
			|  | 4 | +from tracim import models
 | 
	
		
			
			|  | 5 | +from tracim.lib.core.content import ContentApi
 | 
	
		
			
			|  | 6 | +from tracim.lib.core.workspace import WorkspaceApi
 | 
	
		
			
			|  | 7 | +from tracim.models import get_tm_session
 | 
	
		
			
			|  | 8 | +from tracim.models.contents import ContentTypeLegacy as ContentType
 | 
	
		
			
			|  | 9 | +from tracim.models.revision_protection import new_revision
 | 
	
		
			
			| 2 | 10 |  import io
 | 
	
		
			
			| 3 | 11 |  
 | 
	
		
			
			| 4 | 12 |  import transaction
 | 
	
	
		
			
			|  | @@ -327,6 +335,7 @@ class TestHtmlDocuments(FunctionalTest):
 | 
	
		
			
			| 327 | 335 |          assert revision['status'] == 'open'
 | 
	
		
			
			| 328 | 336 |          assert revision['workspace_id'] == 2
 | 
	
		
			
			| 329 | 337 |          assert revision['revision_id'] == 6
 | 
	
		
			
			|  | 338 | +        assert revision['revision_type'] == 'creation'
 | 
	
		
			
			| 330 | 339 |          assert revision['sub_content_types']
 | 
	
		
			
			| 331 | 340 |          # TODO - G.M - 2018-06-173 - Test with real comments
 | 
	
		
			
			| 332 | 341 |          assert revision['comment_ids'] == []
 | 
	
	
		
			
			|  | @@ -348,6 +357,7 @@ class TestHtmlDocuments(FunctionalTest):
 | 
	
		
			
			| 348 | 357 |          assert revision['status'] == 'open'
 | 
	
		
			
			| 349 | 358 |          assert revision['workspace_id'] == 2
 | 
	
		
			
			| 350 | 359 |          assert revision['revision_id'] == 7
 | 
	
		
			
			|  | 360 | +        assert revision['revision_type'] == 'edition'
 | 
	
		
			
			| 351 | 361 |          assert revision['sub_content_types']
 | 
	
		
			
			| 352 | 362 |          # TODO - G.M - 2018-06-173 - Test with real comments
 | 
	
		
			
			| 353 | 363 |          assert revision['comment_ids'] == []
 | 
	
	
		
			
			|  | @@ -369,6 +379,7 @@ class TestHtmlDocuments(FunctionalTest):
 | 
	
		
			
			| 369 | 379 |          assert revision['status'] == 'open'
 | 
	
		
			
			| 370 | 380 |          assert revision['workspace_id'] == 2
 | 
	
		
			
			| 371 | 381 |          assert revision['revision_id'] == 27
 | 
	
		
			
			|  | 382 | +        assert revision['revision_type'] == 'edition'
 | 
	
		
			
			| 372 | 383 |          assert revision['sub_content_types']
 | 
	
		
			
			| 373 | 384 |          # TODO - G.M - 2018-06-173 - Test with real comments
 | 
	
		
			
			| 374 | 385 |          assert revision['comment_ids'] == []
 | 
	
	
		
			
			|  | @@ -1929,6 +1940,7 @@ class TestThreads(FunctionalTest):
 | 
	
		
			
			| 1929 | 1940 |          assert revision['workspace_id'] == 2
 | 
	
		
			
			| 1930 | 1941 |          assert revision['revision_id'] == 8
 | 
	
		
			
			| 1931 | 1942 |          assert revision['sub_content_types']
 | 
	
		
			
			|  | 1943 | +        assert revision['revision_type'] == 'creation'
 | 
	
		
			
			| 1932 | 1944 |          assert revision['comment_ids'] == [18, 19, 20]
 | 
	
		
			
			| 1933 | 1945 |          # TODO - G.M - 2018-06-173 - check date format
 | 
	
		
			
			| 1934 | 1946 |          assert revision['created']
 | 
	
	
		
			
			|  | @@ -1948,6 +1960,7 @@ class TestThreads(FunctionalTest):
 | 
	
		
			
			| 1948 | 1960 |          assert revision['status'] == 'open'
 | 
	
		
			
			| 1949 | 1961 |          assert revision['workspace_id'] == 2
 | 
	
		
			
			| 1950 | 1962 |          assert revision['revision_id'] == 26
 | 
	
		
			
			|  | 1963 | +        assert revision['revision_type'] == 'edition'
 | 
	
		
			
			| 1951 | 1964 |          assert revision['sub_content_types']
 | 
	
		
			
			| 1952 | 1965 |          assert revision['comment_ids'] == []
 | 
	
		
			
			| 1953 | 1966 |          # TODO - G.M - 2018-06-173 - check date format
 | 
	
	
		
			
			|  | @@ -1957,6 +1970,106 @@ class TestThreads(FunctionalTest):
 | 
	
		
			
			| 1957 | 1970 |          assert revision['author']['avatar_url'] is None
 | 
	
		
			
			| 1958 | 1971 |          assert revision['author']['public_name'] == 'Bob i.'
 | 
	
		
			
			| 1959 | 1972 |  
 | 
	
		
			
			|  | 1973 | +    def test_api__get_thread_revisions__ok_200__most_revision_type(self) -> None:
 | 
	
		
			
			|  | 1974 | +        """
 | 
	
		
			
			|  | 1975 | +        get threads revisions
 | 
	
		
			
			|  | 1976 | +        """
 | 
	
		
			
			|  | 1977 | +        dbsession = get_tm_session(self.session_factory, transaction.manager)
 | 
	
		
			
			|  | 1978 | +        admin = dbsession.query(models.User) \
 | 
	
		
			
			|  | 1979 | +            .filter(models.User.email == 'admin@admin.admin') \
 | 
	
		
			
			|  | 1980 | +            .one()
 | 
	
		
			
			|  | 1981 | +        workspace_api = WorkspaceApi(
 | 
	
		
			
			|  | 1982 | +            current_user=admin,
 | 
	
		
			
			|  | 1983 | +            session=dbsession,
 | 
	
		
			
			|  | 1984 | +            config=self.app_config
 | 
	
		
			
			|  | 1985 | +        )
 | 
	
		
			
			|  | 1986 | +        business_workspace = workspace_api.get_one(1)
 | 
	
		
			
			|  | 1987 | +        content_api = ContentApi(
 | 
	
		
			
			|  | 1988 | +            current_user=admin,
 | 
	
		
			
			|  | 1989 | +            session=dbsession,
 | 
	
		
			
			|  | 1990 | +            config=self.app_config
 | 
	
		
			
			|  | 1991 | +        )
 | 
	
		
			
			|  | 1992 | +        tool_folder = content_api.get_one(1, content_type=ContentType.Any)
 | 
	
		
			
			|  | 1993 | +        test_thread = content_api.create(
 | 
	
		
			
			|  | 1994 | +            content_type=ContentType.Thread,
 | 
	
		
			
			|  | 1995 | +            workspace=business_workspace,
 | 
	
		
			
			|  | 1996 | +            parent=tool_folder,
 | 
	
		
			
			|  | 1997 | +            label='Test Thread',
 | 
	
		
			
			|  | 1998 | +            do_save=True,
 | 
	
		
			
			|  | 1999 | +            do_notify=False,
 | 
	
		
			
			|  | 2000 | +        )
 | 
	
		
			
			|  | 2001 | +        with new_revision(
 | 
	
		
			
			|  | 2002 | +           session=dbsession,
 | 
	
		
			
			|  | 2003 | +           tm=transaction.manager,
 | 
	
		
			
			|  | 2004 | +           content=test_thread,
 | 
	
		
			
			|  | 2005 | +        ):
 | 
	
		
			
			|  | 2006 | +            content_api.update_content(
 | 
	
		
			
			|  | 2007 | +                test_thread,
 | 
	
		
			
			|  | 2008 | +                new_label='test_thread_updated',
 | 
	
		
			
			|  | 2009 | +                new_content='Just a test'
 | 
	
		
			
			|  | 2010 | +            )
 | 
	
		
			
			|  | 2011 | +        content_api.save(test_thread)
 | 
	
		
			
			|  | 2012 | +        with new_revision(
 | 
	
		
			
			|  | 2013 | +           session=dbsession,
 | 
	
		
			
			|  | 2014 | +           tm=transaction.manager,
 | 
	
		
			
			|  | 2015 | +           content=test_thread,
 | 
	
		
			
			|  | 2016 | +        ):
 | 
	
		
			
			|  | 2017 | +            content_api.archive(test_thread)
 | 
	
		
			
			|  | 2018 | +        content_api.save(test_thread)
 | 
	
		
			
			|  | 2019 | +
 | 
	
		
			
			|  | 2020 | +        with new_revision(
 | 
	
		
			
			|  | 2021 | +           session=dbsession,
 | 
	
		
			
			|  | 2022 | +           tm=transaction.manager,
 | 
	
		
			
			|  | 2023 | +           content=test_thread,
 | 
	
		
			
			|  | 2024 | +        ):
 | 
	
		
			
			|  | 2025 | +            content_api.unarchive(test_thread)
 | 
	
		
			
			|  | 2026 | +        content_api.save(test_thread)
 | 
	
		
			
			|  | 2027 | +
 | 
	
		
			
			|  | 2028 | +        with new_revision(
 | 
	
		
			
			|  | 2029 | +           session=dbsession,
 | 
	
		
			
			|  | 2030 | +           tm=transaction.manager,
 | 
	
		
			
			|  | 2031 | +           content=test_thread,
 | 
	
		
			
			|  | 2032 | +        ):
 | 
	
		
			
			|  | 2033 | +            content_api.delete(test_thread)
 | 
	
		
			
			|  | 2034 | +        content_api.save(test_thread)
 | 
	
		
			
			|  | 2035 | +
 | 
	
		
			
			|  | 2036 | +        with new_revision(
 | 
	
		
			
			|  | 2037 | +           session=dbsession,
 | 
	
		
			
			|  | 2038 | +           tm=transaction.manager,
 | 
	
		
			
			|  | 2039 | +           content=test_thread,
 | 
	
		
			
			|  | 2040 | +        ):
 | 
	
		
			
			|  | 2041 | +            content_api.undelete(test_thread)
 | 
	
		
			
			|  | 2042 | +        content_api.save(test_thread)
 | 
	
		
			
			|  | 2043 | +        dbsession.flush()
 | 
	
		
			
			|  | 2044 | +        transaction.commit()
 | 
	
		
			
			|  | 2045 | +        self.testapp.authorization = (
 | 
	
		
			
			|  | 2046 | +            'Basic',
 | 
	
		
			
			|  | 2047 | +            (
 | 
	
		
			
			|  | 2048 | +                'admin@admin.admin',
 | 
	
		
			
			|  | 2049 | +                'admin@admin.admin'
 | 
	
		
			
			|  | 2050 | +            )
 | 
	
		
			
			|  | 2051 | +        )
 | 
	
		
			
			|  | 2052 | +        res = self.testapp.get(
 | 
	
		
			
			|  | 2053 | +            '/api/v2/workspaces/1/threads/{}/revisions'.format(test_thread.content_id),  # nopep8
 | 
	
		
			
			|  | 2054 | +            status=200
 | 
	
		
			
			|  | 2055 | +        )
 | 
	
		
			
			|  | 2056 | +        revisions = res.json_body
 | 
	
		
			
			|  | 2057 | +        assert len(revisions) == 6
 | 
	
		
			
			|  | 2058 | +        for revision in revisions:
 | 
	
		
			
			|  | 2059 | +            revision['content_type'] == 'thread'
 | 
	
		
			
			|  | 2060 | +            revision['workspace_id'] == 1
 | 
	
		
			
			|  | 2061 | +            revision['content_id'] == test_thread.content_id
 | 
	
		
			
			|  | 2062 | +        revision = revisions[0]
 | 
	
		
			
			|  | 2063 | +        revision['revision_type'] == 'creation'
 | 
	
		
			
			|  | 2064 | +        revision = revisions[1]
 | 
	
		
			
			|  | 2065 | +        revision['revision_type'] == 'archiving'
 | 
	
		
			
			|  | 2066 | +        revision = revisions[2]
 | 
	
		
			
			|  | 2067 | +        revision['revision_type'] == 'unarchiving'
 | 
	
		
			
			|  | 2068 | +        revision = revisions[3]
 | 
	
		
			
			|  | 2069 | +        revision['revision_type'] == 'deletion'
 | 
	
		
			
			|  | 2070 | +        revision = revisions[4]
 | 
	
		
			
			|  | 2071 | +        revision['revision_type'] == 'undeletion'
 | 
	
		
			
			|  | 2072 | +
 | 
	
		
			
			| 1960 | 2073 |      def test_api__set_thread_status__ok_200__nominal_case(self) -> None:
 | 
	
		
			
			| 1961 | 2074 |          """
 | 
	
		
			
			| 1962 | 2075 |          Set thread status
 |