示例#1
0
    def test_model_filter_in_notsupported(self):
        '''This test case ensures in filter raises an exception if ref_value is not a list.'''

        model = Mock()
        model.id = Column("id", Integer)

        model_filter = ModelFilter(model.id, "invalid list", ModelFilter.IN)

        query = Mock()
        query._primary_entity = query
        query.selectable = model.id.table

        with self.assertRaises(FantasticoNotSupportedError):
            model_filter.build(query)
示例#2
0
    def test_model_filter_in_notsupported(self):
        '''This test case ensures in filter raises an exception if ref_value is not a list.'''

        model = Mock()
        model.id = Column("id", Integer)

        model_filter = ModelFilter(model.id, "invalid list", ModelFilter.IN)

        query = Mock()
        query._primary_entity = query
        query.selectable = model.id.table

        with self.assertRaises(FantasticoNotSupportedError):
            model_filter.build(query)
示例#3
0
    def test_model_filter_ok(self):
        '''This test case ensures model filter can correctly enrich a given query with the right filters for
        all supported operations.'''

        expected_result = Mock()

        model = Mock()
        model.id = Column("id", Integer)
        model.id.like = Mock(return_value=expected_result)
        model.id.in_ = Mock(return_value=expected_result)

        query = Mock()

        model.id.table = Mock()
        query._primary_entity = query
        query.selectable = model.id.table

        query.filter = lambda *args, **kwargs: expected_result

        for operation in ModelFilter.get_supported_operations():
            ref_value = 1

            if operation == ModelFilter.IN:
                ref_value = [ref_value]

            model_filter = ModelFilter(model.id, ref_value, operation)

            new_query = model_filter.build(query)

            self.assertEqual(model.id, model_filter.column)
            self.assertEqual(operation, model_filter.operation)
            self.assertEqual(expected_result, new_query)
示例#4
0
    def test_model_filter_noquery(self):
        '''This test case ensures no exception occurs if the underlining query is None.'''

        model = Mock()

        model_filter = ModelFilter(model.id, 1, "gt")
        self.assertIsNone(model_filter.build(None))
示例#5
0
    def test_model_filter_ok(self):
        '''This test case ensures model filter can correctly enrich a given query with the right filters for
        all supported operations.'''

        expected_result = Mock()

        model = Mock()
        model.id = Column("id", Integer)
        model.id.like = Mock(return_value=expected_result)
        model.id.in_ = Mock(return_value=expected_result)

        query = Mock()
        
        model.id.table = Mock()
        query._primary_entity = query       
        query.selectable = model.id.table
         
        query.filter = lambda *args, **kwargs: expected_result

        for operation in ModelFilter.get_supported_operations():
            ref_value = 1

            if operation == ModelFilter.IN:
                ref_value = [ref_value]

            model_filter = ModelFilter(model.id, ref_value, operation)
                        
            new_query = model_filter.build(query)

            self.assertEqual(model.id, model_filter.column)
            self.assertEqual(operation, model_filter.operation)
            self.assertEqual(expected_result, new_query)
示例#6
0
    def test_model_filter_noquery(self):
        '''This test case ensures no exception occurs if the underlining query is None.'''

        model = Mock()

        model_filter = ModelFilter(model.id, 1, "gt")
        self.assertIsNone(model_filter.build(None))