Ejemplo n.º 1
0
 def test_order_with_respect_to_multiple(self):
     hawaiian_pizza = Pizza.objects.create(name="Hawaiian Pizza")
     napoli_pizza = Pizza.objects.create(name="Napoli")
     mozarella = Topping.objects.create(name="mozarella")
     pineapple = Topping.objects.create(name="Pineapple")
     PizzaToppingsThroughModel.objects.create(pizza=napoli_pizza,
                                              topping=mozarella)
     PizzaToppingsThroughModel.objects.bulk_create([
         PizzaToppingsThroughModel(pizza=hawaiian_pizza, topping=mozarella),
         PizzaToppingsThroughModel(pizza=hawaiian_pizza, topping=pineapple),
     ])
     self.assertSequenceEqual(
         PizzaToppingsThroughModel.objects.filter(
             pizza=hawaiian_pizza).values_list("order", flat=True),
         [0, 1],
     )
Ejemplo n.º 2
0
 def test_order_with_respect_to(self):
     hawaiian_pizza = Pizza.objects.create(name="Hawaiian Pizza")
     napoli_pizza = Pizza.objects.create(name="Napoli")
     topping = Topping.objects.create(name="mozarella")
     PizzaToppingsThroughModel.objects.create(pizza=napoli_pizza,
                                              topping=topping)
     PizzaToppingsThroughModel.objects.bulk_create(
         [PizzaToppingsThroughModel(pizza=hawaiian_pizza, topping=topping)])
     self.assertEqual(
         PizzaToppingsThroughModel.objects.get(pizza=hawaiian_pizza).order,
         0)
Ejemplo n.º 3
0
 def setUp(self):
     self.t1 = Topping.objects.create(name='tomatoe')
     self.t2 = Topping.objects.create(name='mozarella')
     self.t3 = Topping.objects.create(name='anchovy')
     self.t4 = Topping.objects.create(name='mushrooms')
     self.t5 = Topping.objects.create(name='ham')
     self.p1 = Pizza.objects.create(name='Napoli') # tomatoe, mozarella, anchovy
     self.p2 = Pizza.objects.create(name='Regina') # tomatoe, mozarella, mushrooms, ham
     # Now put the toppings on the pizza
     self.p1_t1 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t1)
     self.p1_t1.save()
     self.p1_t2 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t2)
     self.p1_t2.save()
     self.p1_t3 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t3)
     self.p1_t3.save()
     self.p2_t1 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t1)
     self.p2_t1.save()
     self.p2_t2 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t2)
     self.p2_t2.save()
     self.p2_t3 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t4)
     self.p2_t3.save()
     self.p2_t4 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t5)
     self.p2_t4.save()
Ejemplo n.º 4
0
 def setUp(self):
     self.t1 = Topping.objects.create(name="tomatoe")
     self.t2 = Topping.objects.create(name="mozarella")
     self.t3 = Topping.objects.create(name="anchovy")
     self.t4 = Topping.objects.create(name="mushrooms")
     self.t5 = Topping.objects.create(name="ham")
     self.p1 = Pizza.objects.create(
         name="Napoli")  # tomatoe, mozarella, anchovy
     self.p2 = Pizza.objects.create(
         name="Regina")  # tomatoe, mozarella, mushrooms, ham
     # Now put the toppings on the pizza
     self.p1_t1 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t1)
     self.p1_t1.save()
     self.p1_t2 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t2)
     self.p1_t2.save()
     self.p1_t3 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t3)
     self.p1_t3.save()
     self.p2_t1 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t1)
     self.p2_t1.save()
     self.p2_t2 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t2)
     self.p2_t2.save()
     self.p2_t3 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t4)
     self.p2_t3.save()
     self.p2_t4 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t5)
     self.p2_t4.save()
