def test_returns_model_if_string_provided(self): # pylint: disable=no-self-use """string-to-model returns correct model for single string""" uid = "2d133482b3214a119f55c3060d882ceb" CourseFactory.create() f = SMMF(model=EdxAuthor, lookup="edx_uid") ms = f.to_internal_value(uid) assert len(ms) == 1 assert ms[0].edx_uid == uid
def test_returns_string_for_all_objects(self): # pylint: disable=no-self-use """model-to-string returns correct strings""" e1 = EdxAuthorFactory.create() e2 = EdxAuthorFactory.create() co = CourseFactory.create() co.instructors.add(e1) co.instructors.add(e2) f = SMMF(model=EdxAuthor, lookup="edx_uid") assert sorted([str(e1), str(e2)]) == sorted(f.to_representation(co.instructors))
def test_returns_models_if_list_provided(self): # pylint: disable=no-self-use """string-to-model returns correct model for list""" uid = "2d133482b3214a119f55c3060d882ceb" uid2 = "3d133482b3214a119f55c3060d882ceb" CourseFactory.create() f = SMMF(model=EdxAuthor, lookup="edx_uid") ms = f.to_internal_value([uid, uid2]) assert len(ms) == 2 assert ms[0].edx_uid != ms[1].edx_uid assert ms[0].edx_uid in [uid, uid2] assert ms[1].edx_uid in [uid, uid2]
def test_errors_on_invalid_input(self): # pylint: disable=no-self-use """Only deserialize known, supported types.""" CourseFactory.create() f = SMMF(model=EdxAuthor, lookup="edx_uid") with pytest.raises(ValidationError): f.to_internal_value(dict())