From eebc2d9bb2aabf0302ae261a377a2793378e04cb Mon Sep 17 00:00:00 2001
From: jkuensem <jkuensem@physik.uni-bielefeld.de>
Date: Wed, 11 Nov 2020 12:16:44 +0100
Subject: [PATCH] TMSS-435: add tests for sunrise etc.

---
 SAS/TMSS/test/t_conversions.py | 38 ++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/SAS/TMSS/test/t_conversions.py b/SAS/TMSS/test/t_conversions.py
index ccd4025f6c4..14231c4f091 100755
--- a/SAS/TMSS/test/t_conversions.py
+++ b/SAS/TMSS/test/t_conversions.py
@@ -26,6 +26,7 @@ import logging
 import requests
 import dateutil.parser
 import astropy.coordinates
+import json
 
 logger = logging.getLogger(__name__)
 logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
@@ -127,6 +128,43 @@ class UtilREST(unittest.TestCase):
         lon_str2 = r2.content.decode('utf8')
         self.assertNotEqual(lon_str1, lon_str2)
 
+    def test_util_sun_rise_and_set_returns_json_structure_with_defaults(self):
+        r = requests.get(BASE_URL + '/util/sun_rise_and_set', auth=AUTH)
+        self.assertEqual(r.status_code, 200)
+        r_dict = json.loads(r.content.decode('utf-8'))
+
+        # assert defaults to core and today
+        self.assertIn('CS002', r_dict.keys())
+        sunrise_start = dateutil.parser.parse(r_dict['CS002']['sunrise'][0]['start'])
+        self.assertEqual(datetime.date.today(), sunrise_start.date())
+
+    def test_util_sun_rise_and_set_considers_stations(self):
+        stations = ['CS005', 'RS305', 'DE609']
+        r = requests.get(BASE_URL + '/util/sun_rise_and_set?stations=%s' % ','.join(stations), auth=AUTH)
+        self.assertEqual(r.status_code, 200)
+        r_dict = json.loads(r.content.decode('utf-8'))
+
+        # assert station is included in response and timestamps differ
+        sunset_start_last = None
+        for station in stations:
+            self.assertIn(station, r_dict.keys())
+            sunset_start = dateutil.parser.parse(r_dict[station]['sunset'][0]['start'])
+            if sunset_start_last:
+                self.assertNotEqual(sunset_start, sunset_start_last)
+            sunset_start_last = sunset_start
+
+    def test_util_sun_rise_and_set_considers_timestamps(self):
+        timestamps = ['2020-01-01', '2020-02-22T16-00-00', '2020-3-11', '2020-01-01']
+        r = requests.get(BASE_URL + '/util/sun_rise_and_set?timestamps=%s' % ','.join(timestamps), auth=AUTH)
+        self.assertEqual(r.status_code, 200)
+        r_dict = json.loads(r.content.decode('utf-8'))
+
+        # assert all requested timestamps are included in response (sunrise on same day)
+        for i in range(len(timestamps)):
+            expected_date = dateutil.parser.parse(timestamps[i]).date()
+            response_date = dateutil.parser.parse(r_dict['CS002']['sunrise'][i]['start']).date()
+            self.assertEqual(expected_date, response_date)
+
 
 if __name__ == "__main__":
     os.environ['TZ'] = 'UTC'
-- 
GitLab