예제 #1
0
    def test_pagination(self):
        """Testing SearchView pagination"""
        user = self.create_user()
        diffset_history = DiffSetHistory.objects.create()

        ReviewRequest.objects.bulk_create(
            ReviewRequest(diffset_history=diffset_history,
                          summary='Test %s' % i,
                          submitter=user,
                          public=True) for i in range(20))

        siteconfig_settings = {
            'search_results_per_page': 1,
        }

        with search_enabled(backend_id='whoosh'):
            with self.siteconfig_settings(siteconfig_settings,
                                          reload_settings=False):
                reindex_search()
                rsp = self.client.get('%s?q=Test&page=10' % reverse('search'))

        self.assertEqual(rsp.status_code, 200)

        self.assertIn(
            b'<a href="?q=Test&amp;page=1" rel="nofollow">'
            b'&laquo; First Page</a>', rsp.content)
        self.assertIn(
            b'<a href="?q=Test&amp;page=9" rel="nofollow">'
            b'&lt; Previous</a>', rsp.content)
        self.assertIn(
            b'<a href="?q=Test&amp;page=11" rel="nofollow">'
            b'Next &gt;</a>', rsp.content)
        self.assertIn(
            b'<a href="?q=Test&amp;page=20" rel="nofollow">'
            b'Last Page &raquo;</a>', rsp.content)
예제 #2
0
    def test_render_change_entry_html(self):
        """Testing BaseTextAreaField.render_change_entry_html"""
        field = BaseTextAreaField(ReviewRequest())
        html = field.render_change_entry_html({
            'old': ['This is a test\n\nWith two lines'],
            'new': ['This is a test with one line'],
        })

        self.assertHTMLEqual(
            html, '<table class="diffed-text-area">'
            ' <tr class="replace-old">'
            '  <td class="marker">~</td>'
            '  <td class="marker">&nbsp;</td>'
            '  <td class="line rich-text"><p>This is a test</p></td>'
            ' </tr>'
            ' <tr class="replace-new">'
            '  <td class="marker">&nbsp;</td>'
            '  <td class="marker">~</td>'
            '  <td class="line rich-text">'
            '   <p>This is a test<span class="hl"> with one line</span></p>'
            '  </td>'
            ' </tr>'
            ' <tr class="delete">'
            '  <td class="marker">-</td>'
            '  <td class="marker">&nbsp;</td>'
            '  <td class="line rich-text">\n</td>'
            ' </tr>'
            ' <tr class="delete">'
            '  <td class="marker">-</td>'
            '  <td class="marker">&nbsp;</td>'
            '  <td class="line rich-text"><p>With two lines</p></td>'
            ' </tr>'
            '</table>')
예제 #3
0
    def test_render_change_entry_html_with_entities(self):
        """Testing BaseTextAreaField.render_change_entry_html with string
        containing entities
        """
        field = BaseTextAreaField(ReviewRequest())
        html = field.render_change_entry_html({
            'old': ['This "is" a <test>'],
            'new': ['This "is" a <test> with more stuff here'],
        })

        self.assertHTMLEqual(
            html, '<table class="diffed-text-area">'
            ' <tr class="replace-old">'
            '  <td class="marker">~</td>'
            '  <td class="marker">&nbsp;</td>'
            '  <td class="line rich-text">'
            '   <p>This &quot;is&quot; a &lt;test&gt;</p>'
            '  </td>'
            ' </tr>'
            ' <tr class="replace-new">'
            '  <td class="marker">&nbsp;</td>'
            '  <td class="marker">~</td>'
            '  <td class="line rich-text">'
            '   <p>This &quot;is&quot; a &lt;test&gt;<span class="hl"> with '
            '      more stuff here</span></p>'
            '  </td>'
            ' </tr>'
            '</table>')
예제 #4
0
    def create_review_request(self,
                              with_local_site=False,
                              with_diffs=False,
                              summary='Test Summary',
                              description='Test Description',
                              testing_done='Testing',
                              submitter='doc',
                              local_id=1001,
                              status='P',
                              public=False,
                              publish=False,
                              repository=None,
                              id=None,
                              create_repository=False):
        """Creates a ReviewRequest for testing.

        The ReviewRequest may optionally be attached to a LocalSite. It's also
        populated with default data that can be overridden by the caller.

        If create_repository is True, a Repository will be created
        automatically. If set, a custom repository cannot be provided.

        The provided submitter may either be a username or a User object.

        If publish is True, ReviewRequest.publish() will be called.
        """
        if with_local_site:
            local_site = LocalSite.objects.get(name=self.local_site_name)
        else:
            local_site = None
            local_id = None

        if create_repository:
            assert not repository

            repository = \
                self.create_repository(with_local_site=with_local_site)

        if not isinstance(submitter, User):
            submitter = User.objects.get(username=submitter)

        review_request = ReviewRequest(
            summary=summary,
            description=description,
            testing_done=testing_done,
            local_site=local_site,
            local_id=local_id,
            submitter=submitter,
            diffset_history=DiffSetHistory.objects.create(),
            repository=repository,
            public=public,
            status=status,
            id=id)
        review_request.save()

        if publish:
            review_request.publish(review_request.submitter)

        return review_request
