Skip to content
Snippets Groups Projects
Commit 1e52d9cb authored by Phil Colebrooke's avatar Phil Colebrooke
Browse files

Re #28464 fix tests so they still pass

parent 264760d8
No related branches found
No related tags found
No related merge requests found
......@@ -38,7 +38,9 @@ class AxesTabWidgetPresenterTest(unittest.TestCase):
ax2.plot([-1000000, 10000], [10, 12], 'rx')
def _generate_presenter(self):
mock_view = mock.Mock(get_selected_ax_name=lambda: "My Axes: (0, 0)")
mock_view = mock.Mock(get_selected_ax_name=lambda: "My Axes: (0, 0)",
get_axis=lambda: "x",
get_properties=lambda: {})
return Presenter(self.fig, view=mock_view)
def test_generate_ax_name_returns_correct_name(self):
......@@ -51,26 +53,24 @@ class AxesTabWidgetPresenterTest(unittest.TestCase):
ax_mock = mock.MagicMock()
presenter = self._generate_presenter()
with mock.patch.object(presenter, 'get_selected_ax', lambda: ax_mock):
presenter.current_view_props = presenter.get_selected_ax_properties()
presenter.apply_properties()
# Mock properties object and view then test that the view's setters
# are called with the correct property values
view_mock = presenter.view
get_props_mock = view_mock.get_properties
view_mock.get_properties.assert_called_once_with()
ax_mock.set_title.assert_called_once_with(
get_props_mock().title)
presenter.current_view_props.title)
ax_mock.set_xlim.assert_called_once_with(
get_props_mock().xlim)
presenter.current_view_props.xlim)
ax_mock.set_xlabel.assert_called_once_with(
get_props_mock().xlabel)
presenter.current_view_props.xlabel)
ax_mock.set_xscale.assert_called_once_with(
get_props_mock().xscale)
presenter.current_view_props.xscale)
ax_mock.set_ylim.assert_called_once_with(
get_props_mock().ylim)
presenter.current_view_props.ylim)
ax_mock.set_ylabel.assert_called_once_with(
get_props_mock().ylabel)
presenter.current_view_props.ylabel)
ax_mock.set_yscale.assert_called_once_with(
get_props_mock().yscale)
presenter.current_view_props.yscale)
def test_get_axes_names_dict(self):
actual_dict = get_axes_names_dict(self.fig)
......@@ -130,42 +130,20 @@ class AxesTabWidgetPresenterTest(unittest.TestCase):
def test_update_view_calls_correct_setters_with_correct_values(self):
presenter = self._generate_presenter()
new_view_mock = mock.Mock(get_selected_ax_name=lambda: "My Axes: (0, 0)")
new_view_mock = mock.Mock(get_selected_ax_name=lambda: "My Axes: (0, 0)",
get_axis=lambda: "x",
get_properties=lambda: {})
ax = self.fig.get_axes()[0]
setters = ['set_title', 'set_xlower_limit', 'set_xupper_limit',
'set_ylower_limit', 'set_yupper_limit', 'set_xlabel',
'set_ylabel', 'set_xscale', 'set_yscale']
setters = ['set_title', 'set_lower_limit', 'set_upper_limit',
'set_label', 'set_scale']
expected_vals = [self.title,
ax.get_xlim()[0], ax.get_xlim()[1], ax.get_ylim()[0],
ax.get_ylim()[1], self.x_label, self.y_label,
self.x_scale, self.y_scale]
ax.get_xlim()[0], ax.get_xlim()[1],
self.x_label, self.x_scale]
with mock.patch.object(presenter, 'view', new_view_mock):
presenter.update_view()
for setter, value in zip(setters, expected_vals):
getattr(new_view_mock, setter).assert_called_once_with(value)
def test_apply_properties_correctly_handles_negative_axis_when_changing_to_log_scale(self):
fig = figure()
ax = fig.add_subplot(111)
ax.plot([0, 1], [10, 12], 'rx')
ax.set_title("My Axes")
mock_view = mock.Mock(get_selected_ax_name=lambda: "My Axes: (0, 0)")
presenter = Presenter(fig, view=mock_view)
ax_properties = AxProperties.from_ax_object(ax)
min_limit = -10
max_limit = 10
ax_properties.xscale = 'Log'
ax_properties.xlim = (min_limit, max_limit)
ax_properties.yscale = 'Log'
ax_properties.ylim = (min_limit, max_limit)
presenter.view.get_properties.return_value = ax_properties
presenter.apply_properties()
self.assertEqual(ax.get_xlim(), (0.01*max_limit, max_limit))
self.assertEqual(ax.get_ylim(), (0.01*max_limit, max_limit))
if __name__ == '__main__':
unittest.main()
......@@ -10,6 +10,7 @@ import unittest
import matplotlib
from matplotlib import use as mpl_use
mpl_use('Agg') # noqa
from matplotlib.colors import LogNorm
from matplotlib.patches import BoxStyle
......@@ -19,6 +20,7 @@ from mantid.plots.legend import LegendProperties
from unittest.mock import Mock, patch
from mantidqt.widgets.plotconfigdialog.colorselector import convert_color_to_hex
from mantidqt.widgets.plotconfigdialog.axestabwidget import AxProperties
from mantidqt.widgets.plotconfigdialog.axestabwidget.presenter import AxesTabWidgetPresenter
from mantidqt.widgets.plotconfigdialog.imagestabwidget import ImageProperties
from mantidqt.widgets.plotconfigdialog.curvestabwidget import CurveProperties
from mantidqt.widgets.plotconfigdialog.presenter import PlotConfigDialogPresenter
......@@ -28,7 +30,6 @@ CURVE_VIEW = 'mantidqt.widgets.plotconfigdialog.curvestabwidget.presenter.Curves
IMAGE_VIEW = 'mantidqt.widgets.plotconfigdialog.imagestabwidget.presenter.ImagesTabWidgetView'
LEGEND_VIEW = 'mantidqt.widgets.plotconfigdialog.legendtabwidget.presenter.LegendTabWidgetView'
new_ax_view_props = {
'title': 'New Title',
'xlim': [0.1, 10],
......@@ -88,15 +89,23 @@ new_legend_props = {
'marker_label_padding': 1.0}
def mock_axes_tab_presenter_update_view(presenter):
presenter.current_view_props = new_ax_view_props
def _run_apply_properties_on_figure_with_curve():
fig = figure()
ax = fig.add_subplot(111)
ax.errorbar([0, 1], [0, 1], yerr=[0.1, 0.2], label='old label')
presenter = PlotConfigDialogPresenter(fig, view=Mock())
with patch.object(AxesTabWidgetPresenter, 'update_view', mock_axes_tab_presenter_update_view):
presenter = PlotConfigDialogPresenter(fig, view=Mock())
presenter.tab_widget_views[1][0].select_curve_combo_box.currentIndex.return_value = 0
with patch.object(presenter.tab_widget_presenters[1], 'update_view',
lambda: None):
presenter.apply_properties()
with patch.object(presenter.tab_widget_presenters[1], 'axis_changed',
lambda: None):
presenter.apply_properties()
return ax
......@@ -104,23 +113,30 @@ def _run_apply_properties_on_figure_with_image():
img_fig = figure()
img_ax = img_fig.add_subplot(111)
img_ax.imshow([[0, 1], [0, 1]], label='old label')
presenter = PlotConfigDialogPresenter(img_fig, view=Mock())
with patch.object(AxesTabWidgetPresenter, 'update_view', mock_axes_tab_presenter_update_view):
presenter = PlotConfigDialogPresenter(img_fig, view=Mock())
with patch.object(presenter.tab_widget_presenters[1], 'update_view',
lambda: None):
presenter.apply_properties()
with patch.object(presenter.tab_widget_presenters[1], 'axis_changed',
lambda: None):
presenter.apply_properties()
return img_ax
def _run_apply_properties_on_figure_with_legend():
fig = figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3], label='old label')
ax.plot([1, 2, 3], label='old label')
legend = ax.legend()
legend.get_frame().set_alpha(0.5)
presenter = PlotConfigDialogPresenter(fig, view=Mock())
with patch.object(AxesTabWidgetPresenter, 'update_view', mock_axes_tab_presenter_update_view):
presenter = PlotConfigDialogPresenter(fig, view=Mock())
with patch.object(presenter.tab_widget_presenters[1], 'update_view',
lambda: None):
presenter.apply_properties()
with patch.object(presenter.tab_widget_presenters[1], 'axis_changed',
lambda: None):
presenter.apply_properties()
return ax
......@@ -262,7 +278,7 @@ class ApplyAllPropertiesTest(unittest.TestCase):
def test_apply_properties_on_figure_with_curve_sets_cap_size(self):
self.assertEqual(new_curve_view_props['capsize'],
self.new_curve[1][0].get_markersize()/2)
self.new_curve[1][0].get_markersize() / 2)
def test_apply_properties_on_figure_with_curve_sets_cap_thickness(self):
self.assertEqual(new_curve_view_props['capthick'],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment