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_get_results(self): rq = RelationQuery( 'src', type('DstModel', (), {'__tablename__': 'dst_table'}), 'attribute') rq._build_query = MagicMock() rq._build_query.return_value.all = lambda: ['a', 'b', 'c'] rq._flatten_join_query_result = MagicMock( side_effect=lambda x, y: 2 * x) rq.add_relation_table_columns = False self.assertEqual(['a', 'b', 'c'], rq.get_results()) rq.add_relation_table_columns = True self.assertEqual(['aa', 'bb', 'cc'], rq.get_results()) rq._flatten_join_query_result.assert_has_calls([ call('a', 'mocked_table'), call('b', 'mocked_table'), call('c', 'mocked_table'), ])
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)