コード例 #1
0
    def test_render_pagetitle(self):
        class CustomRoleSelectView(RoleSelectView):
            pagetitle = u'Test title'

        role1 = mock.MagicMock()
        role1.id = 1
        role1.title = 'Role One'
        role2 = mock.MagicMock()
        role2.id = 2
        role2.title = 'Role Two'
        cradmin_instance = self.__mock_cradmin_instance(roles=[role1, role2])
        cradmin_instance_registry = mock.MagicMock()
        cradmin_instance_registry.get_current_instance.return_value = cradmin_instance
        with mock.patch(
                'cradmin_legacy.views.roleselect.cradmin_instance_registry',
                cradmin_instance_registry):
            with mock.patch(
                    'cradmin_legacy.templatetags.cradmin_legacy_tags.cradmin_instance_registry',
                    cradmin_instance_registry):
                request = self.factory.get('/roleselecttest')
                response = CustomRoleSelectView.as_view()(request)
                self.assertEqual(response.status_code, 200)
                response.render()
                selector = htmls.S(response.content)
                self.assertEqual(
                    selector.one('h1').alltext_normalized, 'Test title')
コード例 #2
0
    def test_render_no_pagination(self):
        class CustomRoleSelectView(RoleSelectView):
            paginate_by = 3

        roles = []
        for index in range(CustomRoleSelectView.paginate_by):
            role = mock.MagicMock()
            role.id = index
            role.title = 'Role {}'.format(index)
            roles.append(role)
        cradmin_instance = self.__mock_cradmin_instance(roles=roles)

        cradmin_instance_registry = mock.MagicMock()
        cradmin_instance_registry.get_current_instance.return_value = cradmin_instance
        with mock.patch(
                'cradmin_legacy.views.roleselect.cradmin_instance_registry',
                cradmin_instance_registry):
            with mock.patch(
                    'cradmin_legacy.templatetags.cradmin_legacy_tags.cradmin_instance_registry',
                    cradmin_instance_registry):
                request = self.factory.get('/roleselecttest')
                response = CustomRoleSelectView.as_view()(request)
                self.assertEqual(response.status_code, 200)
                response.render()
                selector = htmls.S(response.content)

                # selector.one('#cradmin_legacy_roleselect').prettyprint()
                self.assertEqual(
                    selector.count('.cradmin-legacy-roleselect-list li'), 3)
                self.assertFalse(selector.exists('.pager-container'))
コード例 #3
0
 def test_render(self):
     filterlist = AbstractFilterList(urlbuilder=mock.MagicMock(),
                                     target_dom_id='testdomid')
     filterlist.append(MinimalFilterGroupChild())
     filterlist.append(MinimalFilterGroupChild())
     selector = htmls.S(filterlist.render(request=mock.MagicMock()))
     self.assertEqual(2, selector.count('li'))
コード例 #4
0
    def test_render_list_titles(self):
        role1 = mock.MagicMock()
        role1.id = 1
        role1.title = 'Role One'
        role2 = mock.MagicMock()
        role2.id = 2
        role2.title = 'Role Two'
        cradmin_instance = self.__mock_cradmin_instance(roles=[role1, role2])

        cradmin_instance_registry = mock.MagicMock()
        cradmin_instance_registry.get_current_instance.return_value = cradmin_instance
        with mock.patch(
                'cradmin_legacy.views.roleselect.cradmin_instance_registry',
                cradmin_instance_registry):
            with mock.patch(
                    'cradmin_legacy.templatetags.cradmin_legacy_tags.cradmin_instance_registry',
                    cradmin_instance_registry):
                request = self.factory.get('/roleselecttest')
                response = RoleSelectView.as_view()(request)
                self.assertEqual(response.status_code, 200)
                response.render()
                selector = htmls.S(response.content)

                self.assertEqual(
                    selector.count('.cradmin-legacy-roleselect-role-title'), 2)
                titletextlist = [
                    element.alltext_normalized for element in selector.list(
                        '.cradmin-legacy-roleselect-role-title')
                ]
                self.assertEqual(titletextlist, ['Role One', 'Role Two'])
コード例 #5
0
 def get_object(self, queryset=None):
     obj = mock.MagicMock()
     if six.PY2:
         obj.__unicode__.return_value = 'Simple Test Item'
     else:
         obj.__str__.return_value = 'Simple Test Item'
     obj._meta = mock.MagicMock()
     obj._meta.verbose_name = 'TestModel'
     return obj
