Esempio n. 1
0
    def test_registration_clones_project_wiki_pages(self, mock_signal, project, user):
        project = factories.ProjectFactory(creator=user, is_public=True)
        wiki_page = WikiFactory(
            user=user,
            node=project,
        )
        wiki = WikiVersionFactory(
            wiki_page=wiki_page,
        )
        current_wiki = WikiVersionFactory(
            wiki_page=wiki_page,
            identifier=2
        )
        draft_reg = factories.DraftRegistrationFactory(branched_from=project)
        registration = project.register_node(get_default_metaschema(), Auth(user), draft_reg, None)
        assert registration.wiki_private_uuids == {}

        registration_wiki_current = WikiVersion.objects.get_for_node(registration, current_wiki.wiki_page.page_name)
        assert registration_wiki_current.wiki_page.node == registration
        assert registration_wiki_current._id != current_wiki._id
        assert registration_wiki_current.identifier == 2

        registration_wiki_version = WikiVersion.objects.get_for_node(registration, wiki.wiki_page.page_name, version=1)
        assert registration_wiki_version.wiki_page.node == registration
        assert registration_wiki_version._id != wiki._id
        assert registration_wiki_version.identifier == 1
Esempio n. 2
0
    def test_update_wiki_updates_contributor_comments_viewed_timestamp(self):
        contributor = AuthUserFactory()
        project = ProjectFactory(creator=self.user, is_public=True)
        project.add_contributor(contributor)
        project.save()
        wiki_page = WikiFactory(node=project, page_name='test')
        wiki = WikiVersionFactory(wiki_page=wiki_page)
        comment = CommentFactory(node=project, target=Guid.load(wiki_page._id), user=self.user)

        # user views comments -- sets user.comments_viewed_timestamp
        url = project.api_url_for('update_comments_timestamp')
        res = self.app.put_json(url, {
            'page': 'wiki',
            'rootId': wiki_page._id
        }, auth=self.user.auth)
        assert res.status_code == 200
        self.user.reload()
        assert wiki_page._id in self.user.comments_viewed_timestamp

        # contributor views comments -- sets contributor.comments_viewed_timestamp
        res = self.app.put_json(url, {
            'page': 'wiki',
            'rootId': wiki_page._id
        }, auth=contributor.auth)
        contributor.reload()
        assert wiki_page._id in contributor.comments_viewed_timestamp

        # user updates the wiki
        project.update_node_wiki('test', 'Updating wiki', self.auth)
        comment.reload()
        contributor.reload()

        new_version_id = project.get_wiki_version('test')._id
        assert wiki_page._id in contributor.comments_viewed_timestamp
        assert comment.target.referent._id == wiki_page._id
Esempio n. 3
0
 def _add_project_wiki_version(self, node, user):
     from addons.wiki.tests.factories import WikiFactory, WikiVersionFactory
     # Mock out update_search. TODO: Remove when StoredFileNode is implemented
     with mock.patch('osf.models.AbstractNode.update_search'):
         wiki_page = WikiFactory(node=node, user=user)
         wiki_version = WikiVersionFactory(wiki_page=wiki_page, user=user)
         return wiki_version
Esempio n. 4
0
    def test_update_wiki_updates_comments_and_user_comments_viewed_timestamp(
            self):
        project = ProjectFactory(creator=self.user, is_public=True)
        wiki_page = WikiFactory(node=project, page_name='test')
        wiki = WikiVersionFactory(wiki_page=wiki_page)
        comment = CommentFactory(node=project,
                                 target=Guid.load(wiki_page._id),
                                 user=UserFactory())

        # user views comments -- sets user.comments_viewed_timestamp
        url = project.api_url_for('update_comments_timestamp')
        res = self.app.put_json(url, {
            'page': 'wiki',
            'rootId': wiki_page._id
        },
                                auth=self.user.auth)
        assert res.status_code == 200
        self.user.reload()
        assert wiki_page._id in self.user.comments_viewed_timestamp

        # user updates the wiki
        wiki_page.update(self.user, 'Updating wiki')
        comment.reload()
        self.user.reload()
        assert wiki_page._id in self.user.comments_viewed_timestamp
        assert comment.target.referent._id == wiki_page._id
