Files
edx-platform/cms/djangoapps/models/settings/tests/test_settings.py

432 lines
14 KiB
Python

"""
Tests for the advanced settings
"""
import unittest
import ddt
from cms.djangoapps.models.settings.course_metadata import CourseMetadata
working_config_block = {
"teams_configuration": {
"value": {
"max_team_size": 4,
"topics": [
{
"max_team_size": 5,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
},
{
"id": "open_managed_topic_1_id",
"type": "open_managed",
"description": "Open Managed Topic 1 desc",
"name": "Open Managed Topic 1 Name"
}
]
}
}
}
config_block_negative_team_size = {
"teams_configuration": {
"value": {
"max_team_size": -1,
"topics": [
{
"max_team_size": 5,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_negative_local_team_size = {
"teams_configuration": {
"value": {
"max_team_size": 2,
"topics": [
{
"max_team_size": -4,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_duplicate_id = {
"teams_configuration": {
"value": {
"max_team_size": 2,
"topics": [
{
"max_team_size": 4,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_1_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_negative_team_size_dupe_id = {
"teams_configuration": {
"value": {
"max_team_size": 2,
"topics": [
{
"max_team_size": -4,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_2_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_missing_name = {
"teams_configuration": {
"value": {
"max_team_size": 2,
"topics": [
{
"max_team_size": 4,
"name": "",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_extra_attribute = {
"teams_configuration": {
"value": {
"max_team_size": 2,
"topics": [
{
"max_team_size": 4,
"name": "Topic 1 name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed",
"foo": "bar"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_unrecognized_teamset_type = {
"teams_configuration": {
"value": {
"max_team_size": 2,
"team_sets": [
{
"max_team_size": 4,
"name": "Topic 1 name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "foo",
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_no_global_max_team_size = {
"teams_configuration": {
"value": {
"topics": [
{
"max_team_size": 5,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
{
"id": "topic_2_id",
"name": "Topic 2 Name",
"description": "Topic 2 desc"
},
{
"id": "topic_3_id",
"name": "Topic 3 Name",
"description": "Topic 3 desc"
},
{
"id": "private_topic_1_id",
"type": "private_managed",
"description": "Private Topic 1 desc",
"name": "Private Topic 1 Name"
},
{
"id": "private_topic_2_id",
"type": "private_managed",
"description": "Private Topic 2 desc",
"name": "Private Topic 2 Name"
}
]
}
}
}
config_block_course_max_team_size = {
"teams_configuration": {
"value": {
"max_team_size": 501,
"topics": [
{
"max_team_size": 500,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
]
}
}
}
config_block_teamset_max_team_size = {
"teams_configuration": {
"value": {
"max_team_size": 500,
"topics": [
{
"max_team_size": 501,
"name": "Topic 1 Name",
"id": "topic_1_id",
"description": "Topic 1 desc",
"type": "public_managed"
},
]
}
}
}
@ddt.ddt
class TeamsConfigurationTests(unittest.TestCase):
"""
Test class for advanced settings of teams
"""
@ddt.data(
(working_config_block, set()),
(config_block_negative_team_size, {'max_team_size must be greater than zero'}),
(config_block_negative_local_team_size, {'max_team_size must be greater than zero'}),
(config_block_duplicate_id, {'duplicate ids: topic_1_id'}),
(
config_block_negative_team_size_dupe_id,
{'duplicate ids: topic_2_id', 'max_team_size must be greater than zero'}
),
(config_block_missing_name, {'name attribute must not be empty'}),
(config_block_extra_attribute, {'extra keys: foo'}),
(config_block_unrecognized_teamset_type, {'type foo is invalid'}),
(config_block_no_global_max_team_size, set()),
(config_block_course_max_team_size, {'max_team_size cannot be greater than 500'}),
(config_block_teamset_max_team_size, {'max_team_size cannot be greater than 500'})
)
@ddt.unpack
def test_team_settings(self, config_block, error_message):
result = CourseMetadata.validate_team_settings(config_block)
self.assertEqual(len(result), len(error_message))
if len(error_message) > 0:
for res in result:
self.assertIn(res['message'], error_message)