예제 #1
0
    def test_deptree_filters_blocked(self):
        # dep tree's blocked_specs and dependencies attributes filter
        # blueprints the user can't see.
        sharing_policy = SpecificationSharingPolicy.PUBLIC_OR_PROPRIETARY
        owner = self.factory.makePerson()
        product = self.factory.makeProduct(
            owner=owner, specification_sharing_policy=sharing_policy)
        root = self.factory.makeBlueprint(product=product)
        proprietary_blocked = self.factory.makeBlueprint(
            product=product, information_type=InformationType.PROPRIETARY)
        public_blocked = self.factory.makeBlueprint(product=product)
        proprietary_blocked.createDependency(root)
        public_blocked.createDependency(root)

        # Anonymous can see only the public
        with anonymous_logged_in():
            view = create_view(root, name="+deptree")
            self.assertEqual([public_blocked], view.all_blocked)
            self.assertEqual([public_blocked], view.blocked_specs)

        # The owner can see everything.
        with person_logged_in(owner):
            view = create_view(root, name="+deptree")
            self.assertEqual([proprietary_blocked, public_blocked],
                             view.all_blocked)
            self.assertEqual([proprietary_blocked, public_blocked],
                             view.blocked_specs)

        # A random person cannot see the propriety dep.
        with person_logged_in(self.factory.makePerson()):
            view = create_view(root, name="+deptree")
            self.assertEqual([public_blocked], view.all_blocked)
            self.assertEqual([public_blocked], view.blocked_specs)
    def test_deptree_filters_blocked(self):
        # dep tree's blocked_specs and dependencies attributes filter
        # blueprints the user can't see.
        sharing_policy = SpecificationSharingPolicy.PUBLIC_OR_PROPRIETARY
        owner = self.factory.makePerson()
        product = self.factory.makeProduct(
            owner=owner, specification_sharing_policy=sharing_policy)
        root = self.factory.makeBlueprint(product=product)
        proprietary_blocked = self.factory.makeBlueprint(
            product=product, information_type=InformationType.PROPRIETARY)
        public_blocked = self.factory.makeBlueprint(product=product)
        proprietary_blocked.createDependency(root)
        public_blocked.createDependency(root)

        # Anonymous can see only the public
        with anonymous_logged_in():
            view = create_view(root, name="+deptree")
            self.assertEqual([public_blocked], view.all_blocked)
            self.assertEqual([public_blocked], view.blocked_specs)

        # The owner can see everything.
        with person_logged_in(owner):
            view = create_view(root, name="+deptree")
            self.assertEqual(
                [proprietary_blocked, public_blocked], view.all_blocked)
            self.assertEqual(
                [proprietary_blocked, public_blocked], view.blocked_specs)

        # A random person cannot see the propriety dep.
        with person_logged_in(self.factory.makePerson()):
            view = create_view(root, name="+deptree")
            self.assertEqual([public_blocked], view.all_blocked)
            self.assertEqual([public_blocked], view.blocked_specs)
예제 #3
0
    def test_global_css(self):
        person = self.factory.makePerson()
        view = create_view(person, name="+index")
        formatter = ObjectFormatterAPI(view)
        self.assertEqual('public', formatter.global_css())

        view = create_view(person, name="+archivesubscriptions")
        formatter = ObjectFormatterAPI(view)
        self.assertEqual('private', formatter.global_css())
    def test_global_css(self):
        person = self.factory.makePerson()
        view = create_view(person, name="+index")
        formatter = ObjectFormatterAPI(view)
        self.assertEqual('public', formatter.global_css())

        view = create_view(person, name="+archivesubscriptions")
        formatter = ObjectFormatterAPI(view)
        self.assertEqual(
            'private',
            formatter.global_css())
 def _test_templates_for_configuration(self, target, context=None):
     if context is None:
         context = target
     naked_target = removeSecurityProxy(target)
     test_configurations = [
         ServiceUsage.UNKNOWN,
         ServiceUsage.EXTERNAL,
         ServiceUsage.NOT_APPLICABLE,
         ServiceUsage.LAUNCHPAD,
     ]
     correct_templates = [
         HasSpecificationsView.not_launchpad_template.filename,
         HasSpecificationsView.not_launchpad_template.filename,
         HasSpecificationsView.not_launchpad_template.filename,
         HasSpecificationsView.default_template.filename,
     ]
     used_templates = list()
     for config in test_configurations:
         naked_target.blueprints_usage = config
         view = create_view(context,
                            '+specs',
                            layer=BlueprintsLayer,
                            principal=self.user)
         used_templates.append(view.template.filename)
     self.assertEqual(correct_templates, used_templates)