예제 #5
0
    def test_should_render_review_request_field(self):
        """Testing ReviewRequestFieldSetsHook when
        ReviewRequestFieldset.should_render raises exception
        """
        fieldset = [TestShouldRenderFieldset]
        ReviewRequestFieldSetsHook(extension=self.extension,
                                   fieldsets=fieldset)

        review = ReviewRequest()
        context = Context({
            'review_request_details': review,
            'fieldset': TestShouldRenderFieldset
        })

        t = Template("{% load reviewtags %}"
                     "{% for_review_request_field review_request_details"
                     " 'test_should_render' %}"
                     "{% end_for_review_request_field %}")

        t.render(context).strip()
예제 #6
0
    def test_field_cls_review_request_field(self):
        """Testing ReviewRequestFieldSetsHook when
        BaseReviewRequestField.__init__ raises exception
        """
        fieldset = [TestInitFieldset]
        ReviewRequestFieldSetsHook(extension=self.extension,
                                   fieldsets=fieldset)

        review = ReviewRequest()
        context = Context({
            'review_request_details': review,
            'fieldset': TestInitFieldset
        })

        t = Template(
            "{% load reviewtags %}"
            "{% for_review_request_field review_request_details 'test_init' %}"
            "{% end_for_review_request_field %}")

        t.render(context).strip()
예제 #7
0
    def test_fieldset_cls_review_request_fieldset(self):
        """Testing ReviewRequestFieldSetsHook when
        ReviewRequestFieldset.__init__ raises exception
        """
        fieldset = [BaseReviewRequestTestInitFieldset]
        ReviewRequestFieldSetsHook(extension=self.extension,
                                   fieldsets=fieldset)

        review = ReviewRequest()
        request = self.factory.get('test')
        request.user = self.user
        context = Context({
            'review_request_details': review,
            'request': request
        })

        t = Template("{% load reviewtags %}"
                     "{% for_review_request_fieldset review_request_details %}"
                     "{% end_for_review_request_fieldset %}")

        t.render(context).strip()
예제 #8
0
    def create_review_request(self,
                              with_local_site=False,
                              local_site=None,
                              summary='Test Summary',
                              description='Test Description',
                              testing_done='Testing',
                              submitter='doc',
                              branch='my-branch',
                              local_id=1001,
                              bugs_closed='',
                              status='P',
                              public=False,
                              publish=False,
                              commit_id=None,
                              changenum=None,
                              repository=None,
                              id=None,
                              create_repository=False):
        """Create a ReviewRequest for testing.

        The ReviewRequest may optionally be attached to a LocalSite. It's also
        populated with default data that can be overridden by the caller.

        If create_repository is True, a Repository will be created
        automatically. If set, a custom repository cannot be provided.

        The provided submitter may either be a username or a User object.

        If publish is True, ReviewRequest.publish() will be called.
        """
        if not local_site:
            if with_local_site:
                local_site = self.get_local_site(name=self.local_site_name)
            else:
                local_site = None

        if not local_site:
            local_id = None

        if create_repository:
            assert not repository

            repository = \
                self.create_repository(with_local_site=with_local_site)

        if not isinstance(submitter, User):
            submitter = User.objects.get(username=submitter)

        review_request = ReviewRequest(
            summary=summary,
            description=description,
            branch=branch,
            testing_done=testing_done,
            local_site=local_site,
            local_id=local_id,
            submitter=submitter,
            diffset_history=DiffSetHistory.objects.create(),
            repository=repository,
            public=public,
            commit_id=commit_id,
            changenum=changenum,
            bugs_closed=bugs_closed,
            status=status)

        # Set this separately to avoid issues with CounterField updates.
        review_request.id = id

        review_request.save()

        if publish:
            review_request.publish(review_request.submitter)

        return review_request
예제 #9
0
 def test_no_summary(self):
     """Testing review requests with no summary"""
     from django.template.defaultfilters import lower
     review_request = ReviewRequest()
     lower(review_request)
예제 #10
0
 def test_long_bug_numbers(self):
     """Testing review requests with very long bug numbers"""
     review_request = ReviewRequest()
     review_request.bugs_closed = '12006153200030304432010,4432009'
     self.assertEqual(review_request.get_bug_list(),
                      ['4432009', '12006153200030304432010'])
예제 #11
0
 def test_is_approved_sandbox(self):
     """Testing ReviewRequestApprovalHook.is_approved with raised exception
     """
     SandboxReviewRequestApprovalTestHook(extension=self.extension)
     review = ReviewRequest()
     review._calculate_approval()