From e9353feea58299448ff64c45475085a1b093f47b Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Tue, 1 Aug 2017 13:30:44 +0100
Subject: [PATCH] Tested CSV extractor for exceptions

---
 .../csv_extractor/csv_extractor_data_source.py  | 10 ++++------
 .../tests/test_csv_extractor_data_source.py     | 17 +++++++++++++++++
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py b/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py
index 72bcdec..471f3ac 100644
--- a/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py
+++ b/force_bdss/core_plugins/dummy/csv_extractor/csv_extractor_data_source.py
@@ -9,16 +9,14 @@ class CSVExtractorDataSource(BaseDataSource):
             for rowindex, row in enumerate(reader):
                 if rowindex < model.row:
                     continue
-
-                if rowindex == model.row:
+                elif rowindex == model.row:
                     return [
                         DataValue(
                             type=model.cuba_type,
                             value=float(row[model.column])
                         )
                     ]
+                else:
+                    break
 
-                raise IndexError("Could not find specified data. "
-                                 "Unexistent column.")
-
-            raise IndexError("Could not find specified data. Unexistent row.")
+            raise IndexError("Could not find specified data.")
diff --git a/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py b/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py
index 0df1be2..f619f45 100644
--- a/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py
+++ b/force_bdss/core_plugins/dummy/csv_extractor/tests/test_csv_extractor_data_source.py
@@ -35,3 +35,20 @@ class TestCSVExtractorDataSource(unittest.TestCase):
         self.assertEqual(len(result), 1)
         self.assertIsInstance(result[0], DataValue)
         self.assertEqual(result[0].value, 42)
+
+    def test_run_with_exception(self):
+        ds = CSVExtractorDataSource(self.bundle)
+        model = CSVExtractorModel(self.bundle)
+        model.filename = fixtures.get("foo.csv")
+        mock_params = []
+        model.row = 30
+        model.column = 5
+        with self.assertRaises(IndexError):
+            ds.run(model, mock_params)
+
+        model.row = 3
+        model.column = 50
+        with self.assertRaises(IndexError):
+            ds.run(model, mock_params)
+
+
-- 
GitLab