예제 #6
0
 def test_non_batch_template(self):
     # The correct template is used for non batch requests.
     product = self.factory.makeProduct()
     form = {'search': 'Search'}
     view = create_view(product, '+bugs', form=form)
     self.assertEqual(
         'buglisting-default.pt', os.path.basename(view.template.filename))
예제 #7
0
 def test_TeamIndexMenu_owner(self):
     login_person(self.team.teamowner)
     view = create_view(self.team, '+index')
     menu = TeamIndexMenu(view)
     self.assertEqual(
         ['edit', 'delete', 'add_my_teams'],
         [link.name for link in menu.iterlinks() if link.enabled])
예제 #8
0
 def test_TeamIndexMenu_registry_experts(self):
     login_celebrity('registry_experts')
     view = create_view(self.team, '+index')
     menu = TeamIndexMenu(view)
     self.assertEqual(
         ['administer', 'delete', 'join', 'add_my_teams'],
         [link.name for link in menu.iterlinks() if link.enabled])
    def test_data_subscription_lp_admin(self):
        # For a subscription, answercontact_data_js has can_edit
        # set to true for a Launchpad admin.
        question = self.factory.makeQuestion()
        member = self.factory.makePerson()
        contact = self.factory.makePerson(
            name='user', displayname='Contact Name')
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(member):
            question.target.addAnswerContact(contact, contact)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Contact Name',
                'is_team': False,
                'can_edit': True,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }

        # Login as admin
        admin = getUtility(IPersonSet).find(ADMIN_EMAIL).any()
        with person_logged_in(admin):
            self.assertEqual(
                dumps([expected_result]), view.answercontact_data_js)
    def test_data_target_owner_answercontact_looks(self):
        # Answercontact_data_js has can_edit set to true for target owner.
        distro = self.factory.makeDistribution()
        question = self.factory.makeQuestion(target=distro)
        contact = self.factory.makePerson(
            name='user', displayname='Contact Name')
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(contact):
            question.target.addAnswerContact(contact, contact)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Contact Name',
                'is_team': False,
                'can_edit': True,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }
        with person_logged_in(distro.owner):
            self.assertEqual(
                dumps([expected_result]), view.answercontact_data_js)
    def test_data_team_subscription_member_looks(self):
        # For a team subscription, answercontact_data_js has can_edit
        # set to true for team member.
        question = self.factory.makeQuestion()
        member = self.factory.makePerson()
        teamowner = self.factory.makePerson(
            name="team-owner", displayname="Team Owner")
        contact = self.factory.makeTeam(
            name='team', displayname='Team Name', owner=teamowner,
            members=[member])
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(contact.teamowner):
            question.target.addAnswerContact(contact, contact.teamowner)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'team',
                'display_name': 'Team Name',
                'is_team': True,
                'can_edit': True,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }
        with person_logged_in(contact.teamowner):
            self.assertEqual(
                dumps([expected_result]), view.answercontact_data_js)
예제 #12
0
 def test_rosetta_expert_can_configure_translations(self):
     product = self.factory.makeProduct()
     with celebrity_logged_in('rosetta_experts'):
         view = create_view(product,
                            '+translations',
                            layer=TranslationsLayer)
         self.assertEqual(True, view.can_configure_translations())
