Skip to content
Snippets Groups Projects
Commit bc9bed12 authored by Martin Burchell's avatar Martin Burchell
Browse files

Fix error message when loading wrong type of file

parent 59120112
No related branches found
No related tags found
2 merge requests!166Staging,!157Django 2.2 and Python 3 upgrade
Pipeline #10355 passed
from django.contrib.messages import ERROR
from django.urls import reverse
from mock import Mock
from chn_spreadsheet.importer import SheetImportException
from ..views.upload_spreadsheet import UploadSpreadsheetView
class TestStorage(object):
def add(self, level, message, extra_tags):
self.extra_tags = extra_tags
self.level = level
self.message = message
def test_redirects_to_next_url_after_upload():
next_url = reverse('tabbed-page',
kwargs={'name': 'main', 'tab_name': 'rumors'})
......@@ -15,3 +25,26 @@ def test_redirects_to_next_url_after_upload():
url = view.get_success_url()
assert url == next_url
def test_handles_sheet_import_exception():
next_url = reverse('tabbed-page',
kwargs={'name': 'main', 'tab_name': 'rumors'})
view = UploadSpreadsheetView()
storage = TestStorage()
view.request = Mock(POST={'next': next_url}, _messages=storage)
error_message = "Something bad happened"
store_spreadsheet = Mock(
side_effect=SheetImportException(error_message)
)
importer = Mock(store_spreadsheet=store_spreadsheet)
view.get_importer = Mock(return_value=importer)
form = Mock(cleaned_data={'source': '', 'file': ''})
view.form_valid(form)
assert storage.message == "Something bad happened"
assert storage.level == ERROR
......@@ -21,7 +21,7 @@ class UploadSpreadsheetView(FormView):
uploaded_file = data['file']
try:
importer = Importer()
importer = self.get_importer()
(saved, skipped) = importer.store_spreadsheet(
source, uploaded_file
)
......@@ -41,7 +41,10 @@ class UploadSpreadsheetView(FormView):
messages.success(self.request, ' '.join(all_messages))
except SheetImportException as exc:
msg = exc.message
messages.error(self.request, msg)
messages.error(self.request, str(exc))
return HttpResponseRedirect(self.get_success_url())
def get_importer(self):
# allows us to provide a mock implementation in testing
return Importer()
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