Skip to content

Commit

Permalink
refactor: some more code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
mudassir-hafeez committed Aug 13, 2024
1 parent 3480283 commit 28019b0
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 22 deletions.
17 changes: 9 additions & 8 deletions edx_api/user_validation/__init__.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,39 @@
"""Client for user_validation API"""
from urllib.parse import urljoin

from .models import Validation
from .models import UserValidationResult


class UserValidation(object):
"""
edX user validation client
Open edX user validation client
"""

api_url = "/api/user/v1/validation/registration"

def __init__(self, requester, base_url):
"""
Args:
requester (Requester): an unauthenticated objects for requests to edX
base_url (str): string representing the base URL of an edX LMS instance
requester (object): an unauthenticated object for request to Open edX
base_url (str): string representing the base URL of an Open edX LMS instance
"""
self.requester = requester
self.base_url = base_url

def validate_user_registration(self, registration_information=None):
def validate_user_registration_info(self, registration_information=None):
"""
Validate information about user data during registration.
Args:
registration_information (dict): request payload to validate name or username
registration_information (dict): request payload to validate user registration information
i.e. name or username
Returns:
UserValidation: Object representing the user validation
UserValidationResult: Object representing the user validation response data
"""
resp = self.requester.post(
urljoin(self.base_url, self.api_url), data=registration_information
)
resp.raise_for_status()

return Validation(resp.json())
return UserValidationResult(resp.json())
10 changes: 5 additions & 5 deletions edx_api/user_validation/init_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import requests_mock

from edx_api.client import EdxApi
from .models import Validation
from .models import UserValidationResult


class UserValidationTestCase(TestCase):
Expand Down Expand Up @@ -39,9 +39,9 @@ def get_mock_response(self, key):
return self.validation_data['validation_responses'].get(key, {})

@requests_mock.Mocker()
def test_validate_user_registration(self, mock_req):
def test_validate_user_registration_info(self, mock_req):
"""
Test that validate_user_registration validates name and username.
Test that validate_user_registration_info validates name and username.
"""
test_cases = [
('valid_name', {'name': ''}, {'name': 'test_name'}),
Expand All @@ -56,6 +56,6 @@ def test_validate_user_registration(self, mock_req):
urljoin(self.base_url, '/api/user/v1/validation/registration'),
json=self.get_mock_response(key)
)
validation_response = self.client.user_validation.validate_user_registration(request_data)
self.assertIsInstance(validation_response, Validation)
validation_response = self.client.user_validation.validate_user_registration_info(request_data)
self.assertIsInstance(validation_response, UserValidationResult)
self.assertDictEqual(validation_response.validation_decisions, expected_validation_decisions)
18 changes: 14 additions & 4 deletions edx_api/user_validation/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""Models for user_validation client"""


class Validation(object):
class UserValidationResult(object):
"""
Validation about user
Validation result about user
"""
def __init__(self, json):
self.validation_decisions = json.get('validation_decisions', {})
Expand All @@ -13,10 +13,20 @@ def __str__(self):

@property
def name(self):
"""Returns name validation of the user"""
"""
Returns name validation of the user
Returns:
str: A validation message for the name. An empty string indicates a valid name.
"""
return self.validation_decisions.get('name')

@property
def username(self):
"""Returns username validation of the user."""
"""
Returns username validation of the user.
Returns:
str: A validation message for the username. An empty string indicates a valid username.
"""
return self.validation_decisions.get('username')
10 changes: 5 additions & 5 deletions edx_api/user_validation/models_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import os
from unittest import TestCase

from .models import Validation
from .models import UserValidationResult


class ValidationTests(TestCase):
"""Tests for Validation"""
class UserValidationResultTests(TestCase):
"""Tests for UserValidationResult"""

@classmethod
def setUpClass(cls):
Expand All @@ -22,7 +22,7 @@ def test_str(self):
self.assertEqual(str(self.get_validation_instance('valid_name')), "<User validation>")

def test_properties(self):
"""Test properties on Validation model"""
"""Test properties on UserValidationResult model"""
test_cases = [
('invalid_name', 'Invalid name', 'name'),
('valid_name', '', 'name'),
Expand All @@ -39,4 +39,4 @@ def test_properties(self):
self.assertEqual(validation.username, expected_value)

def get_validation_instance(self, key):
return Validation(self.validation_responses.get(key, {}))
return UserValidationResult(self.validation_responses.get(key, {}))

0 comments on commit 28019b0

Please sign in to comment.