コード例 #6
0
 def test_200_on_multiple(self):
     cradmin_instance = mock.MagicMock()
     cradmin_instance.get_rolequeryset.return_value.count = mock.MagicMock(
         return_value=2)
     cradmin_instance_registry = mock.MagicMock()
     cradmin_instance_registry.get_current_instance.return_value = cradmin_instance
     with mock.patch(
             'cradmin_legacy.views.roleselect.cradmin_instance_registry',
             cradmin_instance_registry):
         request = self.factory.get('/roleselecttest')
         response = RoleSelectView.as_view()(request)
         self.assertEqual(response.status_code, 200)
コード例 #7
0
    def test_render_pagination(self):
        class CustomRoleSelectView(RoleSelectView):
            paginate_by = 3

        roles = []
        for index in range(CustomRoleSelectView.paginate_by + 2):
            role = mock.MagicMock()
            role.id = index
            role.title = 'Role {}'.format(index)
            roles.append(role)
        cradmin_instance = self.__mock_cradmin_instance(roles=roles)

        cradmin_instance_registry = mock.MagicMock()
        cradmin_instance_registry.get_current_instance.return_value = cradmin_instance
        with mock.patch(
                'cradmin_legacy.views.roleselect.cradmin_instance_registry',
                cradmin_instance_registry):
            with mock.patch(
                    'cradmin_legacy.templatetags.cradmin_legacy_tags.cradmin_instance_registry',
                    cradmin_instance_registry):
                request_page1 = self.factory.get('/roleselecttest')
                response_page1 = CustomRoleSelectView.as_view()(request_page1)
                self.assertEqual(response_page1.status_code, 200)
                response_page1.render()
                selector_page1 = htmls.S(response_page1.content)

                request_page2 = self.factory.get('/roleselecttest',
                                                 {'page': 2})
                response_page2 = CustomRoleSelectView.as_view()(request_page2)
                self.assertEqual(response_page2.status_code, 200)
                response_page2.render()
                selector_page2 = htmls.S(response_page2.content)

                self.assertEqual(
                    selector_page1.count('.cradmin-legacy-roleselect-list li'),
                    3)
                self.assertEqual(
                    selector_page2.count('.cradmin-legacy-roleselect-list li'),
                    2)

                self.assertTrue(selector_page1.exists('.pager-container'))
                self.assertTrue(
                    selector_page1.exists(
                        '.pager-container li.previous.disabled'))
                self.assertFalse(
                    selector_page1.exists('.pager-container li.next.disabled'))
                self.assertTrue(selector_page2.exists('.pager-container'))
                self.assertFalse(
                    selector_page2.exists(
                        '.pager-container li.previous.disabled'))
                self.assertTrue(
                    selector_page2.exists('.pager-container li.next.disabled'))
コード例 #8
0
    def test_send(self):
        testtoken = mock.MagicMock()
        testtoken.token = 'test-token'
        testrequest = mock.MagicMock()
        testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(path)

        with mock.patch.object(ActivationEmail, 'generate_token', lambda s: testtoken):
            with self.settings(CRADMIN_LEGACY_SITENAME='Testsite'):
                ActivationEmail(user=self.testuser, request=testrequest).send()
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Activate your Testsite account')
        self.assertIn('http://testserver/cradmin_activate_account/activate/test-token',
                      mail.outbox[0].alternatives[0][0])
        self.assertIn('Click the button below to activate your Testsite account, testuser.',
                      mail.outbox[0].alternatives[0][0])
コード例 #9
0
 def __mock_cradmin_instance(self, roles):
     cradmin_instance = mock.MagicMock()
     cradmin_instance.get_rolequeryset.return_value.count = mock.MagicMock(
         return_value=len(roles))
     cradmin_instance.get_rolequeryset.return_value.__len__.return_value = len(
         roles)
     cradmin_instance.get_titletext_for_role = lambda role: role.title
     cradmin_instance.get_descriptionhtml_for_role = lambda role: format_html(
         u'<p>{}<p>', role.description)
     cradmin_instance.get_roleid = lambda role: role.id
     cradmin_instance.rolefrontpage_url = lambda roleid: '/role/{}'.format(
         roleid)
     cradmin_instance.get_rolequeryset.return_value = QuerySetMock(
         None, *roles)
     return cradmin_instance
