Ref: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3885760525/Open+Managed+Group+Type
432 lines
14 KiB
Python
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)
|