Commit 7f4dbdc0 authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Revert "Splitted expressions tests into smaller methods"

This reverts commit c2532825.
parent c2150d4d
Loading
Loading
Loading
Loading
+15 −28
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ from .models import Company, Employee


class ExpressionsTests(TestCase):
    def setUp(self):
    def test_filter(self):
        Company.objects.create(
            name="Example Inc.", num_employees=2300, num_chairs=5, is_large=False,
            ceo=Employee.objects.create(firstname="Joe", lastname="Smith")
@@ -23,8 +23,6 @@ class ExpressionsTests(TestCase):
            ceo=Employee.objects.create(firstname="Max", lastname="Mustermann")
        )


    def test_filter(self):
        company_query = Company.objects.values(
            "name", "num_employees", "num_chairs", "is_large"
        ).order_by(
@@ -160,13 +158,6 @@ class ExpressionsTests(TestCase):
            ],
            lambda o: o,
        )

    def test_comparisons(self):
        company_query = Company.objects.values(
            "name", "num_employees", "num_chairs", "is_large"
        ).order_by(
            "name", "num_employees", "num_chairs", "is_large"
        )
        # The comparison operators and the bitwise unary not can be used
        # to assign to boolean fields
        for expression in (
@@ -189,19 +180,19 @@ class ExpressionsTests(TestCase):
            self.assertQuerysetEqual(
                company_query, [
                    {
                        'num_chairs': 5,
                        'num_chairs': 5294600,
                        'name': 'Example Inc.',
                        'num_employees': 2300,
                        'is_large': True
                    },
                    {
                        'num_chairs': 4,
                        'num_chairs': 15,
                        'name': 'Foobar Ltd.',
                        'num_employees': 3,
                        'is_large': False
                    },
                    {
                        'num_chairs': 1,
                        'num_chairs': 1088,
                        'name': 'Test GmbH',
                        'num_employees': 32,
                        'is_large': False
@@ -239,31 +230,28 @@ class ExpressionsTests(TestCase):
            lambda c: six.text_type(c.point_of_contact),
        )

    def test_joins(self):
        c = Company.objects.all()[0]
        c.point_of_contact = Employee.objects.create(
            firstname="Guido", lastname="van Rossum")
        old_ceo = c.ceo
        c.ceo = c.point_of_contact
        c.point_of_contact = Employee.objects.create(firstname="Guido", lastname="van Rossum")
        c.save()

        # F Expressions can also span joins
        self.assertQuerysetEqual(
            Company.objects.filter(
                ceo__firstname=F("point_of_contact__firstname")),
            [
                "Example Inc.",
            Company.objects.filter(ceo__firstname=F("point_of_contact__firstname")), [
                "Foobar Ltd.",
                "Test GmbH",
            ],
            lambda c: c.name
        )
        c.ceo = old_ceo
        c.save()
        # Guido is point of contanct but not CEO. For the null cases we do
        # not generate a match.

        Company.objects.exclude(
            ceo__firstname=F("point_of_contact__firstname")
        ).update(name="foo")
        self.assertEqual(Company.objects.filter(name="foo").count(), 1)
        self.assertEqual(
            Company.objects.exclude(
                ceo__firstname=F('point_of_contact__firstname')
            ).get().name,
            "foo",
        )

        self.assertRaises(FieldError,
            lambda: Company.objects.exclude(
@@ -271,7 +259,6 @@ class ExpressionsTests(TestCase):
            ).update(name=F('point_of_contact__lastname'))
        )

    def test_save(self):
        # F expressions can be used to update attributes on single objects
        test_gmbh = Company.objects.get(name="Test GmbH")
        self.assertEqual(test_gmbh.num_employees, 32)