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
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
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
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
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
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
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
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
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
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
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
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
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
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