예제 #13
0
    def submitForcedEmptySuggestion(self):
        """Submit an empty suggestion for `self.current_translation`."""
        empty_translation = u''

        msgset_id = 'msgset_' + str(self.current_translation.potmsgset.id)
        msgset_id_lang = msgset_id + '_' + self.pofile.language.code
        widget_id_base = msgset_id_lang + '_translation_0_'

        form = {
            'lock_timestamp': datetime.now(pytz.utc).isoformat(),
            'alt': None,
            msgset_id: None,
            widget_id_base + 'radiobutton': widget_id_base + 'new',
            widget_id_base + 'new': empty_translation,
            'submit_translations': 'Save & Continue',
            msgset_id_lang + '_needsreview': 'force_suggestion',
        }

        url = canonical_url(self.current_translation) + '/+translate'
        view = create_view(self.current_translation,
                           '+translate',
                           form=form,
                           server_url=url)
        view.request.method = 'POST'
        view.initialize()
 def test_no_tags(self):
     self.factory.makeBug(target=self.target_product)
     view = create_view(
         self.project,
         name="+bugtarget-portlet-tags-content",
         layer=BugsLayer)
     self.assertEqual([], [tag['tag'] for tag in view.tags_cloud_data])
예제 #15
0
 def test_batched_page_title(self):
     # The view provides a page_title and label.
     view = create_view(self.root, name='+feature-changelog')
     self.assertEqual(
         view.label, view.page_title)
     self.assertEqual(
         'Feature flag changelog', view.page_title)
예제 #16
0
    def test_data_target_owner_answercontact_looks(self):
        # Answercontact_data_js has can_edit set to true for target owner.
        distro = self.factory.makeDistribution()
        question = self.factory.makeQuestion(target=distro)
        contact = self.factory.makePerson(
            name='user', displayname='Contact Name')
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(contact):
            question.target.addAnswerContact(contact, contact)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Contact Name',
                'is_team': False,
                'can_edit': True,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }
        with person_logged_in(distro.owner):
            self.assertEqual(
                dumps([expected_result]), view.answercontact_data_js)
 def test_pagetitle_vhost(self):
     project = self.factory.makeProduct(name='fnord')
     view = create_view(project, name='+bugs', rootsite='bugs',
         current_request=True, server_url='https://bugs.launchpad.dev/')
     view.request.traversed_objects = [project, view]
     formatter = ObjectFormatterAPI(view)
     self.assertEqual('Bugs : Fnord', formatter.pagetitle())
예제 #18
0
 def test_non_batch_template(self):
     # The correct template is used for non batch requests.
     product = self.factory.makeProduct()
     form = {'search': 'Search'}
     view = create_view(product, '+bugs', form=form)
     self.assertEqual('buglisting-default.pt',
                      os.path.basename(view.template.filename))
예제 #19
0
    def test_data_subscription_lp_admin(self):
        # For a subscription, subscriber_data_js has can_edit
        # set to true for a Launchpad admin.
        question = self._makeQuestionWithNoSubscribers()
        member = self.factory.makePerson()
        subscriber = self.factory.makePerson(name='user',
                                             displayname='Subscriber Name')
        with person_logged_in(member):
            question.subscribe(subscriber, subscriber)
        view = create_view(question, '+portlet-subscribers-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Subscriber Name',
                'is_team': False,
                'can_edit': True,
                'web_link': canonical_url(subscriber),
                'self_link': absoluteURL(subscriber, api_request)
            },
            'subscription_level': "Direct",
        }

        # Login as admin
        admin = getUtility(IPersonSet).find(ADMIN_EMAIL).any()
        with person_logged_in(admin):
            self.assertEqual(dumps([expected_result]), view.subscriber_data_js)
예제 #20
0
 def test_does_not_redirect(self):
     # +subscriptions on the bugs facet does not redirect.
     with person_logged_in(self.subscriber):
         view = create_view(
             self.product, name='+subscriptions', rootsite='bugs')
         view.initialize()
         self.assertFalse(view._isRedirected())
예제 #21
0
 def test_bugs_answers_usage_none(self):
     # The dict values are all False.
     view = create_view(self.dsp, '+index')
     self.assertFalse(view.bugs_answers_usage['uses_bugs'])
     self.assertFalse(view.bugs_answers_usage['uses_answers'])
     self.assertFalse(view.bugs_answers_usage['uses_both'])
     self.assertFalse(view.bugs_answers_usage['uses_either'])
예제 #22
0
 def test_TeamIndexMenu_owner(self):
     login_person(self.team.teamowner)
     view = create_view(self.team, '+index')
     menu = TeamIndexMenu(view)
     self.assertEqual(
         ['edit', 'delete', 'add_my_teams'],
         [link.name for link in menu.iterlinks() if link.enabled])