コード例 #10
0
    def test_uploadform_post_single_image(self):
        testuser = create_user('testuser')
        testimage = create_image(200, 100)
        collection = TemporaryFileCollection.objects.create(user=testuser)
        temporaryfile = TemporaryFile(collection=collection,
                                      filename='testfile.png')
        temporaryfile.file.save('testfile.png', ContentFile(testimage))

        testrole = baker.make('cradmin_legacy_testapp.TstRole')
        cradmin_app = mock.MagicMock()
        self.assertEqual(ArchiveImage.objects.count(), 0)
        mockresponse = self.mock_http302_postrequest(
            requestuser=testuser,
            cradmin_role=testrole,
            cradmin_app=cradmin_app,
            requestkwargs={'data': {
                'filecollectionid': collection.id
            }})

        self.assertEqual(ArchiveImage.objects.count(), 1)
        created_image = ArchiveImage.objects.first()
        self.assertTrue(mockresponse.response['Location'].endswith(
            '?foreignkey_selected_value={}'.format(created_image.pk)))
        self.assertEqual(created_image.image.read(), testimage)
        self.assertEqual(created_image.name, 'testfile.png')
        self.assertEqual(created_image.description, '')
コード例 #11
0
 def test_generate_generictoken_with_email(self):
     token = InviteUrlMock(
         request=mock.MagicMock(),
         private=True,
         content_object=self.invite_target
     ).generate_generictoken(email='*****@*****.**')
     self.assertEqual(token.metadata['email'], '*****@*****.**')
コード例 #12
0
 def test_generate_generictoken(self):
     token = InviteUrlMock(
         request=mock.MagicMock(),
         private=True,
         content_object=self.invite_target
     ).generate_generictoken()
     self.assertEqual(token.content_object, self.invite_target)
コード例 #13
0
 def test_get_share_url(self):
     testrequest = mock.MagicMock()
     testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(path)
     self.assertEqual(
         InviteUrlWithStaticTokenMock(
             request=testrequest, private=True, content_object=self.invite_target).get_share_url(),
         'http://testserver/invite/accept/test-token')
コード例 #14
0
    def test_uploadform_post_multiple_images(self):
        testuser = create_user('testuser')
        testimage1 = create_image(200, 100)
        testimage2 = create_image(100, 100)
        collection = TemporaryFileCollection.objects.create(user=testuser)
        temporaryfile = TemporaryFile(collection=collection,
                                      filename='testfile1.png')
        temporaryfile.file.save('testfile1.png', ContentFile(testimage1))
        temporaryfile = TemporaryFile(collection=collection,
                                      filename='testfile2.png')
        temporaryfile.file.save('testfile2.png', ContentFile(testimage2))

        testrole = baker.make('cradmin_legacy_testapp.TstRole')
        cradmin_app = mock.MagicMock()
        cradmin_app.reverse_appurl.return_value = '/success'

        self.assertEqual(ArchiveImage.objects.count(), 0)
        mockresponse = self.mock_http302_postrequest(
            requestuser=testuser,
            cradmin_role=testrole,
            cradmin_app=cradmin_app,
            requestkwargs={'data': {
                'filecollectionid': collection.id
            }})
        self.assertEqual(mockresponse.response['Location'], '/success')
        self.assertEqual(ArchiveImage.objects.count(), 2)
        created_images = ArchiveImage.objects.order_by('name')

        self.assertEqual(created_images[0].image.read(), testimage1)
        self.assertEqual(created_images[0].name, 'testfile1.png')
        self.assertEqual(created_images[0].description, '')

        self.assertEqual(created_images[1].image.read(), testimage2)
        self.assertEqual(created_images[1].name, 'testfile2.png')
        self.assertEqual(created_images[1].description, '')
コード例 #15
0
 def test_append(self):
     filterlist = AbstractFilterList(urlbuilder=mock.MagicMock(),
                                     target_dom_id='testdomid')
     testchild = MinimalFilterGroupChild()
     filterlist.append(testchild)
     self.assertEqual([testchild], filterlist.children)
     self.assertEqual(filterlist, testchild.filterlist)
コード例 #16
0
    def test_get(self):
        class SimpleDeleteView(delete.DeleteView):
            def get_queryset_for_role(self, role):
                queryset = mock.MagicMock()
                return queryset

            def get_object(self, queryset=None):
                obj = mock.MagicMock()
                if six.PY2:
                    obj.__unicode__.return_value = 'Simple Test Item'
                else:
                    obj.__str__.return_value = 'Simple Test Item'
                obj._meta = mock.MagicMock()
                obj._meta.verbose_name = 'TestModel'
                return obj

        request = self.factory.get('/test')
        request.cradmin_app = mock.MagicMock()
        response = SimpleDeleteView.as_view()(request, pk=10)
        response.render()
        selector = htmls.S(response.content)

        self.assertEqual(selector.one('form')['action'], 'http://testserver/test')
        self.assertEqual(
            selector.one('.cradmin-legacy-page-header-inner h1').alltext_normalized,
            'Delete Simple Test Item')
        self.assertEqual(
            selector.one('#deleteview-preview').alltext_normalized,
            'Are you sure you want to delete "Simple Test Item"?')