Ejemplo n.º 5
0
class OrderWithRespectToTestsManyToMany(TestCase):
    def setUp(self):
        self.t1 = Topping.objects.create(name="tomatoe")
        self.t2 = Topping.objects.create(name="mozarella")
        self.t3 = Topping.objects.create(name="anchovy")
        self.t4 = Topping.objects.create(name="mushrooms")
        self.t5 = Topping.objects.create(name="ham")
        self.p1 = Pizza.objects.create(
            name="Napoli")  # tomatoe, mozarella, anchovy
        self.p2 = Pizza.objects.create(
            name="Regina")  # tomatoe, mozarella, mushrooms, ham
        # Now put the toppings on the pizza
        self.p1_t1 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t1)
        self.p1_t1.save()
        self.p1_t2 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t2)
        self.p1_t2.save()
        self.p1_t3 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t3)
        self.p1_t3.save()
        self.p2_t1 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t1)
        self.p2_t1.save()
        self.p2_t2 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t2)
        self.p2_t2.save()
        self.p2_t3 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t4)
        self.p2_t3.save()
        self.p2_t4 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t5)
        self.p2_t4.save()

    def test_saved_order(self):
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t1.topping.pk, 0),
                (self.p1_t2.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t1.topping.pk, 0),
                (self.p2_t2.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_swap(self):
        with self.assertRaises(ValueError):
            self.p1_t1.swap(self.p2_t1)

    def test_previous(self):
        self.assertEqual(self.p1_t2.previous(), self.p1_t1)

    def test_previous_first(self):
        self.assertEqual(self.p2_t1.previous(), None)

    def test_down(self):
        self.assertEqual(self.p2_t1.next(), self.p2_t2)

    def test_down_last(self):
        self.assertEqual(self.p1_t3.next(), None)

    def test_up(self):
        self.p1_t2.up()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t2.topping.pk, 0),
                (self.p1_t1.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t1.topping.pk, 0),
                (self.p2_t2.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_down(self):
        self.p2_t1.down()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t1.topping.pk, 0),
                (self.p1_t2.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t2.topping.pk, 0),
                (self.p2_t1.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_to(self):
        self.p2_t1.to(1)
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t1.topping.pk, 0),
                (self.p1_t2.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t2.topping.pk, 0),
                (self.p2_t1.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_above(self):
        with self.assertRaises(ValueError):
            self.p1_t2.above(self.p2_t1)
        self.p1_t2.above(self.p1_t1)
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t2.topping.pk, 0),
                (self.p1_t1.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t1.topping.pk, 0),
                (self.p2_t2.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_below(self):
        with self.assertRaises(ValueError):
            self.p2_t1.below(self.p1_t2)
        self.p2_t1.below(self.p2_t2)
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t1.topping.pk, 0),
                (self.p1_t2.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t2.topping.pk, 0),
                (self.p2_t1.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_top(self):
        self.p1_t3.top()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t3.topping.pk, 0),
                (self.p1_t1.topping.pk, 1),
                (self.p1_t2.topping.pk, 2),
                (self.p2_t1.topping.pk, 0),
                (self.p2_t2.topping.pk, 1),
                (self.p2_t3.topping.pk, 2),
                (self.p2_t4.topping.pk, 3),
            ],
        )

    def test_bottom(self):
        self.p2_t1.bottom()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list(
                "topping__pk", "order"),
            [
                (self.p1_t1.topping.pk, 0),
                (self.p1_t2.topping.pk, 1),
                (self.p1_t3.topping.pk, 2),
                (self.p2_t2.topping.pk, 0),
                (self.p2_t3.topping.pk, 1),
                (self.p2_t4.topping.pk, 2),
                (self.p2_t1.topping.pk, 3),
            ],
        )
Ejemplo n.º 6
0
 def setUp(self):
     self.t1 = Topping.objects.create(name='tomatoe')
     self.t2 = Topping.objects.create(name='mozarella')
     self.t3 = Topping.objects.create(name='anchovy')
     self.t4 = Topping.objects.create(name='mushrooms')
     self.t5 = Topping.objects.create(name='ham')
     self.p1 = Pizza.objects.create(
         name='Napoli')  # tomatoe, mozarella, anchovy
     self.p2 = Pizza.objects.create(
         name='Regina')  # tomatoe, mozarella, mushrooms, ham
     # Now put the toppings on the pizza
     self.p1_t1 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t1)
     self.p1_t1.save()
     self.p1_t2 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t2)
     self.p1_t2.save()
     self.p1_t3 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t3)
     self.p1_t3.save()
     self.p2_t1 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t1)
     self.p2_t1.save()
     self.p2_t2 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t2)
     self.p2_t2.save()
     self.p2_t3 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t4)
     self.p2_t3.save()
     self.p2_t4 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t5)
     self.p2_t4.save()
