def test_ok(self, mocker: MockFixture,
                fake_model_data_provider: ModelDataProvider):
        fake_field_name = mocker.Mock()
        fake_field_value = mocker.Mock()
        fake_operator = 'test_operator'
        fake_operator_func = mocker.Mock()
        mocker.patch.object(fake_model_data_provider, 'filter_operators',
                            dict(test_operator=fake_operator_func))
        mocked_get_comparison_operator = mocker.patch.object(
            fake_model_data_provider,
            'get_comparison_operator',
            return_value=fake_operator)
        mocked_get_table_field = mocker.patch.object(fake_model_data_provider,
                                                     '_get_table_field')

        compared_field_where = fake_model_data_provider.get_field_where(
            fake_field_name, fake_field_value)
        expected_field_where = fake_operator_func.return_value

        assert compared_field_where == expected_field_where

        mocked_get_comparison_operator.assert_called_once_with(
            fake_field_name, fake_field_value)
        mocked_get_table_field.assert_called_once_with(fake_field_name)
        fake_operator_func.assert_called_once_with(
            mocked_get_table_field.return_value, fake_field_value)
    async def test_ok(self, mocker: MockFixture,
                      fake_model_data_provider: ModelDataProvider):
        fake_filter_name = mocker.Mock()
        mocked_sub = mocker.patch('re.sub')

        compared_result = fake_model_data_provider.remove_comparison_suffix(
            fake_filter_name)
        expected_result = mocked_sub.return_value

        assert compared_result == expected_result

        mocked_sub.assert_called_once_with(
            '__({})$'.format(fake_model_data_provider.COMPARISON_SIGNS), '',
            fake_filter_name)
    async def test_ok_signs(self, mocker: MockFixture,
                            fake_model_data_provider: ModelDataProvider):
        fake_filter_name = mocker.Mock()
        fake_filter_value = mocker.Mock()
        mocked_search = mocker.patch('re.search')

        compared_operator = fake_model_data_provider.get_comparison_operator(
            fake_filter_name, fake_filter_value)
        expected_operator = mocked_search.return_value.group.return_value

        assert compared_operator == expected_operator

        mocked_search.assert_called_once_with(
            '__({})$'.format(fake_model_data_provider.COMPARISON_SIGNS),
            fake_filter_name)
        mocked_search.return_value.group.assert_called_once_with(1)
    def test_ok(self, mocker: MockFixture,
                fake_model_data_provider: ModelDataProvider):
        fake_model = mocker.patch.object(fake_model_data_provider, 'model')
        fake_field_name = 'test'
        mocked_remove_comparison_suffix = mocker.patch.object(
            fake_model_data_provider,
            'remove_comparison_suffix',
            return_value=fake_field_name)

        compared_field = fake_model_data_provider._get_table_field(
            fake_field_name)
        expected_field = getattr(fake_model,
                                 mocked_remove_comparison_suffix.return_value)

        assert compared_field == expected_field
        mocked_remove_comparison_suffix.assert_called_once_with(
            fake_field_name)
    async def test_ok_in(self, mocker: MockFixture,
                         fake_model_data_provider: ModelDataProvider):
        fake_filter_name = mocker.Mock()
        fake_filter_value = mocker.Mock(spec=list)
        fake_in = mocker.patch.object(fake_model_data_provider,
                                      'COMPARISON_OPERATOR_IN')
        mocked_search = mocker.patch('re.search', return_value=None)

        compared_operator = fake_model_data_provider.get_comparison_operator(
            fake_filter_name, fake_filter_value)
        expected_operator = fake_in

        assert compared_operator == expected_operator

        mocked_search.assert_called_once_with(
            '__({})$'.format(fake_model_data_provider.COMPARISON_SIGNS),
            fake_filter_name)
def fake_model_data_provider(mocker: MockFixture):
    return ModelDataProvider()