コード例 #17
0
    def test_uploadform_post_multiple_images_fails(self):
        testuser = create_user('testuser')
        testimage1 = create_image(200, 100)
        testimage2 = create_image(100, 100)
        collection = TemporaryFileCollection.objects.create(user=testuser)
        temporaryfile = TemporaryFile(collection=collection,
                                      filename='testfile1.png')
        temporaryfile.file.save('testfile1.png', ContentFile(testimage1))
        temporaryfile = TemporaryFile(collection=collection,
                                      filename='testfile2.png')
        temporaryfile.file.save('testfile2.png', ContentFile(testimage2))

        testrole = baker.make('cradmin_legacy_testapp.TstRole')
        cradmin_app = mock.MagicMock()
        cradmin_app.reverse_appurl.return_value = '/success'

        self.assertEqual(ArchiveImage.objects.count(), 0)
        mockresponse = self.mock_http200_postrequest_htmls(
            requestuser=testuser,
            cradmin_role=testrole,
            cradmin_app=cradmin_app,
            requestkwargs={'data': {
                'filecollectionid': collection.id
            }})
        self.assertEqual(ArchiveImage.objects.count(), 0)
        self.assertTrue(
            mockresponse.selector.exists('#div_id_filecollectionid.has-error'))
        self.assertIn(
            'You must upload exactly one image.',
            mockresponse.selector.one(
                '#div_id_filecollectionid').alltext_normalized)
コード例 #18
0
 def test_input_field(self):
     mockvalue = mock.MagicMock()
     mockvalue.pk = 10
     selector = htmls.S(
         selected_item_renderer.SelectedItem(value=mockvalue).render())
     self.assertEqual('10',
                      selector.one('input[name="selected_items"]')['value'])
コード例 #19
0
    def test_get_label_for(self):
        class MyFilter(AbstractFilter):
            pass

        filtershandler = FiltersHandler(urlbuilder=mock.MagicMock())
        filtershandler.add_filter(MyFilter(label='Test Label', slug='test'))
        self.assertEqual('Test Label', filtershandler.get_label_for('test'))
コード例 #20
0
    def test_filter_exclude(self):
        class FilterOne(AbstractFilter):
            def filter(self, queryobject):
                return queryobject.filter(mycharfield='test')

        class FilterTwo(AbstractFilter):
            def filter(self, queryobject):
                return queryobject.filter(mybooleanfield=True)

        match1 = baker.make('cradmin_viewhelpers_testapp.FilterTestModel',
                            mycharfield='test',
                            mybooleanfield=True)
        match2 = baker.make('cradmin_viewhelpers_testapp.FilterTestModel',
                            mycharfield='no match',
                            mybooleanfield=True)
        baker.make('cradmin_viewhelpers_testapp.FilterTestModel',
                   mycharfield='test',
                   mybooleanfield=False)

        filtershandler = FiltersHandler(urlbuilder=mock.MagicMock())
        filtershandler.add_filter(FilterOne(slug='filterone'))
        filtershandler.add_filter(FilterTwo(slug='filtertwo'))
        queryset = filtershandler.filter(FilterTestModel.objects.all(),
                                         exclude={'filterone'})
        self.assertEqual({match1, match2}, set(queryset))
コード例 #21
0
    def test_filter(self):
        class FilterOne(AbstractFilter):
            def filter(self, queryobject):
                return queryobject.filter(mycharfield='test')

        class FilterTwo(AbstractFilter):
            def filter(self, queryobject):
                return queryobject.filter(mybooleanfield=True)

        match = baker.make('cradmin_viewhelpers_testapp.FilterTestModel',
                           mycharfield='test',
                           mybooleanfield=True)
        baker.make('cradmin_viewhelpers_testapp.FilterTestModel',
                   mycharfield='no match',
                   mybooleanfield=True)
        baker.make('cradmin_viewhelpers_testapp.FilterTestModel',
                   mycharfield='test',
                   mybooleanfield=False)

        filterlist = AbstractFilterList(urlbuilder=mock.MagicMock(),
                                        target_dom_id='testdomid')
        filterlist.append(FilterOne(slug='filterone'))
        filterlist.append(FilterTwo(slug='filtertwo'))
        queryset = filterlist.filter(FilterTestModel.objects.all())
        self.assertEqual({match}, set(queryset))