Ejemplo n.º 7
0
class OrderWithRespectToTestsManyToMany(TestCase):
    def setUp(self):
        self.t1 = Topping.objects.create(name='tomatoe')
        self.t2 = Topping.objects.create(name='mozarella')
        self.t3 = Topping.objects.create(name='anchovy')
        self.t4 = Topping.objects.create(name='mushrooms')
        self.t5 = Topping.objects.create(name='ham')
        self.p1 = Pizza.objects.create(name='Napoli') # tomatoe, mozarella, anchovy
        self.p2 = Pizza.objects.create(name='Regina') # tomatoe, mozarella, mushrooms, ham
        # Now put the toppings on the pizza
        self.p1_t1 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t1)
        self.p1_t1.save()
        self.p1_t2 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t2)
        self.p1_t2.save()
        self.p1_t3 = PizzaToppingsThroughModel(pizza=self.p1, topping=self.t3)
        self.p1_t3.save()
        self.p2_t1 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t1)
        self.p2_t1.save()
        self.p2_t2 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t2)
        self.p2_t2.save()
        self.p2_t3 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t4)
        self.p2_t3.save()
        self.p2_t4 = PizzaToppingsThroughModel(pizza=self.p2, topping=self.t5)
        self.p2_t4.save()

    def test_saved_order(self):
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t1.topping.pk, 0), (self.p1_t2.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t1.topping.pk, 0), (self.p2_t2.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_swap(self):
        with self.assertRaises(ValueError):
            self.p1_t1.swap(self.p2_t1)

    def test_previous(self):
        self.assertEqual(self.p1_t2.previous(), self.p1_t1)

    def test_previous_first(self):
        self.assertEqual(self.p2_t1.previous(), None)

    def test_down(self):
        self.assertEqual(self.p2_t1.next(), self.p2_t2)

    def test_down_last(self):
        self.assertEqual(self.p1_t3.next(), None)

    def test_up(self):
        self.p1_t2.up()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t2.topping.pk, 0), (self.p1_t1.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t1.topping.pk, 0), (self.p2_t2.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_down(self):
        self.p2_t1.down()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t1.topping.pk, 0), (self.p1_t2.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t2.topping.pk, 0), (self.p2_t1.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_to(self):
        self.p2_t1.to(1)
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t1.topping.pk, 0), (self.p1_t2.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t2.topping.pk, 0), (self.p2_t1.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_above(self):
        with self.assertRaises(ValueError):
            self.p1_t2.above(self.p2_t1)
        self.p1_t2.above(self.p1_t1)
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t2.topping.pk, 0), (self.p1_t1.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t1.topping.pk, 0), (self.p2_t2.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_below(self):
        with self.assertRaises(ValueError):
            self.p2_t1.below(self.p1_t2)
        self.p2_t1.below(self.p2_t2)
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t1.topping.pk, 0), (self.p1_t2.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t2.topping.pk, 0), (self.p2_t1.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_top(self):
        self.p1_t3.top()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t3.topping.pk, 0), (self.p1_t1.topping.pk, 1), (self.p1_t2.topping.pk, 2),
            (self.p2_t1.topping.pk, 0), (self.p2_t2.topping.pk, 1), (self.p2_t3.topping.pk, 2), (self.p2_t4.topping.pk, 3)
        ])

    def test_bottom(self):
        self.p2_t1.bottom()
        self.assertSequenceEqual(
            PizzaToppingsThroughModel.objects.values_list('topping__pk', 'order'), [
            (self.p1_t1.topping.pk, 0), (self.p1_t2.topping.pk, 1), (self.p1_t3.topping.pk, 2),
            (self.p2_t2.topping.pk, 0), (self.p2_t3.topping.pk, 1), (self.p2_t4.topping.pk, 2), (self.p2_t1.topping.pk, 3)
        ])