def test_add_relation_table_filters(self, mock_active, mock_deleted): mock_src = type( 'MockSrc', (), { '_id': 'the id', 'volgnummer': 'the volgnummer', '__has_states__': False, })() mock_relation = type('MockRel', (), { 'src_or_dst_id': 'the id', 'src_or_dst_volgnummer': 'nonmatching' }) query = MagicMock() rq = RelationQuery(mock_src, 'dst', 'attribute') rq.src_side = 'src_or_dst' result = rq._add_relation_table_filters(query, mock_relation) mock_deleted.assert_called_with(query, mock_relation) mock_active.assert_called_with(mock_deleted.return_value, mock_relation) mock_active.return_value.filter.assert_called_with( True) # Check on _id self.assertEqual(mock_active.return_value.filter.return_value, result) # Check with states, but not active mock_active.reset_mock() setattr(mock_src, '__has_states__', True) rq.kwargs['active'] = False result = rq._add_relation_table_filters(query, mock_relation) mock_active.assert_not_called() mock_deleted.return_value.filter.return_value.filter.assert_called_with( False) # Check on volgnummer self.assertEqual( mock_deleted.return_value.filter.return_value.filter.return_value, result)
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)