From e66ff1f72660dc43583a68580aac7381fc1d9f8c Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Mon, 13 May 2024 14:32:42 +0200
Subject: [PATCH] add: more unit tests

---
 .coverage                                     | Bin 53248 -> 53248 bytes
 server/main.py                                |   4 +-
 .../__pycache__/add_new_lake.cpython-311.pyc  | Bin 10187 -> 10064 bytes
 .../update_measurements.cpython-311.pyc       | Bin 12016 -> 12131 bytes
 server/map_handler/add_new_lake.py            |   2 -
 .../lake_relations/test_lake_div.json         |   1 -
 ..._add_new_lake.cpython-311-pytest-8.2.0.pyc | Bin 4717 -> 4828 bytes
 ..._measurements.cpython-311-pytest-8.2.0.pyc | Bin 0 -> 1466 bytes
 .../unit_tests/test_add_new_lake.py           |   9 +++-
 .../unit_tests/test_update_measurements.py    |   9 ++++
 server/map_handler/update_measurements.py     |  45 +++++++++---------
 server/scheduler.py                           |   4 +-
 12 files changed, 43 insertions(+), 31 deletions(-)
 delete mode 100644 server/map_handler/lake_relations/test_lake_div.json
 create mode 100644 server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-311-pytest-8.2.0.pyc
 create mode 100644 server/map_handler/unit_tests/test_update_measurements.py

diff --git a/.coverage b/.coverage
index 8ccad4cf530884d0d7e09dae50f7d7ef537febf1..ad95739423016a104fb28ab751d20e77ca1b4504 100644
GIT binary patch
literal 53248
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
DnaK~u

