Beispiel #1
0
    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)
Beispiel #2
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 #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)