Beispiel #1
0
    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)
Beispiel #2
0
    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'),
        ])
Beispiel #3
0
    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)