-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #26 from edx/bseverino/name-preference
[MST-893] Update REST API to include config model
- Loading branch information
Showing
12 changed files
with
390 additions
and
52 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
""" | ||
Custom Django admin pages for Name Affirmation | ||
""" | ||
|
||
from django.contrib import admin | ||
|
||
from edx_name_affirmation.models import VerifiedName, VerifiedNameConfig | ||
|
||
|
||
class VerifiedNameAdmin(admin.ModelAdmin): | ||
""" | ||
Admin for the VerifiedName Model | ||
""" | ||
list_display = ( | ||
'id', 'user', 'verified_name', 'verification_attempt_id', 'proctored_exam_attempt_id', | ||
'is_verified', 'created', 'modified', | ||
) | ||
readonly_fields = ('id', 'user', 'created', 'modified') | ||
search_fields = ('user__username', 'verification_attempt_id', 'proctored_exam_attempt_id',) | ||
|
||
|
||
class VerifiedNameConfigAdmin(admin.ModelAdmin): | ||
""" | ||
Admin for the VerifiedNameConfig Model | ||
""" | ||
list_display = ( | ||
'id', 'user', 'use_verified_name_for_certs', 'change_date', | ||
) | ||
readonly_fields = ('change_date',) | ||
search_fields = ('user__username',) | ||
|
||
|
||
admin.site.register(VerifiedName, VerifiedNameAdmin) | ||
admin.site.register(VerifiedNameConfig, VerifiedNameConfigAdmin) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
""" | ||
Unit tests for the NameAffirmation admin classes | ||
""" | ||
|
||
|
||
from unittest import mock | ||
|
||
from django.contrib.admin.sites import AdminSite | ||
from django.test import TestCase | ||
|
||
from edx_name_affirmation.admin import VerifiedNameAdmin, VerifiedNameConfigAdmin | ||
from edx_name_affirmation.models import VerifiedName, VerifiedNameConfig | ||
|
||
|
||
class NameAffirmationAdminTests(TestCase): | ||
""" | ||
Unit tests for the NameAffirmation admin classes | ||
""" | ||
|
||
def setUp(self): | ||
super().setUp() | ||
self.verified_name_admin = VerifiedNameAdmin(VerifiedName, AdminSite()) | ||
self.verified_name_config_admin = VerifiedNameConfigAdmin( | ||
VerifiedNameConfig, AdminSite() | ||
) | ||
|
||
def test_verified_name_admin(self): | ||
request = mock.Mock() | ||
|
||
expected_list_display = ( | ||
'id', 'user', 'verified_name', 'verification_attempt_id', 'proctored_exam_attempt_id', | ||
'is_verified', 'created', 'modified', | ||
) | ||
self.assertEqual( | ||
expected_list_display, | ||
self.verified_name_admin.get_list_display(request) | ||
) | ||
|
||
expected_readonly_fields = ('id', 'user', 'created', 'modified') | ||
self.assertEqual( | ||
expected_readonly_fields, | ||
self.verified_name_admin.get_readonly_fields(request) | ||
) | ||
|
||
expected_search_fields = ( | ||
'user__username', 'verification_attempt_id', 'proctored_exam_attempt_id', | ||
) | ||
self.assertEqual( | ||
expected_search_fields, | ||
self.verified_name_admin.get_search_fields(request) | ||
) | ||
|
||
def test_verified_name_config_admin(self): | ||
request = mock.Mock() | ||
|
||
expected_list_display = ( | ||
'id', 'user', 'use_verified_name_for_certs', 'change_date', | ||
) | ||
self.assertEqual( | ||
expected_list_display, | ||
self.verified_name_config_admin.get_list_display(request) | ||
) | ||
|
||
expected_readonly_fields = ('change_date',) | ||
self.assertEqual( | ||
expected_readonly_fields, | ||
self.verified_name_config_admin.get_readonly_fields(request) | ||
) | ||
|
||
expected_search_fields = ('user__username',) | ||
self.assertEqual( | ||
expected_search_fields, | ||
self.verified_name_config_admin.get_search_fields(request) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ | |
import ddt | ||
|
||
from django.contrib.auth import get_user_model | ||
from django.core.cache import cache | ||
from django.test import TestCase | ||
|
||
from edx_name_affirmation.api import ( | ||
|
@@ -40,6 +41,12 @@ def setUp(self): | |
super().setUp() | ||
self.user = User(username='jondoe', email='[email protected]') | ||
self.user.save() | ||
# Create a fresh config with default values | ||
VerifiedNameConfig.objects.create(user=self.user) | ||
|
||
def tearDown(self): | ||
super().tearDown() | ||
cache.clear() | ||
|
||
def test_create_verified_name_defaults(self): | ||
""" | ||
|
@@ -275,20 +282,18 @@ def test_create_verified_name_config(self): | |
""" | ||
Test that verified name config is created and updated successfully | ||
""" | ||
create_verified_name_config(self.user) | ||
|
||
# check that one record exists | ||
configs = VerifiedNameConfig.objects.filter(user=self.user) | ||
self.assertEqual(len(configs), 1) | ||
config_obj = configs[0] | ||
self.assertFalse(config_obj.use_verified_name_for_certs) | ||
self.assertEqual(config_obj.user, self.user) | ||
|
||
create_verified_name_config(self.user, use_verified_name_for_certs=True) | ||
|
||
# check that new record was created | ||
configs = VerifiedNameConfig.objects.filter(user=self.user).order_by('change_date') | ||
self.assertEqual(len(configs), 2) | ||
config_obj = configs[1] | ||
config_obj = VerifiedNameConfig.current(self.user) | ||
self.assertTrue(config_obj.use_verified_name_for_certs) | ||
self.assertEqual(config_obj.user, self.user) | ||
|
||
def test_create_verified_name_config_no_overwrite(self): | ||
""" | ||
Test that if a field is set to True, it will not be overridden by False | ||
if not specified when the config is updated | ||
""" | ||
create_verified_name_config(self.user, use_verified_name_for_certs=True) | ||
create_verified_name_config(self.user) | ||
self.assertTrue(should_use_verified_name_for_certs(self.user)) |
Oops, something went wrong.