Skip to content

Commit

Permalink
test: add tests to check SourceConversationWrapper is deleted
Browse files Browse the repository at this point in the history
  • Loading branch information
redshiftzero committed Mar 9, 2020
1 parent be17bb7 commit 22ce630
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
2 changes: 1 addition & 1 deletion securedrop_client/gui/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ def on_source_changed(self):
else:
self.clear_conversation()

def delete_source(self, source_uuid) -> None:
def delete_source(self, source_uuid: str) -> None:
"""
When we delete a source, we should delete its SourceConversationWrapper,
and remove the reference to it in self.source_conversations
Expand Down
52 changes: 52 additions & 0 deletions tests/gui/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,58 @@ def test_MainView_show_sources_with_no_sources_at_all(mocker):
mv.empty_conversation_view.show.assert_called_once_with()


def test_MainView_show_sources_when_sources_are_deleted(mocker):
"""
Ensure that show_sources also calls delete_source to delete the
SourceConversationWrapper for a deleted source.
"""
mv = MainView(None)
mv.source_list = mocker.MagicMock()
mv.empty_conversation_view = mocker.MagicMock()
mv.source_list.update = mocker.MagicMock(return_value=[])
mv.delete_source = mocker.MagicMock()

mv.show_sources([1, 2, 3, 4])

mv.source_list.update = mocker.MagicMock(return_value=[4])

mv.show_sources([1, 2, 3])

mv.delete_source.assert_called_once_with(4)


def test_MainView_delete_source_when_conv_wrapper_exists(mocker):
"""
Ensure that delete_source deletes the SourceConversationWrapper
if it exists.
"""
source_uuid = 'foo'
mock_source_conv_wrapper_widget = mocker.MagicMock()
mock_source_conv_wrapper_widget.deleteLater = mocker.MagicMock()
mv = MainView(None)
mv.source_conversations = {}
mv.source_conversations[source_uuid] = mock_source_conv_wrapper_widget

mv.delete_source(source_uuid)

mock_source_conv_wrapper_widget.deleteLater.assert_called_once_with()
assert mv.source_conversations == {}


def test_MainView_delete_source_when_conv_wrapper_does_not_exist(mocker):
"""
Ensure that delete_source throws no exception if the SourceConversationWrapper
does not exist.
"""
source_uuid = 'foo'
mv = MainView(None)
mv.source_conversations = {}

mv.delete_source(source_uuid)

assert mv.source_conversations == {}


def test_MainView_on_source_changed(mocker):
"""
Ensure set_conversation is called when source changes.
Expand Down

0 comments on commit 22ce630

Please sign in to comment.