Пример #1
0
    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)
Пример #2
0
    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')],
                         )
Пример #3
0
 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)
Пример #4
0
 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")
Пример #5
0
    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")
Пример #6
0
    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')]},
                         )