예제 #23
0
 def test_TeamIndexMenu_registry_experts(self):
     login_celebrity('registry_experts')
     view = create_view(self.team, '+index')
     menu = TeamIndexMenu(view)
     self.assertEqual(
         ['administer', 'delete', 'join', 'add_my_teams'],
         [link.name for link in menu.iterlinks() if link.enabled])
예제 #24
0
 def makeView(self, name, **kwargs):
     view = create_view(self.webhook, name, principal=self.owner, **kwargs)
     # To test the breadcrumbs we need a correct traversal stack.
     view.request.traversed_objects = (self.getTraversalStack(self.target) +
                                       [self.webhook, view])
     view.initialize()
     return view
예제 #25
0
    def test_data_team_subscription_member_looks(self):
        # For a team subscription, answercontact_data_js has can_edit
        # set to true for team member.
        question = self.factory.makeQuestion()
        member = self.factory.makePerson()
        teamowner = self.factory.makePerson(
            name="team-owner", displayname="Team Owner")
        contact = self.factory.makeTeam(
            name='team', displayname='Team Name', owner=teamowner,
            members=[member])
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(contact.teamowner):
            question.target.addAnswerContact(contact, contact.teamowner)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'team',
                'display_name': 'Team Name',
                'is_team': True,
                'can_edit': True,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }
        with person_logged_in(contact.teamowner):
            self.assertEqual(
                dumps([expected_result]), view.answercontact_data_js)
 def test_bugs_answers_usage_none(self):
     # The dict values are all False.
     view = create_view(self.dsp, '+index')
     self.assertFalse(view.bugs_answers_usage['uses_bugs'])
     self.assertFalse(view.bugs_answers_usage['uses_answers'])
     self.assertFalse(view.bugs_answers_usage['uses_both'])
     self.assertFalse(view.bugs_answers_usage['uses_either'])
    def test_data_person_answercontact(self):
        # answercontact_data_js returns JSON string of a list
        # containing all contact information needed for
        # subscribers_list.js loading.
        question = self.factory.makeQuestion()
        contact = self.factory.makePerson(
            name='user', displayname='Contact Name')
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(contact):
            question.target.addAnswerContact(contact, contact)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Contact Name',
                'is_team': False,
                'can_edit': False,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }
        self.assertEqual(
            dumps([expected_result]), view.answercontact_data_js)
예제 #28
0
 def test_page_batched_changes(self):
     self.makeFeatureFlagChanges()
     member = login_celebrity('admin')
     view = create_view(
         self.root, name='+feature-changelog', principal=member)
     tag = find_tag_by_id(view.render(), 'changes')
     self.assertTrue('table', tag.name)
