diff --git a/qt/python/CMakeLists.txt b/qt/python/CMakeLists.txt
index bb453e4c5d77a887550fb574a63b5ff8006f5cea..88c5126d5b5a36a7707dafcd8bd3d410deea5967 100644
--- a/qt/python/CMakeLists.txt
+++ b/qt/python/CMakeLists.txt
@@ -123,6 +123,7 @@ if(ENABLE_WORKBENCH OR ENABLE_WORKBENCH)
       mantidqt/widgets/codeeditor/test/test_multifileinterpreter_view.py
       mantidqt/widgets/codeeditor/tab_widget/test/test_codeeditor_tab_presenter.py
       mantidqt/widgets/codeeditor/tab_widget/test/test_codeeditor_tab_view.py
+      mantidqt/widgets/fitpropertybrowser/addfunctiondialog/test/test_addfunctiondialogpresenter.py
       mantidqt/widgets/instrumentview/test/test_instrumentview_io.py
       mantidqt/widgets/instrumentview/test/test_instrumentview_view.py
       mantidqt/widgets/plotconfigdialog/axestabwidget/test/test_axestabwidgetpresenter.py
diff --git a/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/presenter.py b/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/presenter.py
index d2ffb4ce84b048824fc6df2c2875a07d0971d9a5..73b6b8d98d23550afd42ee641af2999680d720a5 100644
--- a/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/presenter.py
+++ b/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/presenter.py
@@ -6,27 +6,22 @@
 # SPDX - License - Identifier: GPL - 3.0 +
 from __future__ import (absolute_import, unicode_literals)
 
-from qtpy.QtCore import Qt, Signal
-from qtpy.QtWidgets import QDialog
-
 from .view import AddFunctionDialogView
 
 
-class AddFunctionDialog(QDialog):
+class AddFunctionDialog(object):
     """
     Dialog to add function to fit property browser
     """
-    function_added = Signal(str)
 
     def __init__(self, parent = None, function_names = None, view=None):
-        super(AddFunctionDialog, self).__init__(parent)
         self.view = view if view else AddFunctionDialogView(parent, function_names)
-        self.view.ui.buttonBox.accepted.connect(self.action_add_function)
+        self.view.ui.buttonBox.accepted.connect(lambda: self.action_add_function())
 
     def action_add_function(self):
         current_function = self.view.ui.functionBox.currentText()
-        if self.view.ui.functionBox.findText(current_function, Qt.MatchExactly) != -1:
-            self.function_added.emit(current_function)
+        if self.view.is_text_in_function_list(current_function):
+            self.view.function_added.emit(current_function)
             self.view.accept()
         else:
             self.view.set_error_message("Function %s not found " % current_function)
diff --git a/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/test/test_addfunctiondialogpresenter.py b/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/test/test_addfunctiondialogpresenter.py
index 7cafd0b5d014218e860e64229cd823c70e23669d..b954e15eb25373eb6c74b91fdc88920e59a1a0ef 100644
--- a/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/test/test_addfunctiondialogpresenter.py
+++ b/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/test/test_addfunctiondialogpresenter.py
@@ -8,36 +8,31 @@
 
 import unittest
 
-from mantid.py3compat.mock import MagicMock, patch
-from mantidqt.utils.qt.testing import start_qapplication
+from mantid.py3compat.mock import patch
 from mantidqt.widgets.fitpropertybrowser.addfunctiondialog.presenter import AddFunctionDialog
 from testhelpers import assertRaisesNothing
 
 
-@start_qapplication
+@patch('mantidqt.widgets.fitpropertybrowser.addfunctiondialog.view.AddFunctionDialogView')
 class AddFunctionDialogPresenterTest(unittest.TestCase):
 
-    def test_initialization_does_not_raise(self):
-        assertRaisesNothing(self, AddFunctionDialog)
+    def test_initialization_does_not_raise(self, mock_view):
+        assertRaisesNothing(self, AddFunctionDialog, view=mock_view)
 
