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)
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)
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)
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))
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)
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))