示例#1
0
    def test_query_values_of_nested_field(self):
        with mocked_relations(Manufacturer, Car):
            make = Manufacturer(name='vw')
            self.mock_set.add(make)

            polo = Car(make=make, model='polo', speed=240)
            golf = Car(make=make, model='golf', speed=260)

            polo_white = CarVariation(car=polo, color='white')
            golf_white = CarVariation(car=golf, color='white')
            golf_black = CarVariation(car=golf, color='black')

            make.car_set = MockSet(polo, golf)
            polo.variations = MockSet(polo_white)
            golf.variations = MockSet(golf_white, golf_black)

            data = list(
                self.mock_set.values('car__model', 'car__variations__color',
                                     'name'))
            assert {
                'name': make.name,
                'car__model': polo.model,
                'car__variations__color': polo_white.color
            } in data
            assert {
                'name': make.name,
                'car__model': golf.model,
                'car__variations__color': golf_white.color
            } in data
            assert {
                'name': make.name,
                'car__model': golf.model,
                'car__variations__color': golf_black.color
            } in data
示例#2
0
    def test_set_explicit_collection(self):
        m = Manufacturer()
        m.car_set.add(Car(speed=95))

        car = Car(speed=100)
        m.car_set = MockSet(car)

        self.assertIs(m.car_set.first(), car)
示例#3
0
    def test_set_explicit_collection(self):
        m = Manufacturer()
        m.car_set.add(Car(speed=95))

        car = Car(speed=100)
        m.car_set = MockSet(car)

        self.assertIs(m.car_set.first(), car)
示例#4
0
    def test_query_filters_related_model_objects(self):
        item_1 = Car(make=Manufacturer(name='apple'))
        item_2 = Car(make=Manufacturer(name='banana'))
        item_3 = Car(make=Manufacturer(name='cherry'))

        self.mock_set.add(item_1, item_2, item_3)
        results = list(self.mock_set.filter(make__name='cherry'))

        assert results == [item_3]
    def test_query_aggregate_on_related_field(self):
        with mocked_relations(Manufacturer):
            cars = [Car(speed=1), Car(speed=2), Car(speed=3)]

            make = Manufacturer()
            make.car_set = MockSet(*cars)

            self.mock_set.add(make)

            result = self.mock_set.aggregate(Avg('car__speed'))
            assert result['car__speed__avg'] == sum([c.speed for c in cars]) / len(cars)
示例#6
0
    def test_mock_is_removed(self):
        m = Manufacturer()

        with patch.object(Manufacturer, 'car_set', MockOneToManyMap(Manufacturer.car_set)):
            m.car_set = MockSet(Car(speed=95))
            self.assertEqual(1, m.car_set.count())

        with self.assertRaisesRegexp(
                NotSupportedError,
                'Mock database tried to execute SQL for Car model'):
            m.car_set.count()
    def test_mock_is_removed(self):
        m = Manufacturer()

        with patch.object(Manufacturer, 'car_set', MockOneToManyMap(Manufacturer.car_set)):
            m.car_set = MockSet(Car(speed=95))
            self.assertEqual(1, m.car_set.count())

        with self.assertRaisesRegexp(
                NotSupportedError,
                'Mock database tried to execute SQL for Car model'):
            m.car_set.count()
示例#8
0
    def test_mocked_relations_reusing_patcher(self):
        patcher = mocked_relations(Manufacturer)
        with patcher:
            self.assertEqual(0, Manufacturer.objects.count())
            Manufacturer.objects.add(Manufacturer())
            self.assertEqual(1, Manufacturer.objects.count())

        with patcher:
            self.assertEqual(0, Manufacturer.objects.count())
            Manufacturer.objects.add(Manufacturer())
            self.assertEqual(1, Manufacturer.objects.count())
    def test_query_aggregate_on_related_field(self):
        with mocked_relations(Manufacturer):
            cars = [Car(speed=1), Car(speed=2), Car(speed=3)]

            make = Manufacturer()
            make.car_set = MockSet(*cars)

            self.mock_set.add(make)

            result = self.mock_set.aggregate(Avg('car__speed'))
            assert result['car__speed__avg'] == sum([c.speed for c in cars]) / len(cars)
示例#10
0
    def test_mocked_relations_context_manager(self):
        m = Manufacturer()

        with mocked_relations(Manufacturer):
            self.assertEqual(0, m.car_set.count())
            m.car_set.add(Car())
            self.assertEqual(1, m.car_set.count())
示例#11
0
    def test_not_mocked(self):
        m = Manufacturer()

        with self.assertRaisesRegexp(
                NotSupportedError,
                'Mock database tried to execute SQL for Car model'):
            m.car_set.count()
示例#12
0
    def test_mocked_relations_is_match_in_children(self):
        car = Car()
        manufacturer = Manufacturer()
        manufacturer.car_set.add(car)
        Manufacturer.objects.add(manufacturer)

        car_manufacturers = Manufacturer.objects.filter(car=car)

        self.assertEqual([manufacturer], list(car_manufacturers))
示例#13
0
 def test_mocked_relations_with_garbage_collection(self):
     self.longMessage = True
     for group_index in range(10):
         m = Manufacturer()
         self.assertEqual(0, m.car_set.count(),
                          'group_index: {}'.format(group_index))
         m.car_set.add(Car())
         self.assertEqual(1, m.car_set.count())
         del m
示例#14
0
    def test_query_values_of_nested_field(self):
        with mocked_relations(Manufacturer, Car):
            make = Manufacturer(name='vw')
            self.mock_set.add(make)

            polo = Car(make=make, model='polo', speed=240)
            golf = Car(make=make, model='golf', speed=260)

            polo_white = CarVariation(car=polo, color='white')
            golf_white = CarVariation(car=golf, color='white')
            golf_black = CarVariation(car=golf, color='black')

            make.car_set = MockSet(polo, golf)
            polo.variations = MockSet(polo_white)
            golf.variations = MockSet(golf_white, golf_black)

            data = list(self.mock_set.values('car__model', 'car__variations__color', 'name'))
            assert {'name': make.name, 'car__model': polo.model, 'car__variations__color': polo_white.color} in data
            assert {'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_white.color} in data
            assert {'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_black.color} in data
示例#15
0
    def test_create(self):
        m = Manufacturer()
        car = m.car_set.create(speed=95)

        self.assertIsInstance(car, Car)
        self.assertEqual(95, car.speed)
示例#16
0
    def test_mocked_relations_decorator(self):
        m = Manufacturer()

        self.assertEqual(0, m.car_set.count())
        m.car_set.add(Car())
        self.assertEqual(1, m.car_set.count())
示例#17
0
    def test_raises(self):
        """ Raises an error specific to the child class. """
        m = Manufacturer()

        with self.assertRaises(Car.DoesNotExist):
            m.car_set.get(speed=0)
示例#18
0
    def test_set_on_individual_object(self):
        m = Manufacturer()
        m.car_set.add(Car(speed=95))
        m2 = Manufacturer()

        self.assertEqual(0, m2.car_set.count())
示例#19
0
    def test_set(self):
        m = Manufacturer()
        car = Car(speed=95)
        m.car_set.add(car)

        self.assertIs(m.car_set.first(), car)
示例#20
0
    def test_not_set(self):
        m = Manufacturer()

        self.assertEqual(0, m.car_set.count())