예제 #29
0
    def test_data_person_answercontact(self):
        # answercontact_data_js returns JSON string of a list
        # containing all contact information needed for
        # subscribers_list.js loading.
        question = self.factory.makeQuestion()
        contact = self.factory.makePerson(
            name='user', displayname='Contact Name')
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(contact):
            question.target.addAnswerContact(contact, contact)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Contact Name',
                'is_team': False,
                'can_edit': False,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }
        self.assertEqual(
            dumps([expected_result]), view.answercontact_data_js)
 def _test_templates_for_configuration(self, target, context=None):
     if context is None:
         context = target
     naked_target = removeSecurityProxy(target)
     test_configurations = [
         ServiceUsage.UNKNOWN,
         ServiceUsage.EXTERNAL,
         ServiceUsage.NOT_APPLICABLE,
         ServiceUsage.LAUNCHPAD,
         ]
     correct_templates = [
         HasSpecificationsView.not_launchpad_template.filename,
         HasSpecificationsView.not_launchpad_template.filename,
         HasSpecificationsView.not_launchpad_template.filename,
         HasSpecificationsView.default_template.filename,
         ]
     used_templates = list()
     for config in test_configurations:
         naked_target.blueprints_usage = config
         view = create_view(
             context,
             '+specs',
             layer=BlueprintsLayer,
             principal=self.user)
         used_templates.append(view.template.filename)
     self.assertEqual(correct_templates, used_templates)
    def test_data_team_subscription(self):
        # For a team subscription, subscriber_data_js has is_team set
        # to true.
        question = self._makeQuestionWithNoSubscribers()
        teamowner = self.factory.makePerson(
            name="team-owner", displayname="Team Owner")
        subscriber = self.factory.makeTeam(
            name='team', displayname='Team Name', owner=teamowner)
        with person_logged_in(subscriber.teamowner):
            question.subscribe(subscriber, subscriber.teamowner)
        view = create_view(question, '+portlet-subscribers-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'team',
                'display_name': 'Team Name',
                'is_team': True,
                'can_edit': False,
                'web_link': canonical_url(subscriber),
                'self_link': absoluteURL(subscriber, api_request)
                },
            'subscription_level': "Direct",
            }
        self.assertEqual(
            dumps([expected_result]), view.subscriber_data_js)
 def test_person(self):
     context = self.factory.makePerson(name='pistachio')
     self.assertTrue(IHasSpecifications.providedBy(context))
     view = create_view(
         context, '+specs', layer=BlueprintsLayer, principal=self.user)
     self.assertFalse(
         '<div id="involvement" class="portlet involvement">' in view())
    def test_data_subscription_lp_admin(self):
        # For a subscription, subscriber_data_js has can_edit
        # set to true for a Launchpad admin.
        question = self._makeQuestionWithNoSubscribers()
        member = self.factory.makePerson()
        subscriber = self.factory.makePerson(
            name='user', displayname='Subscriber Name')
        with person_logged_in(member):
            question.subscribe(subscriber, subscriber)
        view = create_view(question, '+portlet-subscribers-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Subscriber Name',
                'is_team': False,
                'can_edit': True,
                'web_link': canonical_url(subscriber),
                'self_link': absoluteURL(subscriber, api_request)
                },
            'subscription_level': "Direct",
            }

        # Login as admin
        admin = getUtility(IPersonSet).find(ADMIN_EMAIL).any()
        with person_logged_in(admin):
            self.assertEqual(
                dumps([expected_result]), view.subscriber_data_js)
    def test_data_person_subscription(self):
        # subscriber_data_js returns JSON string of a list
        # containing all subscriber information needed for
        # subscribers_list.js subscribers loading.
        question = self._makeQuestionWithNoSubscribers()
        subscriber = self.factory.makePerson(
            name='user', displayname='Subscriber Name')
        with person_logged_in(subscriber):
            question.subscribe(subscriber, subscriber)
        view = create_view(question, '+portlet-subscribers-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Subscriber Name',
                'is_team': False,
                'can_edit': False,
                'web_link': canonical_url(subscriber),
                'self_link': absoluteURL(subscriber, api_request)
                },
            'subscription_level': "Direct",
            }
        self.assertEqual(
            dumps([expected_result]), view.subscriber_data_js)
예제 #35
0
    def test_data_team_subscription(self):
        # For a team subscription, subscriber_data_js has is_team set
        # to true.
        question = self._makeQuestionWithNoSubscribers()
        teamowner = self.factory.makePerson(name="team-owner",
                                            displayname="Team Owner")
        subscriber = self.factory.makeTeam(name='team',
                                           displayname='Team Name',
                                           owner=teamowner)
        with person_logged_in(subscriber.teamowner):
            question.subscribe(subscriber, subscriber.teamowner)
        view = create_view(question, '+portlet-subscribers-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'team',
                'display_name': 'Team Name',
                'is_team': True,
                'can_edit': False,
                'web_link': canonical_url(subscriber),
                'self_link': absoluteURL(subscriber, api_request)
            },
            'subscription_level': "Direct",
        }
        self.assertEqual(dumps([expected_result]), view.subscriber_data_js)
예제 #36
0
    def test_data_subscription_lp_admin(self):
        # For a subscription, answercontact_data_js has can_edit
        # set to true for a Launchpad admin.
        question = self.factory.makeQuestion()
        member = self.factory.makePerson()
        contact = self.factory.makePerson(
            name='user', displayname='Contact Name')
        contact.addLanguage(getUtility(ILanguageSet)['en'])
        with person_logged_in(member):
            question.target.addAnswerContact(contact, contact)
        view = create_view(question.target, '+portlet-answercontacts-details')
        api_request = IWebServiceClientRequest(view.request)

        expected_result = {
            'subscriber': {
                'name': 'user',
                'display_name': 'Contact Name',
                'is_team': False,
                'can_edit': True,
                'web_link': canonical_url(contact),
                'self_link': absoluteURL(contact, api_request)
                }
            }

        # Login as admin
        admin = getUtility(IPersonSet).find(ADMIN_EMAIL).any()
        with person_logged_in(admin):
            self.assertEqual(
                dumps([expected_result]), view.answercontact_data_js)