-    @patch('mantidqt.widgets.fitpropertybrowser.addfunctiondialog.presenter.AddFunctionDialog.function_added')
-    def test_add_function(self, function_added_mock):
-        dialog = AddFunctionDialog(function_names = ["Lorenzian", "Gaussian", "FlatBackground"])
-        dialog.view.accept = MagicMock()
-        with patch.object(dialog.view.ui.functionBox, 'currentText', lambda: "Gaussian"):
-            dialog.action_add_function()
-            function_added_mock.emit.assert_called_once_with("Gaussian")
-            self.assertEqual(1, dialog.view.accept.call_count)
-
-    @patch('mantidqt.widgets.fitpropertybrowser.addfunctiondialog.presenter.AddFunctionDialog.function_added')
-    def test_add_function_give_error_if_function_not_valid(self, function_added_mock):
-        dialog = AddFunctionDialog(function_names=["Lorenzian", "Gaussian", "FlatBackground"])
-        dialog.view.accept = MagicMock()
-        dialog.view.set_error_message = MagicMock()
-        with patch.object(dialog.view.ui.functionBox, 'currentText', lambda: "Function"):
+    def test_add_function(self, mock_view):
+        dialog = AddFunctionDialog(view=mock_view)
+        with patch.object(mock_view.ui.functionBox, 'currentText', lambda: "Gaussian"):
+            with patch.object(mock_view, 'is_text_in_function_list', lambda x: True):
+                dialog.action_add_function()
+                mock_view.function_added.emit.assert_called_once_with("Gaussian")
+                self.assertEqual(1, dialog.view.accept.call_count)
+
+    def test_add_function_give_error_if_function_not_valid(self, mock_view):
+        dialog = AddFunctionDialog(view=mock_view)
+        with patch.object(mock_view, 'is_text_in_function_list', lambda x: False):
             dialog.action_add_function()
             self.assertEqual(1, dialog.view.set_error_message.call_count)
-            self.assertEqual(0, function_added_mock.emit.call_count)
+            self.assertEqual(0, mock_view.function_added.emit.call_count)
             self.assertEqual(0, dialog.view.accept.call_count)
 
 
diff --git a/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/view.py b/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/view.py
index 93a6846c9fc9a857cde4435e0232ba5cee82effe..a01676c6f8f125c58503a3ff1e18767e625f5bd6 100644
--- a/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/view.py
+++ b/qt/python/mantidqt/widgets/fitpropertybrowser/addfunctiondialog/view.py
@@ -6,7 +6,7 @@
 # SPDX - License - Identifier: GPL - 3.0 +
 from __future__ import (absolute_import, unicode_literals)
 
-from qtpy.QtCore import Qt
+from qtpy.QtCore import Qt, Signal
 from qtpy.QtGui import QIcon
 from qtpy.QtWidgets import QCompleter, QDialog
 
@@ -14,6 +14,7 @@ from mantidqt.utils.qt import load_ui
 
 
 class AddFunctionDialogView(QDialog):
+    function_added = Signal(str)
 
     def __init__(self, parent = None, function_names = None):
         super(AddFunctionDialogView, self).__init__(parent)
@@ -30,9 +31,8 @@ class AddFunctionDialogView(QDialog):
         function_box.completer().setFilterMode(Qt.MatchContains)
         self.ui.errorMessage.hide()
 
-    def acceptFunction(self, function):
-        self.function_added.emit(function)
-        self.accept()
+    def is_text_in_function_list(self, function):
+        return self.ui.functionBox.findText(function, Qt.MatchExactly) != -1
 
     def set_error_message(self, text):
         self.ui.errorMessage.setText("<span style='color:red'> %s </span>" % text)
diff --git a/qt/python/mantidqt/widgets/fitpropertybrowser/interactive_tool.py b/qt/python/mantidqt/widgets/fitpropertybrowser/interactive_tool.py
index d0a7c27c95e192779f2033d3f711d89857909198..721a492aa77270ce45c930a5f1e66c3cc1b8fc7e 100644
--- a/qt/python/mantidqt/widgets/fitpropertybrowser/interactive_tool.py
+++ b/qt/python/mantidqt/widgets/fitpropertybrowser/interactive_tool.py
@@ -204,7 +204,7 @@ class FitInteractiveTool(QObject):
         """
         dialog = AddFunctionDialog(self.canvas, self.peak_names)
         dialog.view.ui.functionBox.setCurrentText(self.current_peak_type)
-        dialog.function_added.connect(self.action_peak_added)
+        dialog.view.function_added.connect(self.action_peak_added)
         dialog.view.open()
 
     def action_peak_added(self, function_name):
@@ -217,7 +217,7 @@ class FitInteractiveTool(QObject):
         browser.
         """
         dialog = AddFunctionDialog(self.canvas, self.background_names)
-        dialog.function_added.connect(self.add_background_requested)
+        dialog.view.function_added.connect(self.add_background_requested)
         dialog.view.open()
 
     def add_other_dialog(self):
@@ -226,7 +226,7 @@ class FitInteractiveTool(QObject):
         function is added to the browser.
         """
         dialog = AddFunctionDialog(self.canvas, self.other_names)
-        dialog.function_added.connect(self.add_other_requested)
+        dialog.view.function_added.connect(self.add_other_requested)
         dialog.view.open()
 
     def add_peak_marker(self, x, y_top, y_bottom=0.0, fwhm=None):