def test_update_many_to_many_nested_empty_success(self): company = CompanySerializer( data={ "name": "Company name", "managers": [{ "user": { "username": "******" }, "level": "high" }] }) company.is_valid(raise_exception=True) company.save() self.assertIsNotNone(company.instance) data = copy(company.data) self.assertEqual(len(data.get('managers')), 1) self.assertEqual(data.get('managers')[0]["level"], "high") self.assertEqual( data.get('managers')[0]["user"]["username"], "Some name") data["managers"] = None updated_company = CompanySerializer(instance=company.instance, data=data) with self.assertRaises(ValidationError): updated_company.is_valid(raise_exception=True)
def test_create_many_to_many_nested_fail(self): company = CompanySerializer( data={"name": "Company name", "managers": [{"user": {"username": "******"}, "level": "high"}]} ) with self.assertRaises(ValidationError) as verror: company.is_valid(raise_exception=True) error = verror.exception self.assertIn("managers", error.detail) self.assertEqual(len(error.detail["managers"]), 1) self.assertIn("user", error.detail["managers"][0]) self.assertEqual(error.detail["managers"][0]["user"], {'username': [ ErrorDetail(string="Username shouldn't be greater than 20 symbols", code='invalid')]}, ) company = CompanySerializer( data={"name": "Company name", "managers": [{"user": {"username": "******"}, "level": "super high"}]} ) company.is_valid(raise_exception=True) with self.assertRaises(ValidationError) as verror: company.save() error = verror.exception self.assertIn("managers", error.detail) self.assertEqual(len(error.detail["managers"]), 1) self.assertIn("level", error.detail["managers"][0]) self.assertEqual(error.detail["managers"][0]["level"], [ErrorDetail(string="Level shouldn't be super high", code='invalid')], )
def test_create_generic_relation_nested_success(self): company = CompanySerializer( data={"name": "Company name", "comments": [{"text": "Some comment text"}]} ) company.is_valid(raise_exception=True) company.save() self.assertIsNotNone(company.instance) data = company.data self.assertEqual(len(data.get('comments')), 1)
def test_create_many_to_many_nested_success(self): company = CompanySerializer( data={"name": "Company name", "managers": [{"user": {"username": "******"}, "level": "high"}]} ) company.is_valid(raise_exception=True) company.save() self.assertIsNotNone(company.instance) data = company.data self.assertEqual(len(data.get('managers')), 1) self.assertEqual(data.get('managers')[0]["user"]["username"], "Some user name")
def test_update_generic_relation_nested_success(self): company = CompanySerializer(data={ "name": "Company name", "comments": [{ "text": "Some comment text" }] }) company.is_valid(raise_exception=True) company.save() self.assertIsNotNone(company.instance) data = copy(company.data) self.assertEqual(len(data.get('comments')), 1) self.assertEqual(data.get('comments')[0]["text"], "Some comment text") data["comments"][0]["text"] = "Another text" updated_company = CompanySerializer(instance=company.instance, data=data) updated_company.is_valid(raise_exception=True) updated_company.save() self.assertIsNotNone(updated_company.instance) data = copy(company.data) self.assertEqual(len(data.get('comments')), 1) self.assertEqual(data.get('comments')[0]["text"], "Another text")
def test_create_generic_relation_nested_fail(self): company = CompanySerializer( data={"name": "Company name", "comments": [{"text": "Some comment text with len greater 20"}]} ) company.is_valid(raise_exception=True) with self.assertRaises(ValidationError) as verror: company.save() error = verror.exception self.assertIn("comments", error.detail) self.assertEqual(len(error.detail["comments"]), 1) self.assertIn("text", error.detail["comments"][0]) self.assertEqual(error.detail["comments"][0], {'text': [ ErrorDetail(string="Text shouldn't be greater than 20 symbols", code='invalid')]}, ) company = CompanySerializer( data={"name": "Company name", "comments": [{"text": "Some comment text with len greater 20"}, {"text": "Some comment text with len greater 20"}]} ) company.is_valid(raise_exception=True) with self.assertRaises(ValidationError) as verror: company.save() error = verror.exception self.assertIn("comments", error.detail) self.assertEqual(len(error.detail["comments"]), 2) self.assertIn("text", error.detail["comments"][0]) self.assertEqual(error.detail["comments"][0], {'text': [ ErrorDetail(string="Text shouldn't be greater than 20 symbols", code='invalid')]}, )