예제 #37
0
 def test_tags(self):
     self.factory.makeBug(target=self.target_product, tags=['foo'])
     view = create_view(self.project,
                        name="+bugtarget-portlet-tags-content",
                        layer=BugsLayer)
     self.assertEqual([u'foo'],
                      [tag['tag'] for tag in view.tags_cloud_data])
예제 #38
0
 def test_redirects(self):
     # +subscriptions on anything but the bugs facet redirects.
     with person_logged_in(self.subscriber):
         view = create_view(
             self.product, name='+subscriptions', rootsite='code')
         view.initialize()
         self.assertTrue(view._isRedirected())
 def test_pagetitle_lower_level_default_view(self):
     project = self.factory.makeProduct(name='fnord')
     view = create_view(
         project.development_focus, name='+index', current_request=True)
     view.request.traversed_objects = [
         project, project.development_focus, view]
     formatter = ObjectFormatterAPI(view)
     self.assertEqual('Series trunk : Fnord', formatter.pagetitle())
예제 #40
0
 def test_launchpad_owl(self):
     app = getUtility(ILaunchpadApplication)
     view = create_view(app, name='rdf-spec')
     owl = view.publishTraverse(view.request, 'launchpad.owl')
     entity = 'ENTITY launchpad "https://launchpad.net/rdf-spec/launchpad#'
     self.assertTrue(entity in owl())
     self.assertEqual('application/rdf+xml',
                      owl.request.response.getHeader('content-type'))
 def verify_view(self, context, name):
     view = create_view(
         context, '+register-a-blueprint-button')
     self.assertEqual(
         'http://blueprints.launchpad.dev/%s/+addspec' % name,
         view.target_url)
     self.assertTrue(
         '<div id="involvement" class="portlet involvement">' in view())
 def test_public_archive(self):
     # Public teams have public archives.
     team = self.makeTeamWithMailingList()
     view = create_view(
         team, name='+portlet-mailinglist',
         server_url='http://launchpad.dev', path_info='/~%s' % team.name)
     link = find_tag_by_id(view(), 'mailing-list-archive')
     self.assertEqual('View public archive', extract_text(link))
 def verify_involvment(self, context):
     self.assertTrue(IHasSpecifications.providedBy(context))
     view = create_view(context,
                        '+specs',
                        layer=BlueprintsLayer,
                        principal=self.user)
     self.assertTrue(
         '<div id="involvement" class="portlet involvement">' in view())
예제 #44
0
    def test_registration_not_done(self):
        # The registration done property on the product index view
        # tells you if all the configuration work is done, based on
        # usage enums.

        # At least one usage enum is unknown, so registration done is false.
        self.assertEqual(self.product.codehosting_usage, ServiceUsage.UNKNOWN)
        view = create_view(self.product, '+get-involved')
        self.assertFalse(view.registration_done)

        set_service_usage(self.product.name,
                          codehosting_usage="EXTERNAL",
                          bug_tracking_usage="LAUNCHPAD",
                          answers_usage="EXTERNAL",
                          translations_usage="NOT_APPLICABLE")
        view = create_view(self.product, '+get-involved')
        self.assertTrue(view.registration_done)
예제 #45
0
 def test_batch_template(self):
     # The correct template is used for batch requests.
     product = self.factory.makeProduct()
     form = {'search': 'Search'}
     view = create_view(
         product, '+bugs', form=form, query_string='batch_request=True')
     self.assertEqual(
         view.bugtask_table_template.filename, view.template.filename)
 def test_subscribe_control_renders(self):
     login_person(self.user)
     view = create_view(self.b_team, name='+index',
         principal=self.user, server_url='http://launchpad.dev',
         path_info='/~%s' % self.b_team.name)
     content = view.render()
     link_tag = find_tag_by_id(content, "link-list-subscribe")
     self.assertNotEqual(None, link_tag)
