Ejemplo n.º 1
0
 def prettyformat_response_content(self, response):
     warnings = []
     output = None
     if hasattr(response, 'render'):
         try:
             response.render()
         except Exception as e:
             warnings.append('[cradmin TestCaseMixin warning] response.render() failed with: {}'.format(e))
         else:
             try:
                 output = '[cradmin TestCaseMixin info]: Prettyformatted response.content:\n{}'.format(
                     _indent_string(htmls.S(response.content).prettify())
                 )
             except:
                 pass
     if output is None:
         try:
             content = response.content.decode('utf-8')
         except UnicodeError:
             content = response.content
         if content:
             output = '[cradmin TestCaseMixin info]: response.content:\n{}'.format(
                 _indent_string(content))
         else:
             output = '[cradmin TestCaseMixin info]: response.content is empty.'
     return output, warnings
Ejemplo n.º 2
0
 def test_custom_cssclass(self):
     testperiod = mommy.make('core.Period')
     selector = htmls.S(
         devilry_listbuilder.period.StudentItemValue(
             value=testperiod).render())
     self.assertTrue(
         selector.exists('.devilry-cradmin-perioditemvalue-student'))
 def test_url(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     selector = htmls.S(listbuilder_role.AnyAdminRoleItemFrame(
         inneritem=mock.MagicMock(value=testuser)).render())
     self.assertEqual(
         '/devilry_admin/',
         selector.one('.django-cradmin-listbuilder-itemframe-link')['href'])
Ejemplo n.º 4
0
 def test_no_organization_specific_documentation_url(self):
     with self.settings(
             DEVILRY_ORGANIZATION_SPECIFIC_DOCUMENTATION_URL=None):
         selector = htmls.S(self.client.get(self.url).content)
         self.assertFalse(
             selector.exists(
                 '#devilry_help_organization_specific_documentation'))
Ejemplo n.º 5
0
 def test_description_multiple_assignments_assignment(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testperiod = mommy.make('core.Period')
     relatedstudent = mommy.make('core.RelatedStudent',
                                 user=testuser,
                                 period=testperiod)
     testassignment1 = mommy.make('core.Assignment', parentnode=testperiod)
     mommy.make('core.Candidate',
                assignment_group__parentnode=testassignment1,
                relatedstudent=relatedstudent)
     testassignment2 = mommy.make('core.Assignment', parentnode=testperiod)
     mommy.make('core.Candidate',
                assignment_group__parentnode=testassignment2,
                relatedstudent=relatedstudent)
     testperiod_annotated = Period.objects\
         .extra_annotate_with_assignmentcount_for_studentuser(user=testuser)\
         .get(id=testperiod.id)
     selector = htmls.S(
         devilry_listbuilder.period.StudentItemValue(
             value=testperiod_annotated).render())
     self.assertEqual(
         '2 assignments',
         selector.one(
             '.django-cradmin-listbuilder-itemvalue-titledescription-description'
         ).alltext_normalized)
Ejemplo n.º 6
0
    def test_get_render_is_authenticated(self):
        request = self.factory.get('/test')
        request.user = create_user('testuser')
        token = self.__create_token()
        with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'):
            response = AcceptInviteView.as_view()(request, token=token.token)
        self.assertEqual(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)
        self.assertTrue(
            selector.exists('button#django_cradmin_invite_accept_as_button'))
        self.assertEqual(
            selector.one(
                '#django_cradmin_invite_accept_register_account_button')
            ['href'],
            '/cradmin_register_account/?next=http%3A%2F%2Ftestserver%2Ftest')
        self.assertEqual(
            selector.one(
                '#django_cradmin_invite_accept_login_as_different_user_button')
            ['href'], '/cradmin_authenticate/logout?'
            'next=%2Faccounts%2Flogin%2F%3Fnext%3Dhttp%253A%252F%252Ftestserver%252Ftest'
        )

        self.assertEqual(
            selector.one('button#django_cradmin_invite_accept_as_button').
            alltext_normalized, 'Accept as testuser')
        self.assertEqual(
            selector.one(
                '#django_cradmin_invite_accept_register_account_button').
            alltext_normalized, 'Sign up for Testsite')
        self.assertEqual(
            selector.one(
                '#django_cradmin_invite_accept_login_as_different_user_button'
            ).alltext_normalized, 'Sign in as another user')
Ejemplo n.º 7
0
 def test_form_action_default(self):
     mockrequest = mock.MagicMock()
     mockrequest.get_full_path.return_value = '/form/action'
     selector = htmls.S(
         target_renderer.Target(form=forms.Form()).render(
             request=mockrequest))
     self.assertEqual('/form/action', selector.one('form')['action'])
 def test_sanity(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     selector = htmls.S(
         listbuilder_role.AnyAdminRoleItemValue(value=testuser).render())
     self.assertTrue(
         selector.exists(
             '.devilry-frontpage-listbuilder-roleselect-itemvalue'))
Ejemplo n.º 9
0
 def test_render_cell(self):
     result = self.column_subclass.render_cell_content(self.model_testobject)
     selector = htmls.S(result)
     self.assertEqual(selector.one('p.objecttable-cellvalue').alltext_normalized,
                      'test_value')
     self.assertTrue(selector.exists('p.objecttable-cellbuttons'))
     self.assertEqual(selector.count('a'), 2)
Ejemplo n.º 10
0
 def test_sanity(self):
     selector = htmls.S(
         listbuilder_role.AnyAdminRoleItemFrame(
             inneritem=mock.MagicMock()).render())
     self.assertTrue(
         selector.exists(
             '.devilry-frontpage-listbuilder-roleselect-itemframe'))
Ejemplo n.º 11
0
 def test_correct_devilryrole(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     selector = htmls.S(
         listbuilder_role.StudentRoleItemValue(value=testuser).render())
     self.assertTrue(
         selector.exists(
             '.devilry-frontpage-listbuilder-roleselect-itemvalue-student'))
Ejemplo n.º 12
0
 def test_correct_devilryrole(self):
     selector = htmls.S(
         listbuilder_role.StudentRoleItemFrame(
             inneritem=mock.MagicMock()).render())
     self.assertTrue(
         selector.exists(
             '.devilry-frontpage-listbuilder-roleselect-itemframe-student'))
Ejemplo n.º 13
0
 def test_status_is_corrected(self):
     devilry_group_mommy_factories.feedbackset_first_attempt_published(
         grading_points=1)
     testgroup = AssignmentGroup.objects.annotate_with_is_corrected_count().first()
     selector = htmls.S(groupdetails.GroupDetailsRenderable(value=testgroup,
                                                            assignment=testgroup.assignment).render())
     self.assertFalse(selector.exists('.devilry-cradmin-groupitemvalue-status'))
Ejemplo n.º 14
0
 def test_post_user_not_found(self):
     response = self.client.post(self.url, {'email': '*****@*****.**'})
     self.assertEqual(response.status_code, 200)
     selector = htmls.S(response.content)
     self.assertIn(
         'No account with this email address found',
         selector.one('form#id_django_cradmin_resetpassword_begin_form').alltext_normalized)
Ejemplo n.º 15
0
 def test_without_description(self):
     rendered = listbuilder.itemvalue.UseThis(value=self.__make_mock_value('testvalue'))\
         .render(request=self.__make_mock_request())
     selector = htmls.S(rendered)
     self.assertFalse(
         selector.exists(
             '.test-cradmin-listbuilder-title-description__description'))
Ejemplo n.º 16
0
    def test_paginate_by_middlepage(self):
        testmodels.SomeItem.objects.bulk_create(
            [testmodels.SomeItem(name=str(x)) for x in range(9)])

        class MyObjectTableView(objecttable.ObjectTableView):
            model = testmodels.SomeItem
            paginate_by = 4

            def get_queryset_for_role(self, role):
                return testmodels.SomeItem.objects.all()

        request = self.factory.get('/test', {
            'page': 2
        })
        self._mock_request(request)
        response = MyObjectTableView.as_view()(request)
        response.render()
        selector = htmls.S(response.content)
        # selector.one('#cradmin_legacy_contentwrapper').prettyprint()
        self.assertEqual(selector.count('#objecttableview-table>tbody>tr'), 4)
        self.assertTrue(selector.exists('#cradmin_legacy_contentwrapper .pager'))
        self.assertTrue(selector.exists('#cradmin_legacy_contentwrapper .pager .previous'))
        self.assertTrue(selector.exists('#cradmin_legacy_contentwrapper .pager .next'))
        self.assertFalse(selector.exists('#cradmin_legacy_contentwrapper .pager .previous.disabled'))
        self.assertFalse(selector.exists('#cradmin_legacy_contentwrapper .pager .next.disabled'))
Ejemplo n.º 17
0
    def test_get_render_not_authenticated(self):
        request = self.factory.get('/test')
        request.user = AnonymousUser()
        token = self.__create_token()
        with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'):
            response = AcceptInviteView.as_view()(request, token=token.token)
        self.assertEqual(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)
        self.assertEqual(
            selector.one('#django_cradmin_invite_accept_login_button')['href'],
            '/accounts/login/?next=http%3A%2F%2Ftestserver%2Ftest')
        self.assertEqual(
            selector.one(
                '#django_cradmin_invite_accept_register_account_button')
            ['href'],
            '/cradmin_register_account/?next=http%3A%2F%2Ftestserver%2Ftest')

        self.assertEqual(
            selector.one('#django_cradmin_invite_accept_login_button').
            alltext_normalized, 'Sign in')
        self.assertEqual(
            selector.one(
                '#django_cradmin_invite_accept_register_account_button').
            alltext_normalized, 'Sign up for Testsite')
Ejemplo n.º 18
0
    def test_render_multiple_simple_columns(self):
        testmodels.SomeItem.objects.create(name='Item One', somenumber=10)

        class MyObjectTableView(objecttable.ObjectTableView):
            model = testmodels.SomeItem
            columns = ['name', 'somenumber']

            def get_queryset_for_role(self, role):
                return testmodels.SomeItem.objects.all()

        request = self.factory.get('/test')
        self._mock_request(request)
        response = MyObjectTableView.as_view()(request)
        response.render()
        selector = htmls.S(response.content)

        self.assertEqual(selector.count('#objecttableview-table>thead>tr>th'), 2)
        self.assertEqual(
            selector.one('#objecttableview-table>thead>tr>th:first-child').alltext_normalized,
            'The name - Ordered descending - Click to order ascending')
        self.assertEqual(
            selector.one('#objecttableview-table>thead>tr>th:last-child').alltext_normalized,
            'Somenumber - Ordered descending - Click to order ascending')

        self.assertEqual(selector.count('#objecttableview-table>tbody>tr'), 1)
        self.assertEqual(selector.count('#objecttableview-table>tbody>tr>td'), 2)
        self.assertEqual(
            selector.one('#objecttableview-table>tbody>tr>td:first-child').alltext_normalized,
            'Item One')
        self.assertEqual(
            selector.one('#objecttableview-table>tbody>tr>td:last-child').alltext_normalized,
            '10')
Ejemplo n.º 19
0
 def test_submit_button_text_default(self):
     selector = htmls.S(
         target_renderer.Target(form=forms.Form()).render(
             request=mock.MagicMock()))
     self.assertEqual(
         'Submit selection',
         selector.one('button[type="submit"]').alltext_normalized)
Ejemplo n.º 20
0
    def test_render_order_descending_column(self):
        testmodels.SomeItem.objects.create(name='Item A')
        testmodels.SomeItem.objects.create(name='Item B')
        testmodels.SomeItem.objects.create(name='Item C')

        class MyObjectTableView(objecttable.ObjectTableView):
            model = testmodels.SomeItem
            columns = ['name']

            def get_queryset_for_role(self, role):
                return testmodels.SomeItem.objects.all()

        request = self.factory.get('/test', {
            'ordering': 'd0'
        })
        self._mock_request(request)
        response = MyObjectTableView.as_view()(request)
        response.render()
        selector = htmls.S(response.content)
        # selector.one('#cradmin_legacy_contentwrapper thead').prettyprint()

        self.assertEqual(selector.count('#objecttableview-table>tbody>tr'), 3)
        self.assertEqual(
            selector.one('#objecttableview-table>tbody>tr:first-child>td').alltext_normalized,
            'Item C')
        self.assertEqual(
            selector.one('#objecttableview-table>tbody>tr:last-child>td').alltext_normalized,
            'Item A')

        self.assertEqual(
            selector.one('#objecttableview-table>thead>tr>th').alltext_normalized,
            'The name - Ordered descending - Click to order ascending')
Ejemplo n.º 21
0
    def test_render_list_descriptions(self):
        role1 = mock.MagicMock()
        role1.id = 1
        role1.title = 'Role One'
        role1.description = 'Role One desc'
        role2 = mock.MagicMock()
        role2.id = 2
        role2.title = 'Role Two'
        role2.description = 'Role Two desc'

        cradmin_instance = self.__mock_cradmin_instance(roles=[role1, role2])
        request = self.factory.get('/roleselecttest')
        request.cradmin_instance = cradmin_instance

        response = RoleSelectView.as_view()(request)
        self.assertEquals(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)

        self.assertEqual(
            selector.count('.test-cradmin-roleselect-list__itemdescription'),
            2)
        titletextlist = [
            element.alltext_normalized for element in selector.list(
                '.test-cradmin-roleselect-list__itemdescription')
        ]
        self.assertEquals(titletextlist, ['Role One desc', 'Role Two desc'])
Ejemplo n.º 22
0
    def test_render_search_match(self):
        testmodels.SomeItem.objects.create(name='Item One')
        testmodels.SomeItem.objects.create(name='Item Two')
        testmodels.SomeItem.objects.create(name='Item Three')

        class MyObjectTableView(objecttable.ObjectTableView):
            model = testmodels.SomeItem
            columns = ['name']
            searchfields = ['name']

            def get_queryset_for_role(self, role):
                return testmodels.SomeItem.objects.all()

        request = self.factory.get('/test', {
            'search': 'Item Two'
        })
        self._mock_request(request)
        response = MyObjectTableView.as_view()(request)
        response.render()
        selector = htmls.S(response.content)

        self.assertEqual(selector.count('#objecttableview-table>tbody>tr'), 1)
        self.assertEqual(
            selector.one('#objecttableview-table>tbody>tr>td').alltext_normalized,
            'Item Two')
Ejemplo n.º 23
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"?')
Ejemplo n.º 24
0
 def test_product_detail_view_user(self):
     '''
     test by the help of htmls module. (see https://github.com/espenak/htmls/)
     '''
     minimal_style = mommy.make(MinimalStyle)
     self.client.login(username='******', password='******')
     kwargs = {
         'id': 1,
         'name': 'Product',
         'minimal_style': minimal_style,
         'base_price': 100,
         'atelier': self.user_profile.atelier,
     }
     instance = mommy.make('atelier.Product', **kwargs)
     response = self.client.get('/en/atelier/product/{}/'.format(
         instance.id))
     self.assertEqual(response.status_code, 200)
     selector = htmls.S(response.content)
     name = selector.one('.name').alltext_normalized
     minimal = selector.one('.minimal_style').alltext_normalized
     base_price = selector.one('.base_price').alltext_normalized
     self.assertEqual(response.status_code, 200)
     self.assertEqual(name, 'Product')
     self.assertEqual(minimal, minimal_style.group)
     self.assertEqual(base_price, '100.00 ₴')
     self.assertTemplateUsed(response, 'atelier/product_detail.html')
Ejemplo n.º 25
0
 def test_not_qualified_for_final_exam(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testperiod = mommy.make('core.Period')
     relatedstudent = mommy.make('core.RelatedStudent',
                                 period=testperiod,
                                 user=testuser)
     status = mommy.make('devilry_qualifiesforexam.Status',
                         period=testperiod,
                         status=Status.READY)
     mommy.make('devilry_qualifiesforexam.QualifiesForFinalExam',
                relatedstudent=relatedstudent,
                status=status,
                qualifies=False)
     testperiod_annotated = Period.objects\
         .extra_annotate_with_user_qualifies_for_final_exam(user=testuser)\
         .get(id=testperiod.id)
     selector = htmls.S(
         devilry_listbuilder.period.StudentItemValue(
             value=testperiod_annotated).render())
     self.assertFalse(
         selector.exists(
             '.devilry-cradmin-perioditemvalue-student-qualifedforexam-yes')
     )
     self.assertTrue(
         selector.exists(
             '.devilry-cradmin-perioditemvalue-student-qualifedforexam-no'))
     self.assertEqual(
         'NOT qualified for final exam',
         selector.one(
             '.devilry-cradmin-perioditemvalue-student-qualifedforexam').
         alltext_normalized)
Ejemplo n.º 26
0
 def test_without_description(self):
     rendered = listbuilder.itemvalue.TitleDescription(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertFalse(
         selector.exists(
             '.test-cradmin-listbuilder-title-description__description'))
 def test_do_not_render_if_empty(self):
     container = uicontainer.messagescontainer.MessagesContainer(
         test_css_class_suffixes_list=['messages']
     )\
         .bootstrap()
     selector = htmls.S(container.render())
     self.assertFalse(selector.exists('.test-messages'))
Ejemplo n.º 28
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(
             '.test-cradmin-listbuilder-edit-delete__previewbutton'))
 def test_student_group_comment_item_value_semi_anonymous(self):
     testassignment = mommy.make_recipe(
         'devilry.apps.core.assignment_activeperiod_start',
         anonymizationmode=core_models.Assignment.
         ANONYMIZATIONMODE_SEMI_ANONYMOUS)
     testgroup = mommy.make('core.AssignmentGroup',
                            parentnode=testassignment)
     candidate = mommy.make(
         'core.Candidate',
         assignment_group=testgroup,
         relatedstudent__user__fullname='Test User',
         relatedstudent__user__shortname='*****@*****.**')
     comment = mommy.make('devilry_group.GroupComment',
                          user=candidate.relatedstudent.user,
                          user_role='student',
                          feedback_set__group=testgroup)
     selector = htmls.S(
         listbuilder.StudentGroupCommentItemValue(
             value=comment,
             devilry_viewrole='examiner',
             user_obj=candidate,
             assignment=testassignment).render())
     self.assertFalse(
         selector.exists('.devilry-user-verbose-inline-fullname'))
     self.assertTrue(
         selector.exists('.devilry-core-candidate-anonymous-name'))
Ejemplo n.º 30
0
 def test_client_detail_view_user(self):
     '''
     test by the help of htmls module. (see https://github.com/espenak/htmls/)
     '''
     self.client.login(username='******', password='******')
     kwargs = {
         'id': 1,
         'first_name': 'Ivan',
         'last_name': 'Sakh',
         'tel_number': 123456,
         'place': 'Kyiv',
         'atelier': self.user_profile.atelier,
     }
     instance = mommy.make('atelier.Client', **kwargs)
     response = self.client.get('/en/atelier/client/{}/'.format(
         instance.id))
     selector = htmls.S(response.content)
     first = selector.one('.first').alltext_normalized
     last = selector.one('.last').alltext_normalized
     tel = selector.one('.tel').alltext_normalized
     pl = selector.one('.pl').alltext_normalized
     self.assertEqual(response.status_code, 200)
     self.assertEqual(first, 'Ivan')
     self.assertEqual(last, 'Sakh')
     self.assertEqual(tel, '123456')
     self.assertEqual(pl, 'Kyiv')
     self.assertTemplateUsed(response, 'atelier/client_detail.html')