コード例 #22
0
    def test_form_valid_success_redirect(self):
        class DemoForm(forms.Form):
            data = forms.CharField()

        class SimpleMultiSelectFormView(multiselect.MultiSelectFormView):
            form_class = DemoForm
            model = TestModel

            def get_queryset_for_role(self, role):
                return TestModel.objects.filter(id=TEST_PK)

            def get_success_url(self):
                return '/success'

            def form_valid(self, form):
                return self.success_redirect_response()

        request = self.factory.post(
            '/test', {
                'selected_objects': [self.testmodelinstance.id],
                'data': 'Hello world'
            })
        request.cradmin_role = mock.MagicMock()
        response = SimpleMultiSelectFormView.as_view()(request)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response['Location'], '/success')
コード例 #23
0
    def test_post(self):
        obj = mock.MagicMock()

        class SimpleDeleteView(delete.DeleteView):
            def get_queryset_for_role(self, role):
                queryset = mock.MagicMock()
                return queryset

            def get_object(self, queryset=None):
                return obj

        request = self.factory.post('/test')
        request._messages = mock.MagicMock()
        request.cradmin_app = mock.MagicMock()
        SimpleDeleteView.as_view()(request, pk=10)
        obj.delete.assert_called_once_with()
コード例 #24
0
 def test_viewbutton_not_rendered(self):
     rendered = listbuilder.itemvalue.EditDelete(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertFalse(
         selector.exists(
             '.cradmin-legacy-listbuilder-itemvalue-editdelete-viewbutton'))
コード例 #25
0
 def test_render(self):
     testlist = listbuilder.base.List()
     testlist.append(listbuilder.base.ItemValueRenderer(value='testvalue1'))
     testlist.append(listbuilder.base.ItemValueRenderer(value='testvalue2'))
     selector = htmls.S(testlist.render(request=mock.MagicMock()))
     self.assertEqual(2, selector.count('li'))
     self.assertEqual('testvalue1', selector.list('li')[0].alltext_normalized)
     self.assertEqual('testvalue2', selector.list('li')[1].alltext_normalized)
コード例 #26
0
 def test_set_filters_string_invalid_slug(self):
     filterlist = AbstractFilterList(urlbuilder=mock.MagicMock(),
                                     target_dom_id='testdomid')
     stringfilter = MinimalStringFilter()
     filterlist.append(stringfilter)
     with self.assertRaisesMessage(InvalidFiltersStringError,
                                   '"x" is not a valid filter slug.'):
         filterlist.set_filters_string('x-10')
コード例 #27
0
 def test_parse_complex_valid_filter_string(self):
     filtershandler = FiltersHandler(urlbuilder=mock.MagicMock())
     filtershandler.add_filter(MinimalStringFilter())
     filtershandler.add_filter(MinimalIntFilter())
     filtershandler.parse('/i-10/s-jane,joe/')
     self.assertEqual(2, len(filtershandler.filtermap))
     self.assertEqual(['10'], filtershandler.filtermap['i'].values)
     self.assertEqual(['jane', 'joe'], filtershandler.filtermap['s'].values)
コード例 #28
0
 def test_get_share_url_public(self):
     testrequest = mock.MagicMock()
     testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(path)
     inviteurl = InviteUrlWithTokenIteratorMock(
         request=testrequest, private=False, content_object=self.invite_target)
     self.assertEqual(inviteurl.get_share_url(), 'http://testserver/invite/accept/token1')
     self.assertEqual(inviteurl.get_share_url(), 'http://testserver/invite/accept/token1')
     self.assertEqual(inviteurl.get_share_url(), 'http://testserver/invite/accept/token1')
コード例 #29
0
 def test_no_description(self):
     mockvalue = mock.MagicMock()
     selector = htmls.S(
         selected_item_renderer.SelectedItem(value=mockvalue).render())
     self.assertFalse(
         selector.exists(
             '.cradmin-legacy-multiselect2-target-selected-item-description'
         ))
コード例 #30
0
    def test_custom_input_field_name(self):
        class MySelectedItem(selected_item_renderer.SelectedItem):
            def get_inputfield_name(self):
                return 'testfield'

        mockvalue = mock.MagicMock()
        selector = htmls.S(MySelectedItem(value=mockvalue).render())
        self.assertTrue(selector.exists('input[name="testfield"]'))