예제 #47
0
 def test_page_batched_changes(self):
     self.makeFeatureFlagChanges()
     member = login_celebrity('admin')
     view = create_view(self.root,
                        name='+feature-changelog',
                        principal=member)
     tag = find_tag_by_id(view.render(), 'changes')
     self.assertTrue('table', tag.name)
예제 #48
0
    def test_has_watermark_true(self):
        # A view cand define has_watermark as True.
        class NoWatermarkView(TestView):
            has_watermark = True

        self.registerBrowserViewAdapter(NoWatermarkView, ITest, '+test')
        view = create_view(TestObject(), name='+test')
        has_watermark = test_tales('view/macro:has-watermark', view=view)
        self.assertIs(True, has_watermark)
 def test_bugs_answers_usage_answers(self):
     # The dict values are True for answers and either.
     with celebrity_logged_in('admin'):
         self.dsp.distribution.answers_usage = ServiceUsage.LAUNCHPAD
     view = create_view(self.dsp, '+index')
     self.assertFalse(view.bugs_answers_usage['uses_bugs'])
     self.assertTrue(view.bugs_answers_usage['uses_answers'])
     self.assertFalse(view.bugs_answers_usage['uses_both'])
     self.assertIs(True, view.bugs_answers_usage['uses_either'])
예제 #50
0
 def test_launchpad_owl(self):
     app = getUtility(ILaunchpadApplication)
     view = create_view(app, name='rdf-spec')
     owl = view.publishTraverse(view.request, 'launchpad.owl')
     entity = 'ENTITY launchpad "https://launchpad.net/rdf-spec/launchpad#'
     self.assertTrue(entity in owl())
     self.assertEqual(
         'application/rdf+xml',
         owl.request.response.getHeader('content-type'))
예제 #51
0
 def test_batched_changes(self):
     # The view provides a batched iterator of changes.
     self.makeFeatureFlagChanges()
     view = create_view(self.root, name='+feature-changelog')
     batch = view.changes
     self.assertEqual('change', batch._singular_heading)
     self.assertEqual('changes', batch._plural_heading)
     self.assertEqual(10, batch.default_size)
     self.assertEqual(None, batch.currentBatch().nextBatch().nextBatch())
예제 #52
0
    def test_content_type(self):
        question = self.factory.makeQuestion()

        # It works even for anonymous users, so no log-in is needed.
        view = create_view(question, '+portlet-subscribers-details')
        view.render()

        self.assertEqual(view.request.response.getHeader('content-type'),
                         'application/json')
    def test_has_watermark_true(self):
        # A view cand define has_watermark as True.
        class NoWatermarkView(TestView):
            has_watermark = True

        self.registerBrowserViewAdapter(NoWatermarkView, ITest, '+test')
        view = create_view(TestObject(), name='+test')
        has_watermark = test_tales('view/macro:has-watermark', view=view)
        self.assertIs(True, has_watermark)
예제 #54
0
 def test_simple_poll_template(self):
     poll = self.factory.makePoll(self.team,
                                  'name',
                                  'title',
                                  'proposition',
                                  poll_type=PollAlgorithm.SIMPLE)
     view = create_view(poll, name='+vote')
     self.assertEqual('poll-vote-simple.pt',
                      os.path.basename(view.template.filename))
예제 #55
0
 def test_bugs_answers_usage_answers(self):
     # The dict values are True for answers and either.
     with celebrity_logged_in('admin'):
         self.dsp.distribution.answers_usage = ServiceUsage.LAUNCHPAD
     view = create_view(self.dsp, '+index')
     self.assertFalse(view.bugs_answers_usage['uses_bugs'])
     self.assertTrue(view.bugs_answers_usage['uses_answers'])
     self.assertFalse(view.bugs_answers_usage['uses_both'])
     self.assertIs(True, view.bugs_answers_usage['uses_either'])
예제 #56
0
 def test_condorcet_poll_template(self):
     poll = self.factory.makePoll(self.team,
                                  'name',
                                  'title',
                                  'proposition',
                                  poll_type=PollAlgorithm.CONDORCET)
     view = create_view(poll, name='+vote')
     self.assertEqual('poll-vote-condorcet.pt',
                      os.path.basename(view.template.filename))