def test_context(self):
        """
        Verify learner profile page context data.
        """
        request = RequestFactory().get('/url')
        request.user = self.user

        context = learner_profile_context(request, self.USERNAME, self.user.is_staff)

        assert context['data']['default_public_account_fields'] == \
               settings.ACCOUNT_VISIBILITY_CONFIGURATION['public_fields']

        assert context['data']['accounts_api_url'] == \
               reverse('accounts_api', kwargs={'username': self.user.username})

        assert context['data']['preferences_api_url'] == \
               reverse('preferences_api', kwargs={'username': self.user.username})

        assert context['data']['profile_image_upload_url'] == \
               reverse('profile_image_upload', kwargs={'username': self.user.username})

        assert context['data']['profile_image_remove_url'] == \
               reverse('profile_image_remove', kwargs={'username': self.user.username})

        assert context['data']['profile_image_max_bytes'] == settings.PROFILE_IMAGE_MAX_BYTES

        assert context['data']['profile_image_min_bytes'] == settings.PROFILE_IMAGE_MIN_BYTES

        assert context['data']['account_settings_page_url'] == reverse('account_settings')

        for attribute in self.CONTEXT_DATA:
            assert attribute in context['data']
    def test_certificates_visible_only_for_staff_and_profile_user(self):
        """
        Verify that certificates data are passed to template only in case of staff user
        and profile user.
        """
        request = RequestFactory().get('/url')
        request.user = self.user
        profile_username = self.other_user.username
        user_is_staff = True
        context = learner_profile_context(request, profile_username, user_is_staff)

        self.assertIn('achievements_fragment', context)

        user_is_staff = False
        context = learner_profile_context(request, profile_username, user_is_staff)
        self.assertNotIn('achievements_fragment', context)

        profile_username = self.user.username
        context = learner_profile_context(request, profile_username, user_is_staff)
        self.assertIn('achievements_fragment', context)
    def test_certificates_visible_only_for_staff_and_profile_user(self):
        """
        Verify that certificates data are passed to template only in case of staff user
        and profile user.
        """
        request = RequestFactory().get('/url')
        request.user = self.user
        profile_username = self.other_user.username
        user_is_staff = True
        context = learner_profile_context(request, profile_username, user_is_staff)

        assert 'achievements_fragment' in context

        user_is_staff = False
        context = learner_profile_context(request, profile_username, user_is_staff)
        assert 'achievements_fragment' not in context

        profile_username = self.user.username
        context = learner_profile_context(request, profile_username, user_is_staff)
        assert 'achievements_fragment' in context
    def test_context(self):
        """
        Verify learner profile page context data.
        """
        request = RequestFactory().get('/url')
        request.user = self.user

        context = learner_profile_context(request, self.USERNAME, self.user.is_staff)

        self.assertEqual(
            context['data']['default_public_account_fields'],
            settings.ACCOUNT_VISIBILITY_CONFIGURATION['public_fields']
        )

        self.assertEqual(
            context['data']['accounts_api_url'],
            reverse("accounts_api", kwargs={'username': self.user.username})
        )

        self.assertEqual(
            context['data']['preferences_api_url'],
            reverse('preferences_api', kwargs={'username': self.user.username})
        )

        self.assertEqual(
            context['data']['profile_image_upload_url'],
            reverse("profile_image_upload", kwargs={'username': self.user.username})
        )

        self.assertEqual(
            context['data']['profile_image_remove_url'],
            reverse('profile_image_remove', kwargs={'username': self.user.username})
        )

        self.assertEqual(
            context['data']['profile_image_max_bytes'],
            settings.PROFILE_IMAGE_MAX_BYTES
        )

        self.assertEqual(
            context['data']['profile_image_min_bytes'],
            settings.PROFILE_IMAGE_MIN_BYTES
        )

        self.assertEqual(context['data']['account_settings_page_url'], reverse('account_settings'))

        for attribute in self.CONTEXT_DATA:
            self.assertIn(attribute, context['data'])