delta 200
zcmZozz}&Eac>{}s2nX+e2L4n0?fjN}kNDQ{rSoy~?%ymZu$*`EeqUE6p!5L-{?mNx
z`8)VBcn|Pf@jd3_0ZOmn-FzU{MM;E%e-;D(PyUbmFZpltU*g}$zl?ttP`ZhK@~nP6
z#S^RzC!c#a%;a=nXJujJ6ks(-=V1Xdq*%<tPx;!XFiw8iFAX%~6a)Wn{xAG*`JeIM
v=fA;!k^dCXj7|KTPtCVd07~BgNq+-c@`nF8|0Djp{5OEo2lyx7IIjT!5-UV&

diff --git a/server/main.py b/server/main.py
index c7a16913..6c55584e 100644
--- a/server/main.py
+++ b/server/main.py
@@ -11,7 +11,7 @@ from server.scheduler import update_scheduler
 from server.consts import LAKE_RELATIONS_PATH
 from map_handler.get_lake_relation import get_map_data_handler
 from map_handler.input_new_data import input_new_Lidar_data
-from map_handler.update_measurements import update_measurements, addTestData
+from map_handler.update_measurements import update_measurements_handler, addTestData
 
 app = Flask(__name__)
 terminate_server = 0
@@ -82,7 +82,7 @@ class IceHTTP(BaseHTTPRequestHandler):
             lake_name = unquote(lake_name_param)  # Decode url param
 
             if lake_name_param:
-                update_measurements(self, lake_name)
+                update_measurements_handler(self, lake_name)
             else:
                 self.send_response(400)
                 self.send_header('Content-type', 'application/json')
diff --git a/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc b/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc
index 8dbe5c4c5269ae0daa3a59b6220662c181919014..8d3750ebdf174db610c11549b96840a0d5519932 100644
GIT binary patch
delta 377
zcmX@@f5DG;IWI340}v!KJEgg7<ZWYNy2iSBDoZshyI`$Cig=2|<cVA|lf$|A!F<US
zsm&9)-ZL|2PGOu}$EU>jW%5EkIVMfn&Byq77&qVK4`t*$#LU3Z!0<sRWwW`U2Qx1t
ztHlQf7%_RVhz?N11SA3>CVv*uux1AGe*E}RYyfmflb4~F3BxH9E^iIyQ+90LT+F9g
z7=i55T)ZGsoXuOA`LrxpM48oFV{@3O0kcIaP-BrPh%f^Yb|4}WL_~pzXb=$tByMq~
z7iFfz=Va!k7T;p5C<>pvPeP5cbMsRPQC9X_tOZ4xc_owo%ce4}-JB|C&dPXw@?7O|
z#=^;>D$$IglM7WG8P9IstWv^cmCMKobUuijQ4FCsghJ>8$tR2tL_yeC$b`v>>RA9F
C{c2$V

delta 513
zcmccMciNwKIWI340}w1?bV^&ck++S7NsevvRF-O1ZRJ{p5^InY1f+=9D9mP<%e0J<
zfnhZeLjWT~ibRU|WKS*`s}is|5MdRDB6RJNIJ8TpNN)Dzde1!BmQR6k%H%jcIrhvi
zK=U=_HrMg-FtXobEhx&&E7{z|AIix2fti7!f#HKt+U6Gm9?U9CtQH>_V8mSx-V1z&
zD-wYO5MAUjy24>}fx~FBt%wd#p$SMKga9klU7>h^PZx+Ta_C**(7V8)H@Qqi!<rSS
z=*N#A#RfosG<g|%nJ}C(;qu{OK4mB2EyH|Tj1kB_EyD{UH6?u5na?nSM9#3Y`tWSN
zDPq8Ekp|RQWC|k8K!hELhyoGOAR-1t!~%(1T<JxbDe*a(d8x&>7%Pe*COb-~F?Mav
zkPu~ME%FDdnA{?p%D8UxD_L_^#v7BBl*<|YC(lxjW(=GBP1%w0+-3`v5+<vBMn<5Y
dK;(>K2)!W`LLW#zVSFG8!p1@-O@5}91pvs~g2ey;

diff --git a/server/map_handler/__pycache__/update_measurements.cpython-311.pyc b/server/map_handler/__pycache__/update_measurements.cpython-311.pyc
index 37757e8e863f0fd6f0235db5e18ff3def83dc6d6..b2894fcaa2808ca853647bccd7b4c454f79b8146 100644
GIT binary patch
delta 3381
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

delta 3015
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

diff --git a/server/map_handler/add_new_lake.py b/server/map_handler/add_new_lake.py
index 04f44b72..58deadc6 100644
--- a/server/map_handler/add_new_lake.py
+++ b/server/map_handler/add_new_lake.py
@@ -129,10 +129,8 @@ def cut_map(cursor, lake_name: str, cell_size_in_km: float = 0.5) -> (int, str):
         return 200, feature_collection
 
     except FileNotFoundError as e:
-        print(f"Failed to find the map file: {e}")
         return 404, f"Failed to find the map file: {e}"
     except Exception as e:
-        print(f"Error in adding new map: {e}")
         return 500, f"Error in adding new map: {e}"
 
 
diff --git a/server/map_handler/lake_relations/test_lake_div.json b/server/map_handler/lake_relations/test_lake_div.json
deleted file mode 100644
index 65344015..00000000
--- a/server/map_handler/lake_relations/test_lake_div.json
+++ /dev/null
@@ -1 +0,0 @@
-{"test-field1": "test-value1", "test-field2": ["test-value2", "testvalue3"]}
\ No newline at end of file
diff --git a/server/map_handler/unit_tests/__pycache__/test_add_new_lake.cpython-311-pytest-8.2.0.pyc b/server/map_handler/unit_tests/__pycache__/test_add_new_lake.cpython-311-pytest-8.2.0.pyc
index a74c8c7b03b7928d80c0ec1baad0a0ff2cfdca0a..ec3abd0b1224921af2ad0122bc5699c6d54a97f7 100644
GIT binary patch
delta 609
zcmZ`zziSjh6rS0g{V{v{Ymz(M<2=tZ7iH7LLM`l~LJYxJ1e>)`aW8th>xJD#ys#Gn
zrZ~aE@IVEdR4Q1ATq7cp_z&pf6>{1LS_)}wteia)u<^~j?|bjfH#6VQ#@9*XnPF&%
z$9eVC()SIcjPGn5nL399#Z!Fb3xOI^kA|A3VZ?heD1^GFk7^Paq3M~S<yoQa*?dNQ
zd7XHSv%-0dv&wn=)x#|j)BXk0A-LTCpiW^t*8ffKV*CJB3r;=%em8u1g;y!c(N}Wp
z3W*4h3bkozSCXF#zWP)^=mpQeaU6BUMA_>Qx<Me29idC0qE9oD;+rFBS4yS$eNuqS
za#8bXDlK7OO9^!JMQ{ZRzUbu<i^e@m_D$bP<rZF%xeEoJ7!wc+b-ODim47}m0qc%{
z5qvZ5Gb_qnM!At8X)iZ#!K!&|VkorZp&T{C_U)#tM*DNg>0CmSW}IAFzLH#rEz^-y
zK063Q^RPD0s~XSvEoj!{J`=IV=GDx0pD$$g$=4S%`|R4>FBy(nCDv;_9?xiXK&v|l
zO9wVt|C%+6Py8VA`dqJ-5obW0k9#|2{Lwe1nTohwAu}~)`w-^n3K8Y=1-A$T`wX6i
oB8%}n^jK9}<a3-Gc?U09gVMFp`i$Tc>(ooQyo3G&QG?(51DJe>U;qFB

delta 565
zcmZ`zO=uHA6rQ&`oBf~duC+F$O$=?5rUy&FLZM!o`qM*^ir`_v+Zd^4P1)oU*$sk<
zc(csGi`1Nq;7J3LlTuF}vrtjQyC)?V!J}_edh{{#ecycZzQ_Bq_-n!L*|tHjI;2`V
z*tfH=w_jSmB-PbG^R+<tbs(H@xo!leZ;mysTY>G{0rOel_zrqH&pe|31hR_kB5TOr
z+k+1>X#JbCO<}tKRa*vd`;zexX1GMibHX7eT;ejPw<WH;kYZ?o_-N*BIbG<uT2#C=
zXD7M#3L|gu9@i>~CDDZ`@i#Le#j+?_D=TsYcgGDejcD^z%RFf&<WA;9b3LLp;6@~i
z$JTW*WjW%fl^wHVKXnw&xDzS6a32$KM)d4?(NLGf4140*p^8(!)5hMdd!d3-ykqB=
z%4#@^I^0bEpcYosM?Qu16fPh%)0`+eMPmy^E_Hh1hO@Zl5#`LYPPd)V$`P#$Y2{Cb
z80-rxbT<=LdVMZoYlHQKUH&X5`u35&JtCmwhCA2#1Lq19hct($>EgV>>5Z&>n57$Y
z>fu>HEK8w|{?+m+vFctF9k&5n;<r0Dxq~jG8@xvt$pG+;h=MmQkq4scwF@5PN8~>c
HE@0*#$KZO}

diff --git a/server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-311-pytest-8.2.0.pyc b/server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-311-pytest-8.2.0.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0f76e4a0ea22b4d3828864abe9ad776e18e7da51
GIT binary patch
literal 1466
zcmZ`(TWi!n6rM@4x3*SlU8t9qf~d{QQhSjqu6TbD7C{6l3nAT^ZMV&hnMrNSE>!Uc
z_#pJf=c@G2v{IqWlOQ6#73x!;Jd<o<wzOxHlXLmzJ2N>a`}y3tJ_K^pc+~t0&!5Uk
zMC%$yGhl2Xf(UldJdU24t2Z=^Tw^|mRYr62ZehLvc8(bDjrk(MFOix5qbO=7mcwB{
zY(XuT+B{^`rJmq2&!`BQ*XY)X9tF@k+(&CTDvCQufR#uaZG*RyM(VK14(@0~>*#IV
z)>ooUcZ{~dw}j&9%5riTMD(`N#KchOrnYSW8{DywoKW?<vYf`ZA+nQ%(JJB>d$@B+
zs*QVh$9i%3vv3}U%GuriN9w(dB>zd<fNUp63Z&T1wQ%I+#rcFAp&q7U5^v{wnR>l<
z(AG8FF*-Uy(6~}fmIUR(a_kk_`UtPv#K&5-YT}Ix*C&GYNt2IPtK-U?Ho5HQ!WJR7
z8a|<>CUpQPHN7!tb55CvfU^LE;H+6<>Zr2sL9iaxu$dgP8n)wDj0UXXyMfK99Dua7
z5VjoA@?caP9}rxQSbWJ39TGvUMaN&T9m}&_DoYl(n^ZB#!G}@RmhU}f%x7}gYWmEz
zg+<o_$M$Ri8M7b<(-TGvOuZ_JE!nRs#~Yu@I=5mc=9<Ymx49ad@mP*uKfYUk1;^%f
zPk3Sd3FRxo59$H)7pLw_PSzo{N?F~t18d3lhy!-$wS=X%!|TzePWf6Y!MYqdE6J`v
zeKoH9H>gc?P#)i`{VGp<8QUw*?U(1?);6Di82Vw1?k3l_#DK_mV{|{`rWi2xl2nXI
z-R!C~nDV5NQ(-YJ=<EecV(<x)EL9c{_7NNvnHp2)u9+oSOs0hmLPTD&;`yq?t%ROe
z7=6Q90%j!*$wD{A2Gp7xac?S_-c(NMMKr+CJO7H<RanR_gE}tWbA1vz^gg==uKJJS
eFF+mY7~=!gmeYT`=-G+uFrUL?hv*CyRs09n(|ut8

literal 0
HcmV?d00001

diff --git a/server/map_handler/unit_tests/test_add_new_lake.py b/server/map_handler/unit_tests/test_add_new_lake.py
index 6b3fd67f..a80b333e 100644
--- a/server/map_handler/unit_tests/test_add_new_lake.py
+++ b/server/map_handler/unit_tests/test_add_new_lake.py
@@ -1,3 +1,4 @@
+import os
 import json
 from shapely.geometry import Polygon, LineString
 
@@ -37,12 +38,18 @@ def test_write_json_to_file() -> None:
             "testvalue3"
         ],
     }
+    test_path = LAKE_RELATIONS_PATH + '/' + test_lake_name + '_div.json'
 
     # Call the function that is being tested
     write_json_to_file(test_lake_name, test_data)
 
     # Try to read the data from the newly created file
-    with open(LAKE_RELATIONS_PATH + '/' + test_lake_name + '_div.json', 'r') as f:
+    with open(test_path, 'r') as f:
         result = json.load(f)
 
     assert result == test_data
+
+    # Remove the test file
+    os.remove(test_path)
+
+
diff --git a/server/map_handler/unit_tests/test_update_measurements.py b/server/map_handler/unit_tests/test_update_measurements.py
new file mode 100644
index 00000000..e56f20bf
--- /dev/null
+++ b/server/map_handler/unit_tests/test_update_measurements.py
@@ -0,0 +1,9 @@
+from server.map_handler.update_measurements import update_measurements
+
+
+def test_update_measurements() -> None:
+    test_lake_name = "test_lake"
+
+    status_code, _ = update_measurements(test_lake_name)
+
+    assert status_code == 404
diff --git a/server/map_handler/update_measurements.py b/server/map_handler/update_measurements.py
index 2e07a875..ed3cd94a 100644
--- a/server/map_handler/update_measurements.py
+++ b/server/map_handler/update_measurements.py
@@ -7,15 +7,29 @@ from server.consts import LAKE_RELATIONS_PATH
 from server.ModelFromNVE.icemodellingscripts.getIceThicknessLakes import get_raw_dates, ice_prognosis_raw_data
 
 
-def update_measurements(self, lake_name: str):
+def update_measurements_handler(self, lake_name: str):
+    status_code, measurement_data = update_measurements(lake_name)
+
+    self.send_response(status_code)
+    self.send_header("Content-type", "application/json")
+    self.end_headers()
+
+    self.wfile.write(measurement_data.encode('utf-8'))
+
+
+def update_measurements(lake_name: str) -> (int, str):
     """
     Retrieves LiDar data for a given lake, and adds weather data to each subdivision.
 
             Parameters:
-                    self (BaseHTTPRequestHandler): A instance of a BaseHTTPRequestHandler
                     lake_name (str): The name of the requested lake
     """
     try:
+        # Return immediately if an invalid lake name was provided
+        if not os.path.exists(LAKE_RELATIONS_PATH + lake_name + "_div.json"):
+            print("The system lake does not exist")
+            return 404, f"{lake_name} does not exists in the system"
+
         # Define file path to lidar data file
         file_path = os.path.join(LAKE_RELATIONS_PATH, lake_name + '_lidar_data.json')
 
@@ -115,27 +129,13 @@ def update_measurements(self, lake_name: str):
         with open(LAKE_RELATIONS_PATH + lake_name.lower() + '_measurements.json', 'w') as f:
             json.dump(measurements, f, indent=4)
 
-        if self is not None:
-            # Convert list of dictionaries to JSON
-            response_data = json.dumps(measurements, indent=4)
-            # Set headers
-            self.send_response(200)
-            self.send_header("Content-type", "application/json")
-            self.end_headers()
-
-            # Write processed data to response object
-            self.wfile.write(response_data.encode('utf-8'))
+        # Convert list of dictionaries to JSON
+        response_data = json.dumps(measurements, indent=4)
+        # Set headers
+        return 200, response_data
 
     except Exception as e:
-        print(f"Error in updating measurements: {e}")
-
-        if self is not None:
-            # Set headers
-            self.send_response(500)
-            self.send_header("Content-type", "application/json")
-            self.end_headers()
-
-            self.wfile.write(f"Error in updating measurements: {e}".encode('utf-8'))
+        return 500, f"Error in updating measurements: {e}".encode('utf-8')
 
 
 def fill_remaining_subdivisions(lake_name: str, processed_ids: list):
@@ -171,7 +171,7 @@ def fill_remaining_subdivisions(lake_name: str, processed_ids: list):
                 if len(ice_stats) > 0 and len(ice_stats[0]) > 0:
                     total_ice_thickness = ice_stats[0]['Total ice (m)']
                     accuracy = 1
-                else: # Initialise empty ice stats
+                else:  # Initialise empty ice stats
                     ice_stats = {
                         "Date": "NA",
                         "Slush ice (m)": 0,
@@ -252,7 +252,6 @@ def addTestData(self, lake_name: str):
 
             # Create 10 subdivisions for each measurement, with randomized coordinates and thicknesses
             for subdiv_id in range(30):
-
                 subdivision = {
                     "SubdivID": sub_div_id,
                     "MinThickness": round(random.uniform(4, 20), 1),
diff --git a/server/scheduler.py b/server/scheduler.py
index 970987bd..6c50b094 100644
--- a/server/scheduler.py
+++ b/server/scheduler.py
@@ -2,14 +2,14 @@ import json
 import time
 import schedule
 
-from map_handler.update_measurements import update_measurements
+from map_handler.update_measurements import update_measurements_handler
 from server.consts import LAKE_RELATIONS_PATH
 
 
 def update_all_measurements(lake_names: list):
     """Loops through all lake names and calls get_measurements() on each lake"""
     for lake in lake_names:
-        update_measurements(None, lake)
+        update_measurements_handler(None, lake)
 
 
 def update_scheduler():
-- 
GitLab