From 05f017d8456c51f74a6f59a3a560024efabdc619 Mon Sep 17 00:00:00 2001
From: Kelvin Rodriguez <kr788@nau.edu>
Date: Wed, 25 Sep 2019 15:39:03 -0700
Subject: [PATCH] ISIS ideal now fails if inst id is not ISIS Ideal (#284)

* ISIS ideal now fails if inst id is not ISIS Ideal

* redo super

* updated ideal test
---
 ale/drivers/__init__.py             | 10 +++++++---
 ale/drivers/isis_ideal_drivers.py   |  8 ++++++++
 tests/pytests/test_ideal_drivers.py |  4 ++--
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/ale/drivers/__init__.py b/ale/drivers/__init__.py
index 7676ca3..c08b4af 100644
--- a/ale/drivers/__init__.py
+++ b/ale/drivers/__init__.py
@@ -44,7 +44,7 @@ class AleJsonEncoder(json.JSONEncoder):
             return obj.isoformat()
         return json.JSONEncoder.default(self, obj)
 
-def load(label, props={}, formatter='usgscsm', verbose=True):
+def load(label, props={}, formatter='usgscsm', verbose=False):
     """
     Attempt to load a given label from all possible drivers
 
@@ -68,13 +68,17 @@ def load(label, props={}, formatter='usgscsm', verbose=True):
             res.instrument_id
 
             with res as driver:
-                return formatter(driver)
+                isd = formatter(driver)
+                if verbose:
+                    print("Success with: ", driver)
+                    print("ISD:\n", isd)
+                return isd
         except Exception as e:
             if verbose:
                 print(f'Failed: {e}\n')
                 traceback.print_exc()
     raise Exception('No Such Driver for Label')
 
-def loads(label, props='', formatter='usgscsm', verbose=True):
+def loads(label, props='', formatter='usgscsm', verbose=False):
     res = load(label, props, formatter, verbose=verbose)
     return json.dumps(res, cls=AleJsonEncoder)
diff --git a/ale/drivers/isis_ideal_drivers.py b/ale/drivers/isis_ideal_drivers.py
index 6cadc99..b93ce91 100644
--- a/ale/drivers/isis_ideal_drivers.py
+++ b/ale/drivers/isis_ideal_drivers.py
@@ -18,6 +18,14 @@ class IdealLsIsisLabelIsisSpiceDriver(LineScanner, IsisSpice, IsisLabel, NoDisto
         """
         return self.instrument_id
 
+    @property
+    def instrument_id(self):
+        instrument_id = super().instrument_id
+
+        if instrument_id != "IdealCamera":
+            raise Exception(f"Instrument ID is {instrument_id} when it should be \"IdealCamera\"")
+
+        return instrument_id
 
     @property
     def ephemeris_start_time(self):
diff --git a/tests/pytests/test_ideal_drivers.py b/tests/pytests/test_ideal_drivers.py
index e8589b4..a4371fa 100644
--- a/tests/pytests/test_ideal_drivers.py
+++ b/tests/pytests/test_ideal_drivers.py
@@ -8,9 +8,9 @@ def IdealDriver():
     return IdealLsIsisLabelIsisSpiceDriver("")
 
 
-@patch('ale.base.label_isis.IsisLabel.instrument_id', 1)
+@patch('ale.base.label_isis.IsisLabel.instrument_id', "IdealCamera")
 def test_sensor_name(IdealDriver):
-    assert IdealDriver.sensor_name == 1
+    assert IdealDriver.sensor_name == "IdealCamera"
 
 
 @patch('ale.drivers.isis_ideal_drivers.IdealLsIsisLabelIsisSpiceDriver.ephemeris_start_time', 451262458.99571)
-- 
GitLab