Esempio n. 5
0
 def project_private(self, user_creator):
     project_private = ProjectFactory(
         is_public=False,
         creator=user_creator
     )
     wiki_page = WikiFactory(node=project_private, user=user_creator)
     wiki_version = WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return project_private
Esempio n. 6
0
 def project_public(self, user_creator):
     project_public = ProjectFactory(
         is_public=True,
         creator=user_creator
     )
     wiki_page = WikiFactory(node=project_public, user=user_creator)
     wiki_version = WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return project_public
Esempio n. 7
0
 def wiki_registration_private(self, project_public, user_creator):
     registration = RegistrationFactory(project=project_public,
                                        is_public=False)
     wiki_page = WikiFactory(node=registration,
                             user=user_creator,
                             page_name='foo')
     WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return wiki_page
Esempio n. 8
0
 def wiki_registration_public(self, project_public, user_creator):
     registration = RegistrationFactory(project=project_public,
                                        is_public=True)
     wiki_page = WikiFactory(node=registration,
                             user=user_creator,
                             page_name=fake.word())
     WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return wiki_page
Esempio n. 9
0
 def _set_up_public_project_with_wiki_page(self, project_options=None):
     project_options = project_options or {}
     self.public_project = ProjectFactory(is_public=True, creator=self.user, **project_options)
     from addons.wiki.tests.factories import WikiFactory, WikiVersionFactory
     with mock.patch('osf.models.AbstractNode.update_search'):
         self.public_wiki_page = WikiFactory(node=self.public_project, user=self.user)
         self.public_wiki = WikiVersionFactory(wiki_page=self.public_wiki_page, user=self.user)
     self.public_url = '/{}wikis/{}/'.format(API_BASE, self.public_wiki_page._id)
     return self.public_wiki_page
Esempio n. 10
0
 def test_wiki_content(self):
     project = ProjectFactory(creator=self.user)
     wiki_page_name = 'home'
     wiki_content = 'Kittens'
     wiki_page = WikiFactory(
         user=self.user,
         node=project,
     )
     wiki = WikiVersionFactory(wiki_page=wiki_page, content=wiki_content)
     res = self.app.get('/{0}/wiki/{1}/'.format(
         project._primary_key,
         wiki_page_name,
     ),
                        auth=self.auth)
     assert_not_in(
         'Add important information, links, or images here to describe your project.',
         res)
     assert_in(wiki_content, res)
     assert_in('panelsUsed: ["view", "menu"]', res)
 def private_wiki(self, user, private_project):
     with mock.patch('osf.models.AbstractNode.update_search'):
         wiki_page = WikiFactory(node=private_project, user=user)
         WikiVersionFactory(wiki_page=wiki_page)
     return wiki_page
Esempio n. 12
0
 def wiki_private(self, project_private, user_creator):
     wiki_page = WikiFactory(node=project_private, user=user_creator, page_name=fake.word())
     wiki_version = WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return wiki_page
Esempio n. 13
0
 def wiki_private(self, project_private, user_creator):
     wiki_page = WikiFactory(node=project_private,
                             user=user_creator,
                             page_name='foo')
     WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return wiki_page
Esempio n. 14
0
 def test_wiki_version_factory(self):
     version = WikiVersionFactory()
     assert version.identifier == 1
     assert version.content == 'First draft of wiki'
     assert bool(version.user)
     assert bool(version.wiki_page)
 def add_page(node, user):
     with mock.patch('osf.models.AbstractNode.update_search'):
         wiki_page = WikiFactory(node=node, user=user)
         WikiVersionFactory(wiki_page=wiki_page)
         return wiki_page
Esempio n. 16
0
 def wiki_public(self, project_public, user_creator):
     wiki_page = WikiFactory(node=project_public,
                             user=user_creator,
                             page_name=fake.word())
     WikiVersionFactory(wiki_page=wiki_page, user=user_creator)
     return wiki_page