def test_empty_scenario_id(self): """Should give an error message mentioning the row nr""" errors = eie.import_scenario_row(eie.ImportedHeader(), 66, [mock.MagicMock(value="")], set()) self.assertEquals(len(errors), 1) self.assertTrue("66" in errors[0])
def test_unknown_scenario_id(self): """Tests that using a nonexisting scenario id results in an error, and that the error message includes the line number.""" errors = eie.import_scenario_row(eie.ImportedHeader(), 66, [mock.MagicMock(value=42313)], set()) self.assertEquals(len(errors), 1) self.assertTrue("66" in errors[0])
def test_getitem(self): name = u"dit is een input field" InputFieldF.create(name=name) header = eie.ImportedHeader() foundfield = header.find_field_by_name(1, name) self.assertTrue(header[1] is foundfield)
def build_header(self, *inputfields): """Build an eie.ImportedHeader object using named inputfields.""" fields = {} i = 1 for inputfield in inputfields: fields[i] = inputfield i += 1 return eie.ImportedHeader(fields)
def test_bad_scenario_id(self): """Tests that a row with a badly formed scenario id returns an error, and that the error message includes the line number.""" errors = eie.import_scenario_row(eie.ImportedHeader(), 66, [mock.MagicMock(value="scenarioid")], set()) self.assertEquals(len(errors), 1) self.assertTrue("66" in errors[0])
def test_exception_if_occurs_twice(self): name = u"dit is een input field" InputFieldF.create(name=name) header = eie.ImportedHeader() header.find_field_by_name(1, name) self.assertRaises(eie.ImportedHeader.HeaderException, lambda: header.find_field_by_name(2, name))
def test_can_iterate(self): name = u"dit is een input field" field = InputFieldF.create(name=name) header = eie.ImportedHeader() header.find_field_by_name(1, name) for i, iterfield in enumerate(header): self.assertEquals(i, 0) # We should only come here once self.assertEquals(field, iterfield)
def test_disallowed_scenario_id(self): """Tests that using a scenario id that exists but isn't in allowed scenario id fails.""" scenario = ScenarioF.create() allowed_ids = set((scenario.id + 1, )) errors = eie.import_scenario_row(eie.ImportedHeader(), 66, [mock.MagicMock(value=scenario.id)], allowed_ids) self.assertEquals(len(errors), 1) self.assertTrue("66" in errors[0])
def test_finds_field(self): name = u"dit is een input field" field = InputFieldF.create(name=name) fields = {} header = eie.ImportedHeader(fields) foundfield = header.find_field_by_name(1, name) self.assertEquals(field, foundfield) self.assertTrue(fields[1] is foundfield)
def test_empty_row(self): """Shouldn't really do anything, just return""" errors = eie.import_scenario_row(eie.ImportedHeader(), 5, [], set()) self.assertEquals(errors, [])
def test_exception_if_not_found(self): header = eie.ImportedHeader() self.assertRaises( eie.ImportedHeader.HeaderException, lambda: header.find_field_by_name(1, u"bestaat niet"))
def test_returns_none_for_fieldnr_0(self): self.assertEquals(None, eie.ImportedHeader().find_field_by_name(0, ''))
def test_trivial(self): eie.ImportedHeader()
class TestImportUploadedExcelFile(TestCase): @mock.patch('flooding_lib.excel_import_export.import_header', return_value=(None, [])) def test_calls_import_header(self, patched_import_header): cell = mock.MagicMock(value=15) cells = [cell] sheetattrs = {'row.return_value': cells} worksheet = mock.MagicMock(**sheetattrs) with mock.patch('flooding_lib.excel_import_export.get_worksheet', return_value=worksheet): self.assertEquals([], eie.import_uploaded_excel_file('', set())) patched_import_header.assertCalledWith(cells) @mock.patch('flooding_lib.excel_import_export.import_header', return_value=(None, ["error!"])) def test_import_headers_returns_errors(self, patched_import_header): cell = mock.MagicMock(value=15) cells = [cell] sheetattrs = {'row.return_value': cells} worksheet = mock.MagicMock(**sheetattrs) with mock.patch('flooding_lib.excel_import_export.get_worksheet', return_value=worksheet): self.assertEquals(["error!"], eie.import_uploaded_excel_file('', set())) @mock.patch('flooding_lib.excel_import_export.import_header', return_value=(eie.ImportedHeader(), [])) @mock.patch('flooding_lib.excel_import_export.import_scenario_row', return_value=[]) def test_rows_calls_get_scenario_row(self, patched_import_header, patched_import_scenario_row): cell = object() onecellrow = [cell] def row(i): if i < 4: return [] return onecellrow worksheet = mock.MagicMock(row=row, nrows=5) allowed_ids = set() with mock.patch('flooding_lib.excel_import_export.get_worksheet', return_value=worksheet): eie.import_uploaded_excel_file('', allowed_ids) patched_import_scenario_row.assertCalledWith( (patched_import_header.return_value, 4, onecellrow, allowed_ids)) @mock.patch('flooding_lib.excel_import_export.import_header', return_value=(eie.ImportedHeader(), [])) @mock.patch('flooding_lib.excel_import_export.import_scenario_row', return_value=["error!"]) def test_get_scenario_row_returns_errors(self, patched_import_header, patched_import_scenario_row): worksheet = mock.MagicMock(row=lambda i: [], nrows=5) with mock.patch('flooding_lib.excel_import_export.get_worksheet', return_value=worksheet): errors = eie.import_uploaded_excel_file('', set()) self.assertEquals(errors, ["error!"])