def test_get_relation_model(self, mock_gobmodel): class MockObj: def __init__(self, tablename): self.__tablename__ = tablename rq = RelationQuery(MockObj('src_table'), MockObj('dst_table'), 'attribute') with patch.dict(models, { 'rel_src_table_attribute': 'src model', 'rel_dst_table_attribute': 'dst model' }, clear=True): self.assertEqual('src model', rq._get_relation_model()) # Check if src side is dst model rq.src_side = 'dst' self.assertEqual('dst model', rq._get_relation_model())
def test_build_query(self): class MockDst: __tablename__ = 'catalog_collection' query = MagicMock() class MockRelModel: bronwaarde = 'bronwaarde' begin_geldigheid = type('Mock', (), {'label': lambda x: x}) eind_geldigheid = type('Mock', (), {'label': lambda x: x}) mock_dst = MockDst() rq = RelationQuery('src', mock_dst, 'attribute') rq.add_relation_table_columns = True rq._get_relation_model = MagicMock(return_value=MockRelModel()) rq._add_relation_table_filters = MagicMock() rq._add_dst_table_join = MagicMock() result = rq._build_query() mock_dst.query.set_catalog_collection.assert_called_with( 'catalog', 'collection') mock_relation_model = rq._get_relation_model.return_value mock_dst.query.select_from.assert_called_with(mock_relation_model) rq._add_relation_table_filters.assert_called_with( mock_dst.query.select_from.return_value, mock_relation_model) rq._add_dst_table_join.assert_called_with( rq._add_relation_table_filters.return_value, mock_relation_model) rq._add_dst_table_join.return_value.add_columns.assert_called_with( 'bronwaarde', 'begin_geldigheid_relatie', 'eind_geldigheid_relatie') self.assertEqual( rq._add_dst_table_join.return_value.add_columns.return_value, result) # Test when add_relation_table_columsn set to False rq._add_dst_table_join.return_value.add_columns.reset_mock() rq.add_relation_table_columns = False result = rq._build_query() rq._add_dst_table_join.return_value.add_columns.assert_not_called() self.assertEqual(rq._add_dst_table_join.return_value, result)
def test_build_query_sort(self): class MockDst: __tablename__ = 'catalog_collection' query = MagicMock() class MockRelModel: bronwaarde = 'bronwaarde' begin_geldigheid = type('Mock', (), {'label': lambda x: x}) eind_geldigheid = type('Mock', (), {'label': lambda x: x}) mock_dst = MockDst() rq = RelationQuery('src', mock_dst, 'attribute') rq.add_relation_table_columns = False rq._get_relation_model = MagicMock(return_value=MockRelModel()) rq._add_relation_table_filters = MagicMock() rq._add_dst_table_join = MagicMock() rq._add_sort = MagicMock() rq.kwargs = {'sort': ['column_asc']} result = rq._build_query() rq._add_sort.assert_called_with(rq._add_dst_table_join.return_value, ['column_asc']) self.assertEqual(rq._add_sort.return_value, result)