diff --git a/junit.xml b/junit.xml
index 846dab503757c90ed17bb99230b16efe58010219..3b36f09668f0862b35716742613e324ed5a14754 100644
--- a/junit.xml
+++ b/junit.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuites name="jest tests" tests="443" failures="0" errors="0" time="7.886">
-  <testsuite name="search reducer" errors="0" failures="0" skipped="4" timestamp="2024-01-03T15:35:18" time="0.92" tests="4">
+<testsuites name="jest tests" tests="594" failures="0" errors="0" time="12.487">
+  <testsuite name="search reducer" errors="0" failures="0" skipped="4" timestamp="2024-01-12T14:39:36" time="0.696" tests="4">
     <testcase classname="search reducer should match initial state" name="search reducer should match initial state" time="0">
       <skipped/>
     </testcase>
@@ -14,674 +14,976 @@
       <skipped/>
     </testcase>
   </testsuite>
-  <testsuite name="AssociatedSubmap - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:18" time="1.755" tests="4">
-    <testcase classname="AssociatedSubmap - component should not display component when can not find asociated map model" name="AssociatedSubmap - component should not display component when can not find asociated map model" time="0.012">
+  <testsuite name="LegendImages - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="1.32" tests="4">
+    <testcase classname="LegendImages - component when current images are empty should render empty container" name="LegendImages - component when current images are empty should render empty container" time="0.035">
     </testcase>
-    <testcase classname="AssociatedSubmap - component should render component when associated map model is found" name="AssociatedSubmap - component should render component when associated map model is found" time="0.008">
+    <testcase classname="LegendImages - component when current images are present should render img element, partialUrl=url1/image.png" name="LegendImages - component when current images are present should render img element, partialUrl=url1/image.png" time="0.005">
     </testcase>
-    <testcase classname="AssociatedSubmap - component when map is already opened should open submap and set it to active on open submap button click" name="AssociatedSubmap - component when map is already opened should open submap and set it to active on open submap button click" time="0.041">
+    <testcase classname="LegendImages - component when current images are present should render img element, partialUrl=url2/image.png" name="LegendImages - component when current images are present should render img element, partialUrl=url2/image.png" time="0.003">
     </testcase>
-    <testcase classname="AssociatedSubmap - component when map is already opened should set map active on open submap button click" name="AssociatedSubmap - component when map is already opened should set map active on open submap button click" time="0.013">
+    <testcase classname="LegendImages - component when current images are present should render img element, partialUrl=url3/image.png" name="LegendImages - component when current images are present should render img element, partialUrl=url3/image.png" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="PinsListItem - component " errors="0" failures="0" skipped="1" timestamp="2024-01-03T15:35:18" time="1.751" tests="6">
-    <testcase classname="PinsListItem - component  should display full name of pin" name="PinsListItem - component  should display full name of pin" time="0.023">
+  <testsuite name="OverviewImagesModal - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="1.345" tests="4">
+    <testcase classname="OverviewImagesModal - component when currentImage is NOT valid should not render component" name="OverviewImagesModal - component when currentImage is NOT valid should not render component" time="0.018">
     </testcase>
-    <testcase classname="PinsListItem - component  should display list of elements for pin for drugs" name="PinsListItem - component  should display list of elements for pin for drugs" time="0.005">
+    <testcase classname="OverviewImagesModal - component when currentImage is valid should render component" name="OverviewImagesModal - component when currentImage is valid should render component" time="0.036">
     </testcase>
-    <testcase classname="PinsListItem - component  should display list of references for pin" name="PinsListItem - component  should display list of references for pin" time="0.005">
+    <testcase classname="OverviewImagesModal - component when currentImage is valid should render image with valid src" name="OverviewImagesModal - component when currentImage is valid should render image with valid src" time="0.009">
     </testcase>
-    <testcase classname="PinsListItem - component  should display list of elements for pin for chemicals" name="PinsListItem - component  should display list of elements for pin for chemicals" time="0.005">
+    <testcase classname="OverviewImagesModal - component when currentImage is valid should render image wrapper with valid size" name="OverviewImagesModal - component when currentImage is valid should render image wrapper with valid size" time="0.009">
     </testcase>
-    <testcase classname="PinsListItem - component  should not display list of elements for pin for bioentities" name="PinsListItem - component  should not display list of elements for pin for bioentities" time="0">
-      <skipped/>
+  </testsuite>
+  <testsuite name="TopBar - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="1.54" tests="3">
+    <testcase classname="TopBar - component Should contain user avatar, search bar" name="TopBar - component Should contain user avatar, search bar" time="0.037">
+    </testcase>
+    <testcase classname="TopBar - component should open submaps drawer on submaps button click" name="TopBar - component should open submaps drawer on submaps button click" time="0.144">
     </testcase>
-    <testcase classname="PinsListItem - component  should not display list of available submaps for pin when there aren&apos;t any submaps" name="PinsListItem - component  should not display list of available submaps for pin when there aren&apos;t any submaps" time="0.007">
+    <testcase classname="TopBar - component should open overlays drawer on overlays button click" name="TopBar - component should open overlays drawer on overlays button click" time="0.047">
     </testcase>
   </testsuite>
-  <testsuite name="BioEntitiesSubmapItem - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:18" time="1.813" tests="4">
-    <testcase classname="BioEntitiesSubmapItem - component should display map name, number of elements, icon" name="BioEntitiesSubmapItem - component should display map name, number of elements, icon" time="0.022">
+  <testsuite name="useInitializeStore - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="1.683" tests="5">
+    <testcase classname="useInitializeStore - hook when fired should fetch project data in store" name="useInitializeStore - hook when fired should fetch project data in store" time="0.169">
+    </testcase>
+    <testcase classname="useInitializeStore - hook when fired should fetch backgrounds data in store" name="useInitializeStore - hook when fired should fetch backgrounds data in store" time="0.058">
     </testcase>
-    <testcase classname="BioEntitiesSubmapItem - component should navigate user to bio enitites results list after clicking button" name="BioEntitiesSubmapItem - component should navigate user to bio enitites results list after clicking button" time="0.06">
+    <testcase classname="useInitializeStore - hook when fired should fetch overlays data in store" name="useInitializeStore - hook when fired should fetch overlays data in store" time="0.059">
     </testcase>
-    <testcase classname="BioEntitiesSubmapItem - component should open submap and set it to active if it&apos;s not already opened" name="BioEntitiesSubmapItem - component should open submap and set it to active if it&apos;s not already opened" time="0.014">
+    <testcase classname="useInitializeStore - hook when fired should fetch models data in store" name="useInitializeStore - hook when fired should fetch models data in store" time="0.07">
     </testcase>
-    <testcase classname="BioEntitiesSubmapItem - component should set map active if it&apos;s already opened" name="BioEntitiesSubmapItem - component should set map active if it&apos;s already opened" time="0.012">
+    <testcase classname="useInitializeStore - hook when fired should use valid initialize value" name="useInitializeStore - hook when fired should use valid initialize value" time="0.026">
     </testcase>
   </testsuite>
-  <testsuite name="BioEntityDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:18" time="1.825" tests="6">
-    <testcase classname="BioEntityDrawer - component when there&apos;s NO matching bioEntity should not show drawer content" name="BioEntityDrawer - component when there&apos;s NO matching bioEntity should not show drawer content" time="0.027">
+  <testsuite name="MapNavigation - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="1.758" tests="4">
+    <testcase classname="MapNavigation - component should render list of currently opened maps, main map should not have close button" name="MapNavigation - component should render list of currently opened maps, main map should not have close button" time="0.205">
     </testcase>
-    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should show drawer header" name="BioEntityDrawer - component when there IS a matching bioEntity should show drawer header" time="0.048">
+    <testcase classname="MapNavigation - component all maps should have close button expect main map" name="MapNavigation - component all maps should have close button expect main map" time="0.148">
     </testcase>
-    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should show drawer bioEntity full name" name="BioEntityDrawer - component when there IS a matching bioEntity should show drawer bioEntity full name" time="0.003">
+    <testcase classname="MapNavigation - component should close map tab when clicking on close button while" name="MapNavigation - component should close map tab when clicking on close button while" time="0.044">
     </testcase>
-    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should not show drawer bioEntity full name if it doesn&apos;t exists" name="BioEntityDrawer - component when there IS a matching bioEntity should not show drawer bioEntity full name if it doesn&apos;t exists" time="0.004">
+    <testcase classname="MapNavigation - component should close map and open main map if closed currently selected map" name="MapNavigation - component should close map and open main map if closed currently selected map" time="0.073">
     </testcase>
-    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should show list of annotations " name="BioEntityDrawer - component when there IS a matching bioEntity should show list of annotations " time="0.015">
+  </testsuite>
+  <testsuite name="UserOverlayForm - Component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="1.782" tests="7">
+    <testcase classname="UserOverlayForm - Component renders the UserOverlayForm component" name="UserOverlayForm - Component renders the UserOverlayForm component" time="0.068">
     </testcase>
-    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should display associated submaps if bio entity links to submap" name="BioEntityDrawer - component when there IS a matching bioEntity should display associated submaps if bio entity links to submap" time="0.004">
+    <testcase classname="UserOverlayForm - Component should submit the form with elements list when upload button is clicked" name="UserOverlayForm - Component should submit the form with elements list when upload button is clicked" time="0.137">
     </testcase>
-  </testsuite>
-  <testsuite name="onMapSingleClick - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:18" time="1.864" tests="5">
-    <testcase classname="onMapSingleClick - util when always should fire data reset handler" name="onMapSingleClick - util when always should fire data reset handler" time="0.012">
+    <testcase classname="UserOverlayForm - Component should create correct name for file which contains elements list as content" name="UserOverlayForm - Component should create correct name for file which contains elements list as content" time="0.031">
     </testcase>
-    <testcase classname="onMapSingleClick - util when searchResults are undefined does not fire search result action" name="onMapSingleClick - util when searchResults are undefined does not fire search result action" time="0.001">
+    <testcase classname="UserOverlayForm - Component should update the form inputs based on overlay content provided by elements list" name="UserOverlayForm - Component should update the form inputs based on overlay content provided by elements list" time="0.062">
     </testcase>
-    <testcase classname="onMapSingleClick - util when searchResults are empty does not fire search result action" name="onMapSingleClick - util when searchResults are empty does not fire search result action" time="0.001">
+    <testcase classname="UserOverlayForm - Component should display correct filename" name="UserOverlayForm - Component should display correct filename" time="0.087">
     </testcase>
-    <testcase classname="onMapSingleClick - util when searchResults are valid when results type is ALIAS does fire search result action handler" name="onMapSingleClick - util when searchResults are valid when results type is ALIAS does fire search result action handler" time="0.004">
+    <testcase classname="UserOverlayForm - Component should not submit when form is not filled" name="UserOverlayForm - Component should not submit when form is not filled" time="0.011">
     </testcase>
-    <testcase classname="onMapSingleClick - util when searchResults are valid when results type is REACTION does fire search result action - handle reaction" name="onMapSingleClick - util when searchResults are valid when results type is REACTION does fire search result action - handle reaction" time="0.003">
+    <testcase classname="UserOverlayForm - Component should navigate to overlays after clicking backward button" name="UserOverlayForm - Component should navigate to overlays after clicking backward button" time="0.033">
     </testcase>
   </testsuite>
-  <testsuite name="MapNavigation - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:18" time="1.979" tests="4">
-    <testcase classname="MapNavigation - component should render list of currently opened maps, main map should not have close button" name="MapNavigation - component should render list of currently opened maps, main map should not have close button" time="0.162">
+  <testsuite name="useOlMapListeners - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="2.358" tests="2">
+    <testcase classname="useOlMapListeners - util on change:center view event should run onMapPositionChange event" name="useOlMapListeners - util on change:center view event should run onMapPositionChange event" time="0.026">
+    </testcase>
+    <testcase classname="useOlMapListeners - util on singleclick view event should run onMapPositionChange event" name="useOlMapListeners - util on singleclick view event should run onMapPositionChange event" time="0.002">
+    </testcase>
+  </testsuite>
+  <testsuite name="DownloadSubmap - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:38" time="0.912" tests="5">
+    <testcase classname="DownloadSubmap - component should render download button" name="DownloadSubmap - component should render download button" time="0.036">
+    </testcase>
+    <testcase classname="DownloadSubmap - component should open list on button click" name="DownloadSubmap - component should open list on button click" time="0.011">
     </testcase>
-    <testcase classname="MapNavigation - component all maps should have close button expect main map" name="MapNavigation - component all maps should have close button expect main map" time="0.067">
+    <testcase classname="DownloadSubmap - component should close list on button click twice" name="DownloadSubmap - component should close list on button click twice" time="0.007">
     </testcase>
-    <testcase classname="MapNavigation - component should close map tab when clicking on close button while" name="MapNavigation - component should close map tab when clicking on close button while" time="0.034">
+    <testcase classname="DownloadSubmap - component should not show list when closed (default state)" name="DownloadSubmap - component should not show list when closed (default state)" time="0.003">
     </testcase>
-    <testcase classname="MapNavigation - component should close map and open main map if closed currently selected map" name="MapNavigation - component should close map and open main map if closed currently selected map" time="0.033">
+    <testcase classname="DownloadSubmap - component should render list elements with href and names when opened" name="DownloadSubmap - component should render list elements with href and names when opened" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="useInitializeStore - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:18" time="2.036" tests="5">
-    <testcase classname="useInitializeStore - hook when fired should fetch project data in store" name="useInitializeStore - hook when fired should fetch project data in store" time="0.158">
+  <testsuite name="useOlMapTileLayer - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:36" time="2.449" tests="1">
+    <testcase classname="useOlMapTileLayer - util should return valid TileLayer instance" name="useOlMapTileLayer - util should return valid TileLayer instance" time="0.017">
     </testcase>
-    <testcase classname="useInitializeStore - hook when fired should fetch backgrounds data in store" name="useInitializeStore - hook when fired should fetch backgrounds data in store" time="0.083">
+  </testsuite>
+  <testsuite name="SubmapsDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:38" time="0.752" tests="4">
+    <testcase classname="SubmapsDrawer - component should display drawer heading and list of submaps" name="SubmapsDrawer - component should display drawer heading and list of submaps" time="0.065">
     </testcase>
-    <testcase classname="useInitializeStore - hook when fired should fetch overlays data in store" name="useInitializeStore - hook when fired should fetch overlays data in store" time="0.081">
+    <testcase classname="SubmapsDrawer - component should close drawer after clicking close button" name="SubmapsDrawer - component should close drawer after clicking close button" time="0.02">
     </testcase>
-    <testcase classname="useInitializeStore - hook when fired should fetch models data in store" name="useInitializeStore - hook when fired should fetch models data in store" time="0.056">
+    <testcase classname="SubmapsDrawer - component should open submap and set it to active if it&apos;s not already opened" name="SubmapsDrawer - component should open submap and set it to active if it&apos;s not already opened" time="0.033">
     </testcase>
-    <testcase classname="useInitializeStore - hook when fired should use valid initialize value" name="useInitializeStore - hook when fired should use valid initialize value" time="0.023">
+    <testcase classname="SubmapsDrawer - component should set map active if it&apos;s already opened" name="SubmapsDrawer - component should set map active if it&apos;s already opened" time="0.013">
     </testcase>
   </testsuite>
-  <testsuite name="Modal - Component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:19" time="1.054" tests="5">
-    <testcase classname="Modal - Component when modal is hidden should modal have hidden class" name="Modal - Component when modal is hidden should modal have hidden class" time="0.033">
+  <testsuite name="getBioEntitiesFeatures - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:39" time="0.604" tests="3">
+    <testcase classname="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=bioEntity" name="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=bioEntity" time="0.023">
     </testcase>
-    <testcase classname="Modal - Component when modal is shown should modal NOT have hidden class" name="Modal - Component when modal is shown should modal NOT have hidden class" time="0.008">
+    <testcase classname="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=drugs" name="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=drugs" time="0.005">
     </testcase>
-    <testcase classname="Modal - Component when modal is shown shows modal title" name="Modal - Component when modal is shown shows modal title" time="0.004">
+    <testcase classname="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=chemicals" name="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=chemicals" time="0.003">
     </testcase>
-    <testcase classname="Modal - Component when modal is shown shows modal close button" name="Modal - Component when modal is shown shows modal close button" time="0.003">
+  </testsuite>
+  <testsuite name="getPinFeature - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:39" time="0.584" tests="3">
+    <testcase classname="getPinFeature - subUtil should return instance of Feature" name="getPinFeature - subUtil should return instance of Feature" time="0.001">
+    </testcase>
+    <testcase classname="getPinFeature - subUtil should return id as name" name="getPinFeature - subUtil should return id as name" time="0">
     </testcase>
-    <testcase classname="Modal - Component when modal is shown closes modal on close button click" name="Modal - Component when modal is shown closes modal on close button click" time="0.037">
+    <testcase classname="getPinFeature - subUtil should return point parsed with point to projection" name="getPinFeature - subUtil should return point parsed with point to projection" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="onMapRightClick - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.41" tests="5">
-    <testcase classname="onMapRightClick - util when always should fire data reset handler" name="onMapRightClick - util when always should fire data reset handler" time="0.011">
+  <testsuite name="Legend - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:39" time="0.486" tests="4">
+    <testcase classname="Legend - component when is closed should render the component without translation" name="Legend - component when is closed should render the component without translation" time="0.102">
     </testcase>
-    <testcase classname="onMapRightClick - util when always should fire open context menu handler" name="onMapRightClick - util when always should fire open context menu handler" time="0">
+    <testcase classname="Legend - component when is open should render the component with translation" name="Legend - component when is open should render the component with translation" time="0.009">
+    </testcase>
+    <testcase classname="Legend - component when is open should render legend header" name="Legend - component when is open should render legend header" time="0.01">
+    </testcase>
+    <testcase classname="Legend - component when is open should render legend images" name="Legend - component when is open should render legend images" time="0.006">
     </testcase>
-    <testcase classname="onMapRightClick - util when searchResults are undefined does not fire search result action" name="onMapRightClick - util when searchResults are undefined does not fire search result action" time="0.001">
+  </testsuite>
+  <testsuite name="ExportDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:38" time="1.146" tests="4">
+    <testcase classname="ExportDrawer - component should display drawer heading and tab names" name="ExportDrawer - component should display drawer heading and tab names" time="0.128">
+    </testcase>
+    <testcase classname="ExportDrawer - component should close drawer after clicking close button" name="ExportDrawer - component should close drawer after clicking close button" time="0.041">
     </testcase>
-    <testcase classname="onMapRightClick - util when searchResults are valid when results type is ALIAS does fire search result for right click action handler" name="onMapRightClick - util when searchResults are valid when results type is ALIAS does fire search result for right click action handler" time="0.002">
+    <testcase classname="ExportDrawer - component should set elements as initial tab" name="ExportDrawer - component should set elements as initial tab" time="0.033">
     </testcase>
-    <testcase classname="onMapRightClick - util when searchResults are valid when results type is REACTION does fire search result for right click action - handle reaction" name="onMapRightClick - util when searchResults are valid when results type is REACTION does fire search result for right click action - handle reaction" time="0.006">
+    <testcase classname="ExportDrawer - component should set correct tab on tab change" name="ExportDrawer - component should set correct tab on tab change" time="0.03">
     </testcase>
   </testsuite>
-  <testsuite name="undefined" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.431" tests="3">
-    <testcase classname=" renders LoginModal component" name=" renders LoginModal component" time="0.023">
+  <testsuite name="useOlMap - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:37" time="2.239" tests="2">
+    <testcase classname="useOlMap - util when initializing should set map instance" name="useOlMap - util when initializing should set map instance" time="0.07">
     </testcase>
-    <testcase classname=" handles input change correctly" name=" handles input change correctly" time="0.008">
+    <testcase classname="useOlMap - util when initializing should render content inside the target element" name="useOlMap - util when initializing should render content inside the target element" time="0.015">
+    </testcase>
+  </testsuite>
+  <testsuite name="useOlMapLayers - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:38" time="1.244" tests="4">
+    <testcase classname="useOlMapLayers - util should modify layers of the map instance on init" name="useOlMapLayers - util should modify layers of the map instance on init" time="0.047">
     </testcase>
-    <testcase classname=" submits form" name=" submits form" time="0.057">
+    <testcase classname="useOlMapLayers - util should return valid TileLayer instance [1]" name="useOlMapLayers - util should return valid TileLayer instance [1]" time="0.026">
+    </testcase>
+    <testcase classname="useOlMapLayers - util should return valid VectorLayer instance [2]" name="useOlMapLayers - util should return valid VectorLayer instance [2]" time="0.018">
+    </testcase>
+    <testcase classname="useOlMapLayers - util should return valid VectorLayer instance [3]" name="useOlMapLayers - util should return valid VectorLayer instance [3]" time="0.008">
     </testcase>
   </testsuite>
-  <testsuite name="TopBar - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.553" tests="3">
-    <testcase classname="TopBar - component Should contain user avatar, search bar" name="TopBar - component Should contain user avatar, search bar" time="0.021">
+  <testsuite name="MapViewer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:38" time="1.057" tests="2">
+    <testcase classname="MapViewer - component should render component container" name="MapViewer - component should render component container" time="0.057">
     </testcase>
-    <testcase classname="TopBar - component should open submaps drawer on submaps button click" name="TopBar - component should open submaps drawer on submaps button click" time="0.094">
+    <testcase classname="MapViewer - component should render openlayers map inside the component" name="MapViewer - component should render openlayers map inside the component" time="0.015">
     </testcase>
-    <testcase classname="TopBar - component should open overlays drawer on overlays button click" name="TopBar - component should open overlays drawer on overlays button click" time="0.047">
+  </testsuite>
+  <testsuite name="getLineFeature" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:41" time="0.37" tests="2">
+    <testcase classname="getLineFeature should return valid Feature object" name="getLineFeature should return valid Feature object" time="0.003">
+    </testcase>
+    <testcase classname="getLineFeature should return valid Feature object with LineString geometry" name="getLineFeature should return valid Feature object with LineString geometry" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="ResultsList - component " errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.425" tests="2">
-    <testcase classname="ResultsList - component  should render results and navigation panel" name="ResultsList - component  should render results and navigation panel" time="0.056">
+  <testsuite name="Drawer - component" errors="0" failures="0" skipped="1" timestamp="2024-01-12T14:39:38" time="1.584" tests="7">
+    <testcase classname="Drawer - component should render Drawer" name="Drawer - component should render Drawer" time="0.034">
+    </testcase>
+    <testcase classname="Drawer - component should not display drawer when its not open" name="Drawer - component should not display drawer when its not open" time="0.009">
+    </testcase>
+    <testcase classname="Drawer - component search drawer  should open drawer and display search drawer content" name="Drawer - component search drawer  should open drawer and display search drawer content" time="0.026">
     </testcase>
-    <testcase classname="ResultsList - component  should navigate to grouped search results after backward button click" name="ResultsList - component  should navigate to grouped search results after backward button click" time="0.037">
+    <testcase classname="Drawer - component search drawer  should close drawer after pressing close button" name="Drawer - component search drawer  should close drawer after pressing close button" time="0.053">
+    </testcase>
+    <testcase classname="Drawer - component submap drawer should open drawer and display submaps" name="Drawer - component submap drawer should open drawer and display submaps" time="0.004">
+    </testcase>
+    <testcase classname="Drawer - component reaction drawer should open drawer and display reaction" name="Drawer - component reaction drawer should open drawer and display reaction" time="0.069">
+    </testcase>
+    <testcase classname="Drawer - component bioEntity drawer should open drawer and display bioEntity" name="Drawer - component bioEntity drawer should open drawer and display bioEntity" time="0">
+      <skipped/>
     </testcase>
   </testsuite>
-  <testsuite name="handleReactionResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.337" tests="4">
-    <testcase classname="handleReactionResults - util should run getReactionsByIds as first action" name="handleReactionResults - util should run getReactionsByIds as first action" time="0.011">
+  <testsuite name="Modal - Component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:41" time="0.456" tests="5">
+    <testcase classname="Modal - Component when modal is hidden should modal have hidden class" name="Modal - Component when modal is hidden should modal have hidden class" time="0.032">
     </testcase>
-    <testcase classname="handleReactionResults - util should run openReactionDrawerById to empty array as second action" name="handleReactionResults - util should run openReactionDrawerById to empty array as second action" time="0.001">
+    <testcase classname="Modal - Component when modal is shown should modal NOT have hidden class" name="Modal - Component when modal is shown should modal NOT have hidden class" time="0.008">
     </testcase>
-    <testcase classname="handleReactionResults - util should run setBioEntityContent to empty array as third action" name="handleReactionResults - util should run setBioEntityContent to empty array as third action" time="0">
+    <testcase classname="Modal - Component when modal is shown shows modal title" name="Modal - Component when modal is shown shows modal title" time="0.004">
     </testcase>
-    <testcase classname="handleReactionResults - util should run getBioEntity as fourth action" name="handleReactionResults - util should run getBioEntity as fourth action" time="0">
+    <testcase classname="Modal - Component when modal is shown shows modal close button" name="Modal - Component when modal is shown shows modal close button" time="0.003">
+    </testcase>
+    <testcase classname="Modal - Component when modal is shown closes modal on close button click" name="Modal - Component when modal is shown closes modal on close button click" time="0.026">
     </testcase>
   </testsuite>
-  <testsuite name="BioEntitiesPinsList - component " errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.396" tests="1">
-    <testcase classname="BioEntitiesPinsList - component  should display list of bio entites elements" name="BioEntitiesPinsList - component  should display list of bio entites elements" time="0.053">
+  <testsuite name="BioEntityDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:41" time="0.386" tests="6">
+    <testcase classname="BioEntityDrawer - component when there&apos;s NO matching bioEntity should not show drawer content" name="BioEntityDrawer - component when there&apos;s NO matching bioEntity should not show drawer content" time="0.013">
+    </testcase>
+    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should show drawer header" name="BioEntityDrawer - component when there IS a matching bioEntity should show drawer header" time="0.025">
+    </testcase>
+    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should show drawer bioEntity full name" name="BioEntityDrawer - component when there IS a matching bioEntity should show drawer bioEntity full name" time="0.004">
+    </testcase>
+    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should not show drawer bioEntity full name if it doesn&apos;t exists" name="BioEntityDrawer - component when there IS a matching bioEntity should not show drawer bioEntity full name if it doesn&apos;t exists" time="0.004">
+    </testcase>
+    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should show list of annotations " name="BioEntityDrawer - component when there IS a matching bioEntity should show list of annotations " time="0.015">
+    </testcase>
+    <testcase classname="BioEntityDrawer - component when there IS a matching bioEntity should display associated submaps if bio entity links to submap" name="BioEntityDrawer - component when there IS a matching bioEntity should display associated submaps if bio entity links to submap" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="SearchBar - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.397" tests="5">
-    <testcase classname="SearchBar - component should let user type text" name="SearchBar - component should let user type text" time="0.02">
+  <testsuite name="AccordionsDetails - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.481" tests="5">
+    <testcase classname="AccordionsDetails - component should display name of drug" name="AccordionsDetails - component should display name of drug" time="0.035">
     </testcase>
-    <testcase classname="SearchBar - component should disable button when the user clicks the lens button" name="SearchBar - component should disable button when the user clicks the lens button" time="0.058">
+    <testcase classname="AccordionsDetails - component should display description of drug" name="AccordionsDetails - component should display description of drug" time="0.009">
     </testcase>
-    <testcase classname="SearchBar - component should disable input when the user clicks the Enter" name="SearchBar - component should disable input when the user clicks the Enter" time="0.017">
+    <testcase classname="AccordionsDetails - component should display synonyms of drug" name="AccordionsDetails - component should display synonyms of drug" time="0.005">
     </testcase>
-    <testcase classname="SearchBar - component should set initial search value to match searchValue query param" name="SearchBar - component should set initial search value to match searchValue query param" time="0.003">
+    <testcase classname="AccordionsDetails - component should display blood brain barrier for drug" name="AccordionsDetails - component should display blood brain barrier for drug" time="0.014">
     </testcase>
-    <testcase classname="SearchBar - component should change selected search element when user search another" name="SearchBar - component should change selected search element when user search another" time="0.018">
+    <testcase classname="AccordionsDetails - component should display direct evidence publications for chemicals" name="AccordionsDetails - component should display direct evidence publications for chemicals" time="0.007">
     </testcase>
   </testsuite>
-  <testsuite name="SearchDrawerWrapper - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:20" time="0.685" tests="3">
-    <testcase classname="SearchDrawerWrapper - component should display the first step for search" name="SearchDrawerWrapper - component should display the first step for search" time="0.027">
+  <testsuite name="getBioEntitySingleFeature - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.519" tests="6">
+    <testcase classname="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=bioEntity" name="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=bioEntity" time="0.006">
+    </testcase>
+    <testcase classname="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=drugs" name="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=drugs" time="0.001">
+    </testcase>
+    <testcase classname="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=chemicals" name="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=chemicals" time="0.001">
+    </testcase>
+    <testcase classname="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=bioEntity" name="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=bioEntity" time="0.001">
     </testcase>
-    <testcase classname="SearchDrawerWrapper - component should display the second step for value type bioEntity" name="SearchDrawerWrapper - component should display the second step for value type bioEntity" time="0.015">
+    <testcase classname="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=drugs" name="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=drugs" time="0.001">
     </testcase>
-    <testcase classname="SearchDrawerWrapper - component should display the second step for value type drugs" name="SearchDrawerWrapper - component should display the second step for value type drugs" time="0.01">
+    <testcase classname="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=chemicals" name="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=chemicals" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="Drawer - component" errors="0" failures="0" skipped="1" timestamp="2024-01-03T15:35:18" time="2.682" tests="7">
-    <testcase classname="Drawer - component should render Drawer" name="Drawer - component should render Drawer" time="0.03">
+  <testsuite name="undefined" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.502" tests="3">
+    <testcase classname=" renders LoginModal component" name=" renders LoginModal component" time="0.021">
     </testcase>
-    <testcase classname="Drawer - component should not display drawer when its not open" name="Drawer - component should not display drawer when its not open" time="0.006">
+    <testcase classname=" handles input change correctly" name=" handles input change correctly" time="0.013">
     </testcase>
-    <testcase classname="Drawer - component search drawer  should open drawer and display search drawer content" name="Drawer - component search drawer  should open drawer and display search drawer content" time="0.029">
+    <testcase classname=" submits form" name=" submits form" time="0.064">
     </testcase>
-    <testcase classname="Drawer - component search drawer  should close drawer after pressing close button" name="Drawer - component search drawer  should close drawer after pressing close button" time="0.03">
+  </testsuite>
+  <testsuite name="AssociatedSubmap - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.496" tests="4">
+    <testcase classname="AssociatedSubmap - component should not display component when can not find asociated map model" name="AssociatedSubmap - component should not display component when can not find asociated map model" time="0.016">
     </testcase>
-    <testcase classname="Drawer - component submap drawer should open drawer and display submaps" name="Drawer - component submap drawer should open drawer and display submaps" time="0.003">
+    <testcase classname="AssociatedSubmap - component should render component when associated map model is found" name="AssociatedSubmap - component should render component when associated map model is found" time="0.017">
     </testcase>
-    <testcase classname="Drawer - component reaction drawer should open drawer and display reaction" name="Drawer - component reaction drawer should open drawer and display reaction" time="0.079">
+    <testcase classname="AssociatedSubmap - component when map is already opened should open submap and set it to active on open submap button click" name="AssociatedSubmap - component when map is already opened should open submap and set it to active on open submap button click" time="0.038">
     </testcase>
-    <testcase classname="Drawer - component bioEntity drawer should open drawer and display bioEntity" name="Drawer - component bioEntity drawer should open drawer and display bioEntity" time="0">
-      <skipped/>
+    <testcase classname="AssociatedSubmap - component when map is already opened should set map active on open submap button click" name="AssociatedSubmap - component when map is already opened should set map active on open submap button click" time="0.012">
     </testcase>
   </testsuite>
-  <testsuite name="CookieBanner component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.357" tests="3">
-    <testcase classname="CookieBanner component renders cookie banner correctly first time" name="CookieBanner component renders cookie banner correctly first time" time="0.017">
+  <testsuite name="useGetSubmapDownloadUrl - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.409" tests="5">
+    <testcase classname="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" name="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" time="0.01">
+    </testcase>
+    <testcase classname="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" name="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" time="0.002">
     </testcase>
-    <testcase classname="CookieBanner component hides the banner after accepting cookies" name="CookieBanner component hides the banner after accepting cookies" time="0.005">
+    <testcase classname="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" name="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" time="0.001">
     </testcase>
-    <testcase classname="CookieBanner component does not render the cookies banner when cookies are accepted" name="CookieBanner component does not render the cookies banner when cookies are accepted" time="0.005">
+    <testcase classname="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" name="useGetSubmapDownloadUrl - hook when not all params valid should return empty string" time="0.009">
+    </testcase>
+    <testcase classname="useGetSubmapDownloadUrl - hook when all params valid should return valid string" name="useGetSubmapDownloadUrl - hook when all params valid should return valid string" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="PerfectMatchSwitch - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.385" tests="4">
-    <testcase classname="PerfectMatchSwitch - component should initialy be set to false when perfectMatch is not in query or set to false" name="PerfectMatchSwitch - component should initialy be set to false when perfectMatch is not in query or set to false" time="0.026">
+  <testsuite name="BioEntitiesSubmapItem - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.542" tests="4">
+    <testcase classname="BioEntitiesSubmapItem - component should display map name, number of elements, icon" name="BioEntitiesSubmapItem - component should display map name, number of elements, icon" time="0.016">
+    </testcase>
+    <testcase classname="BioEntitiesSubmapItem - component should navigate user to bio enitites results list after clicking button" name="BioEntitiesSubmapItem - component should navigate user to bio enitites results list after clicking button" time="0.081">
     </testcase>
-    <testcase classname="PerfectMatchSwitch - component should initialy be set to true when perfectMatch query is set to true" name="PerfectMatchSwitch - component should initialy be set to true when perfectMatch query is set to true" time="0.008">
+    <testcase classname="BioEntitiesSubmapItem - component should open submap and set it to active if it&apos;s not already opened" name="BioEntitiesSubmapItem - component should open submap and set it to active if it&apos;s not already opened" time="0.017">
     </testcase>
-    <testcase classname="PerfectMatchSwitch - component should set checkbox to true and update store" name="PerfectMatchSwitch - component should set checkbox to true and update store" time="0.015">
+    <testcase classname="BioEntitiesSubmapItem - component should set map active if it&apos;s already opened" name="BioEntitiesSubmapItem - component should set map active if it&apos;s already opened" time="0.028">
+    </testcase>
+  </testsuite>
+  <testsuite name="useOlMapView - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:42" time="0.618" tests="2">
+    <testcase classname="useOlMapView - util should modify view of the map instance on INITIAL position config change" name="useOlMapView - util should modify view of the map instance on INITIAL position config change" time="0.048">
     </testcase>
-    <testcase classname="PerfectMatchSwitch - component should set checkbox to false and update store" name="PerfectMatchSwitch - component should set checkbox to false and update store" time="0.006">
+    <testcase classname="useOlMapView - util should return valid View instance" name="useOlMapView - util should return valid View instance" time="0.019">
     </testcase>
   </testsuite>
-  <testsuite name="handleAliasResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.372" tests="2">
-    <testcase classname="handleAliasResults - util should run openBioEntityDrawerById as first action" name="handleAliasResults - util should run openBioEntityDrawerById as first action" time="0.019">
+  <testsuite name="IncludedCompartmentPathways - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.545" tests="4">
+    <testcase classname="IncludedCompartmentPathways - component should display compartment / pathways checkboxes when fetching data is successful" name="IncludedCompartmentPathways - component should display compartment / pathways checkboxes when fetching data is successful" time="0.082">
     </testcase>
-    <testcase classname="handleAliasResults - util should run getMultiBioEntity as second action" name="handleAliasResults - util should run getMultiBioEntity as second action" time="0.003">
+    <testcase classname="IncludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetching data fails" name="IncludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetching data fails" time="0.004">
+    </testcase>
+    <testcase classname="IncludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetched data is empty" name="IncludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetched data is empty" time="0.005">
+    </testcase>
+    <testcase classname="IncludedCompartmentPathways - component should display loading message when fetching data is pending" name="IncludedCompartmentPathways - component should display loading message when fetching data is pending" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="OverlayListItem - component" errors="0" failures="0" skipped="1" timestamp="2024-01-03T15:35:21" time="0.43" tests="3">
+  <testsuite name="OverlayListItem - component" errors="0" failures="0" skipped="1" timestamp="2024-01-12T14:39:43" time="0.587" tests="4">
     <testcase classname="OverlayListItem - component should render component with correct properties" name="OverlayListItem - component should render component with correct properties" time="0.089">
     </testcase>
-    <testcase classname="OverlayListItem - component should trigger view overlays on view button click and switch background to Empty if available" name="OverlayListItem - component should trigger view overlays on view button click and switch background to Empty if available" time="0.044">
+    <testcase classname="OverlayListItem - component view overlays should trigger view overlays on view button click and switch background to Empty if available" name="OverlayListItem - component view overlays should trigger view overlays on view button click and switch background to Empty if available" time="0.019">
+    </testcase>
+    <testcase classname="OverlayListItem - component view overlays should disable overlay on view button click if overlay is active" name="OverlayListItem - component view overlays should disable overlay on view button click if overlay is active" time="0.038">
     </testcase>
     <testcase classname="OverlayListItem - component should trigger download overlay to PC on download button click" name="OverlayListItem - component should trigger download overlay to PC on download button click" time="0">
       <skipped/>
     </testcase>
   </testsuite>
-  <testsuite name="BioEntitiesPinsListItem - component " errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.367" tests="6">
-    <testcase classname="BioEntitiesPinsListItem - component  should display name of bio entity element" name="BioEntitiesPinsListItem - component  should display name of bio entity element" time="0.018">
+  <testsuite name="PinsList - component " errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.638" tests="5">
+    <testcase classname="PinsList - component  should display list of drug targets" name="PinsList - component  should display list of drug targets" time="0.041">
     </testcase>
-    <testcase classname="BioEntitiesPinsListItem - component  should display symbol of bio entity element" name="BioEntitiesPinsListItem - component  should display symbol of bio entity element" time="0.004">
+    <testcase classname="PinsList - component  should display drug details when drug is searched" name="PinsList - component  should display drug details when drug is searched" time="0.012">
     </testcase>
-    <testcase classname="BioEntitiesPinsListItem - component  should display empty string when symbol does not exist" name="BioEntitiesPinsListItem - component  should display empty string when symbol does not exist" time="0.003">
+    <testcase classname="PinsList - component  should display list of chemicals targets" name="PinsList - component  should display list of chemicals targets" time="0.009">
     </testcase>
-    <testcase classname="BioEntitiesPinsListItem - component  should display string type of bio entity element" name="BioEntitiesPinsListItem - component  should display string type of bio entity element" time="0.003">
+    <testcase classname="PinsList - component  should display chemicals details when chemical is searched" name="PinsList - component  should display chemicals details when chemical is searched" time="0.012">
     </testcase>
-    <testcase classname="BioEntitiesPinsListItem - component  should display synonyms of bio entity element" name="BioEntitiesPinsListItem - component  should display synonyms of bio entity element" time="0.009">
+    <testcase classname="PinsList - component  should not display list of bio enities when bioEntity is searched" name="PinsList - component  should not display list of bio enities when bioEntity is searched" time="0.001">
     </testcase>
-    <testcase classname="BioEntitiesPinsListItem - component  should display list of references for pin" name="BioEntitiesPinsListItem - component  should display list of references for pin" time="0.005">
+  </testsuite>
+  <testsuite name="SearchBar - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.606" tests="5">
+    <testcase classname="SearchBar - component should let user type text" name="SearchBar - component should let user type text" time="0.06">
+    </testcase>
+    <testcase classname="SearchBar - component should disable button when the user clicks the lens button" name="SearchBar - component should disable button when the user clicks the lens button" time="0.054">
+    </testcase>
+    <testcase classname="SearchBar - component should disable input when the user clicks the Enter" name="SearchBar - component should disable input when the user clicks the Enter" time="0.014">
+    </testcase>
+    <testcase classname="SearchBar - component should set initial search value to match searchValue query param" name="SearchBar - component should set initial search value to match searchValue query param" time="0.003">
+    </testcase>
+    <testcase classname="SearchBar - component should change selected search element when user search another" name="SearchBar - component should change selected search element when user search another" time="0.033">
     </testcase>
   </testsuite>
-  <testsuite name="BioEntitiesAccordion - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.436" tests="2">
-    <testcase classname="BioEntitiesAccordion - component should display loading indicator when bioEntity search is pending" name="BioEntitiesAccordion - component should display loading indicator when bioEntity search is pending" time="0.044">
+  <testsuite name="PinsListItem - component " errors="0" failures="0" skipped="1" timestamp="2024-01-12T14:39:43" time="0.562" tests="6">
+    <testcase classname="PinsListItem - component  should display full name of pin" name="PinsListItem - component  should display full name of pin" time="0.04">
     </testcase>
-    <testcase classname="BioEntitiesAccordion - component should render list of maps with number of entities after succeeded bio entity search" name="BioEntitiesAccordion - component should render list of maps with number of entities after succeeded bio entity search" time="0.009">
+    <testcase classname="PinsListItem - component  should display list of elements for pin for drugs" name="PinsListItem - component  should display list of elements for pin for drugs" time="0.006">
+    </testcase>
+    <testcase classname="PinsListItem - component  should display list of references for pin" name="PinsListItem - component  should display list of references for pin" time="0.004">
+    </testcase>
+    <testcase classname="PinsListItem - component  should display list of elements for pin for chemicals" name="PinsListItem - component  should display list of elements for pin for chemicals" time="0.004">
+    </testcase>
+    <testcase classname="PinsListItem - component  should not display list of elements for pin for bioentities" name="PinsListItem - component  should not display list of elements for pin for bioentities" time="0">
+      <skipped/>
+    </testcase>
+    <testcase classname="PinsListItem - component  should not display list of available submaps for pin when there aren&apos;t any submaps" name="PinsListItem - component  should not display list of available submaps for pin when there aren&apos;t any submaps" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="SubmapsDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.447" tests="4">
-    <testcase classname="SubmapsDrawer - component should display drawer heading and list of submaps" name="SubmapsDrawer - component should display drawer heading and list of submaps" time="0.021">
+  <testsuite name="DrugsAccordion - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.633" tests="5">
+    <testcase classname="DrugsAccordion - component should display drugs number after succesfull chemicals search" name="DrugsAccordion - component should display drugs number after succesfull chemicals search" time="0.019">
     </testcase>
-    <testcase classname="SubmapsDrawer - component should close drawer after clicking close button" name="SubmapsDrawer - component should close drawer after clicking close button" time="0.018">
+    <testcase classname="DrugsAccordion - component should display loading indicator while waiting for chemicals search response" name="DrugsAccordion - component should display loading indicator while waiting for chemicals search response" time="0.009">
     </testcase>
-    <testcase classname="SubmapsDrawer - component should open submap and set it to active if it&apos;s not already opened" name="SubmapsDrawer - component should open submap and set it to active if it&apos;s not already opened" time="0.061">
+    <testcase classname="DrugsAccordion - component should navigate user to chemical results list after clicking button" name="DrugsAccordion - component should navigate user to chemical results list after clicking button" time="0.004">
     </testcase>
-    <testcase classname="SubmapsDrawer - component should set map active if it&apos;s already opened" name="SubmapsDrawer - component should set map active if it&apos;s already opened" time="0.011">
+    <testcase classname="DrugsAccordion - component should disable navigation button when there is no chemicals" name="DrugsAccordion - component should disable navigation button when there is no chemicals" time="0.004">
+    </testcase>
+    <testcase classname="DrugsAccordion - component should disable navigation button when waiting for api response" name="DrugsAccordion - component should disable navigation button when waiting for api response" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="BackgroundSelector - component" errors="0" failures="0" skipped="1" timestamp="2024-01-03T15:35:21" time="0.4" tests="6">
-    <testcase classname="BackgroundSelector - component should initialy display default value" name="BackgroundSelector - component should initialy display default value" time="0.017">
+  <testsuite name="Annotations - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.594" tests="4">
+    <testcase classname="Annotations - component should display annotations checkboxes when fetching data is successful" name="Annotations - component should display annotations checkboxes when fetching data is successful" time="0.091">
     </testcase>
-    <testcase classname="BackgroundSelector - component should display selected value name when it&apos;s not main background" name="BackgroundSelector - component should display selected value name when it&apos;s not main background" time="0.018">
+    <testcase classname="Annotations - component should not display annotations checkboxes when fetching data fails" name="Annotations - component should not display annotations checkboxes when fetching data fails" time="0.008">
     </testcase>
-    <testcase classname="BackgroundSelector - component should change redux map state on selecting background" name="BackgroundSelector - component should change redux map state on selecting background" time="0.02">
+    <testcase classname="Annotations - component should not display annotations checkboxes when fetched data is empty object" name="Annotations - component should not display annotations checkboxes when fetched data is empty object" time="0.009">
     </testcase>
-    <testcase classname="BackgroundSelector - component query params should display default value when main background id is in query params" name="BackgroundSelector - component query params should display default value when main background id is in query params" time="0.009">
+    <testcase classname="Annotations - component should display loading message when fetching data is pending" name="Annotations - component should display loading message when fetching data is pending" time="0.013">
     </testcase>
-    <testcase classname="BackgroundSelector - component query params should display correct background when background id is in query params" name="BackgroundSelector - component query params should display correct background when background id is in query params" time="0.003">
+  </testsuite>
+  <testsuite name="Annotations - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.586" tests="4">
+    <testcase classname="Annotations - component should display annotations checkboxes when fetching data is successful" name="Annotations - component should display annotations checkboxes when fetching data is successful" time="0.058">
     </testcase>
-    <testcase classname="BackgroundSelector - component query params should set backgroundid in query on selecting background" name="BackgroundSelector - component query params should set backgroundid in query on selecting background" time="0">
-      <skipped/>
+    <testcase classname="Annotations - component should not display annotations checkboxes when fetching data fails" name="Annotations - component should not display annotations checkboxes when fetching data fails" time="0.005">
+    </testcase>
+    <testcase classname="Annotations - component should not display annotations checkboxes when fetched data is empty object" name="Annotations - component should not display annotations checkboxes when fetched data is empty object" time="0.004">
+    </testcase>
+    <testcase classname="Annotations - component should display loading message when fetching data is pending" name="Annotations - component should display loading message when fetching data is pending" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="AccordionsDetails - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.452" tests="5">
-    <testcase classname="AccordionsDetails - component should display name of drug" name="AccordionsDetails - component should display name of drug" time="0.046">
+  <testsuite name="SearchDrawerWrapper - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.617" tests="3">
+    <testcase classname="SearchDrawerWrapper - component should display the first step for search" name="SearchDrawerWrapper - component should display the first step for search" time="0.028">
     </testcase>
-    <testcase classname="AccordionsDetails - component should display description of drug" name="AccordionsDetails - component should display description of drug" time="0.009">
+    <testcase classname="SearchDrawerWrapper - component should display the second step for value type bioEntity" name="SearchDrawerWrapper - component should display the second step for value type bioEntity" time="0.018">
+    </testcase>
+    <testcase classname="SearchDrawerWrapper - component should display the second step for value type drugs" name="SearchDrawerWrapper - component should display the second step for value type drugs" time="0.018">
+    </testcase>
+  </testsuite>
+  <testsuite name="chemicals reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.305" tests="4">
+    <testcase classname="chemicals reducer should match initial state" name="chemicals reducer should match initial state" time="0.003">
     </testcase>
-    <testcase classname="AccordionsDetails - component should display synonyms of drug" name="AccordionsDetails - component should display synonyms of drug" time="0.011">
+    <testcase classname="chemicals reducer should update store after succesfull getChemicals query" name="chemicals reducer should update store after succesfull getChemicals query" time="0.027">
     </testcase>
-    <testcase classname="AccordionsDetails - component should display blood brain barrier for drug" name="AccordionsDetails - component should display blood brain barrier for drug" time="0.007">
+    <testcase classname="chemicals reducer should update store after failed getChemicals query" name="chemicals reducer should update store after failed getChemicals query" time="0.071">
     </testcase>
-    <testcase classname="AccordionsDetails - component should display direct evidence publications for chemicals" name="AccordionsDetails - component should display direct evidence publications for chemicals" time="0.008">
+    <testcase classname="chemicals reducer should update store on loading getChemicals query" name="chemicals reducer should update store on loading getChemicals query" time="0.017">
     </testcase>
   </testsuite>
-  <testsuite name="PinsList - component " errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.464" tests="5">
-    <testcase classname="PinsList - component  should display list of drug targets" name="PinsList - component  should display list of drug targets" time="0.057">
+  <testsuite name="CollapsibleSection - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.325" tests="2">
+    <testcase classname="CollapsibleSection - component should render with title and content" name="CollapsibleSection - component should render with title and content" time="0.023">
     </testcase>
-    <testcase classname="PinsList - component  should display drug details when drug is searched" name="PinsList - component  should display drug details when drug is searched" time="0.009">
+    <testcase classname="CollapsibleSection - component should collapse and expands on button click" name="CollapsibleSection - component should collapse and expands on button click" time="0.042">
     </testcase>
-    <testcase classname="PinsList - component  should display list of chemicals targets" name="PinsList - component  should display list of chemicals targets" time="0.066">
+  </testsuite>
+  <testsuite name="usePointToProjection - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.33" tests="3">
+    <testcase classname="usePointToProjection - util when mapSize arg is undefined in redux should return fallback value on function call" name="usePointToProjection - util when mapSize arg is undefined in redux should return fallback value on function call" time="0.03">
     </testcase>
-    <testcase classname="PinsList - component  should display chemicals details when chemical is searched" name="PinsList - component  should display chemicals details when chemical is searched" time="0.02">
+    <testcase classname="usePointToProjection - util when mapSize arg is invalid in redux should return fallback value on function call" name="usePointToProjection - util when mapSize arg is invalid in redux should return fallback value on function call" time="0.004">
     </testcase>
-    <testcase classname="PinsList - component  should not display list of bio enities when bioEntity is searched" name="PinsList - component  should not display list of bio enities when bioEntity is searched" time="0.002">
+    <testcase classname="usePointToProjection - util when all args are valid in redux should return valid lat lng value on function call" name="usePointToProjection - util when all args are valid in redux should return valid lat lng value on function call" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="useReduxBusQueryManager - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.367" tests="3">
-    <testcase classname="useReduxBusQueryManager - util on init when data is NOT loaded should not update query" name="useReduxBusQueryManager - util on init when data is NOT loaded should not update query" time="0.032">
+  <testsuite name="onMapRightClick - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.38" tests="5">
+    <testcase classname="onMapRightClick - util when always should fire data reset handler" name="onMapRightClick - util when always should fire data reset handler" time="0.02">
+    </testcase>
+    <testcase classname="onMapRightClick - util when always should fire open context menu handler" name="onMapRightClick - util when always should fire open context menu handler" time="0">
+    </testcase>
+    <testcase classname="onMapRightClick - util when searchResults are undefined does not fire search result action" name="onMapRightClick - util when searchResults are undefined does not fire search result action" time="0.002">
     </testcase>
-    <testcase classname="useReduxBusQueryManager - util on init when data is loaded should update query" name="useReduxBusQueryManager - util on init when data is loaded should update query" time="0.011">
+    <testcase classname="onMapRightClick - util when searchResults are valid when results type is ALIAS does fire search result for right click action handler" name="onMapRightClick - util when searchResults are valid when results type is ALIAS does fire search result for right click action handler" time="0.006">
     </testcase>
-    <testcase classname="useReduxBusQueryManager - util on init when data is loaded should update query params to valid ones" name="useReduxBusQueryManager - util on init when data is loaded should update query params to valid ones" time="0.011">
+    <testcase classname="onMapRightClick - util when searchResults are valid when results type is REACTION does fire search result for right click action - handle reaction" name="onMapRightClick - util when searchResults are valid when results type is REACTION does fire search result for right click action - handle reaction" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="DrugsAccordion - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.386" tests="5">
-    <testcase classname="DrugsAccordion - component should display drugs number after succesfull chemicals search" name="DrugsAccordion - component should display drugs number after succesfull chemicals search" time="0.017">
+  <testsuite name="DrawerHeadingBackwardButton - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.425" tests="3">
+    <testcase classname="DrawerHeadingBackwardButton - component should render passed values" name="DrawerHeadingBackwardButton - component should render passed values" time="0.043">
     </testcase>
-    <testcase classname="DrugsAccordion - component should display loading indicator while waiting for chemicals search response" name="DrugsAccordion - component should display loading indicator while waiting for chemicals search response" time="0.007">
+    <testcase classname="DrawerHeadingBackwardButton - component should call backward function on back button click" name="DrawerHeadingBackwardButton - component should call backward function on back button click" time="0.007">
     </testcase>
-    <testcase classname="DrugsAccordion - component should navigate user to chemical results list after clicking button" name="DrugsAccordion - component should navigate user to chemical results list after clicking button" time="0.003">
+    <testcase classname="DrawerHeadingBackwardButton - component should call class drawer on close button click" name="DrawerHeadingBackwardButton - component should call class drawer on close button click" time="0.013">
     </testcase>
-    <testcase classname="DrugsAccordion - component should disable navigation button when there is no chemicals" name="DrugsAccordion - component should disable navigation button when there is no chemicals" time="0.024">
+  </testsuite>
+  <testsuite name="handleAliasResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.453" tests="2">
+    <testcase classname="handleAliasResults - util should run openBioEntityDrawerById as first action" name="handleAliasResults - util should run openBioEntityDrawerById as first action" time="0.01">
     </testcase>
-    <testcase classname="DrugsAccordion - component should disable navigation button when waiting for api response" name="DrugsAccordion - component should disable navigation button when waiting for api response" time="0.009">
+    <testcase classname="handleAliasResults - util should run getMultiBioEntity as second action" name="handleAliasResults - util should run getMultiBioEntity as second action" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="handleBioEntityResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.425" tests="2">
-    <testcase classname="handleBioEntityResults - util should run setCurrentSelectedBioEntityId as first action" name="handleBioEntityResults - util should run setCurrentSelectedBioEntityId as first action" time="0.005">
+  <testsuite name="ReactionDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:43" time="0.407" tests="6">
+    <testcase classname="ReactionDrawer - component when there&apos;s NO matching reaction should not show drawer content" name="ReactionDrawer - component when there&apos;s NO matching reaction should not show drawer content" time="0.015">
     </testcase>
-    <testcase classname="handleBioEntityResults - util should run getMultiBioEntity as second action" name="handleBioEntityResults - util should run getMultiBioEntity as second action" time="0.001">
+    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer header" name="ReactionDrawer - component when there IS a matching reaction should show drawer header" time="0.012">
+    </testcase>
+    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction type" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction type" time="0.012">
+    </testcase>
+    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction annotations title" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction annotations title" time="0.008">
+    </testcase>
+    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction source for source=-xkkfqwc--djxqb" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction source for source=-xkkfqwc--djxqb" time="0.003">
+    </testcase>
+    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction reference with text=ajixclmqaiovkqs (-79.90823308937252), href=https://ut.com" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction reference with text=ajixclmqaiovkqs (-79.90823308937252), href=https://ut.com" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="ReactionDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:21" time="0.362" tests="6">
-    <testcase classname="ReactionDrawer - component when there&apos;s NO matching reaction should not show drawer content" name="ReactionDrawer - component when there&apos;s NO matching reaction should not show drawer content" time="0.01">
+  <testsuite name="BioEntitiesPinsListItem - component " errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.493" tests="6">
+    <testcase classname="BioEntitiesPinsListItem - component  should display name of bio entity element" name="BioEntitiesPinsListItem - component  should display name of bio entity element" time="0.022">
     </testcase>
-    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer header" name="ReactionDrawer - component when there IS a matching reaction should show drawer header" time="0.01">
+    <testcase classname="BioEntitiesPinsListItem - component  should display symbol of bio entity element" name="BioEntitiesPinsListItem - component  should display symbol of bio entity element" time="0.004">
     </testcase>
-    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction type" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction type" time="0.005">
+    <testcase classname="BioEntitiesPinsListItem - component  should display empty string when symbol does not exist" name="BioEntitiesPinsListItem - component  should display empty string when symbol does not exist" time="0.004">
     </testcase>
-    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction annotations title" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction annotations title" time="0.003">
+    <testcase classname="BioEntitiesPinsListItem - component  should display string type of bio entity element" name="BioEntitiesPinsListItem - component  should display string type of bio entity element" time="0.003">
     </testcase>
-    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction source for source=-xkkfqwc--djxqb" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction source for source=-xkkfqwc--djxqb" time="0.004">
+    <testcase classname="BioEntitiesPinsListItem - component  should display synonyms of bio entity element" name="BioEntitiesPinsListItem - component  should display synonyms of bio entity element" time="0.004">
     </testcase>
-    <testcase classname="ReactionDrawer - component when there IS a matching reaction should show drawer reaction reference with text=ajixclmqaiovkqs (-79.90823308937252), href=https://ut.com" name="ReactionDrawer - component when there IS a matching reaction should show drawer reaction reference with text=ajixclmqaiovkqs (-79.90823308937252), href=https://ut.com" time="0.004">
+    <testcase classname="BioEntitiesPinsListItem - component  should display list of references for pin" name="BioEntitiesPinsListItem - component  should display list of references for pin" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="ReactionDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.336" tests="3">
-    <testcase classname="ReactionDrawer - component should show reference group with source=" name="ReactionDrawer - component should show reference group with source=" time="0.013">
+  <testsuite name="useOlMapReactionsLayer - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.54" tests="2">
+    <testcase classname="useOlMapReactionsLayer - util should return VectorLayer" name="useOlMapReactionsLayer - util should return VectorLayer" time="0.025">
     </testcase>
-    <testcase classname="ReactionDrawer - component should show reference group with source=source1" name="ReactionDrawer - component should show reference group with source=source1" time="0.004">
+    <testcase classname="useOlMapReactionsLayer - util should return VectorLayer with valid Style" name="useOlMapReactionsLayer - util should return VectorLayer with valid Style" time="0.002">
     </testcase>
-    <testcase classname="ReactionDrawer - component should show reference group with source=source2" name="ReactionDrawer - component should show reference group with source=source2" time="0.003">
+  </testsuite>
+  <testsuite name="BioEntitiesPinsList - component " errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.598" tests="1">
+    <testcase classname="BioEntitiesPinsList - component  should display list of bio entites elements" name="BioEntitiesPinsList - component  should display list of bio entites elements" time="0.07">
     </testcase>
   </testsuite>
-  <testsuite name="GeneralOverlays - component" errors="0" failures="0" skipped="1" timestamp="2024-01-03T15:35:21" time="0.392" tests="6">
-    <testcase classname="GeneralOverlays - component render should display PD substantia nigra overlay item" name="GeneralOverlays - component render should display PD substantia nigra overlay item" time="0.018">
+  <testsuite name="UserOverlays component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.441" tests="4">
+    <testcase classname="UserOverlays component renders loading message when user is loading" name="UserOverlays component renders loading message when user is loading" time="0.017">
     </testcase>
-    <testcase classname="GeneralOverlays - component render should display Ageing brain overlay item" name="GeneralOverlays - component render should display Ageing brain overlay item" time="0.004">
+    <testcase classname="UserOverlays component renders login button when user is not authenticated" name="UserOverlays component renders login button when user is not authenticated" time="0.011">
     </testcase>
-    <testcase classname="GeneralOverlays - component render should display PRKN variants example overlay item" name="GeneralOverlays - component render should display PRKN variants example overlay item" time="0.004">
+    <testcase classname="UserOverlays component dispatches openLoginModal action when Login button is clicked" name="UserOverlays component dispatches openLoginModal action when Login button is clicked" time="0.019">
     </testcase>
-    <testcase classname="GeneralOverlays - component render should display PRKN variants doubled overlay item" name="GeneralOverlays - component render should display PRKN variants doubled overlay item" time="0.003">
+    <testcase classname="UserOverlays component renders add overlay button when user is authenticated" name="UserOverlays component renders add overlay button when user is authenticated" time="0.012">
     </testcase>
-    <testcase classname="GeneralOverlays - component render should display Generic advanced format overlay overlay item" name="GeneralOverlays - component render should display Generic advanced format overlay overlay item" time="0.003">
+  </testsuite>
+  <testsuite name="BioEntitiesAccordion - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.536" tests="2">
+    <testcase classname="BioEntitiesAccordion - component should display loading indicator when bioEntity search is pending" name="BioEntitiesAccordion - component should display loading indicator when bioEntity search is pending" time="0.054">
     </testcase>
-    <testcase classname="GeneralOverlays - component view overlays should allow to turn on more then one overlay" name="GeneralOverlays - component view overlays should allow to turn on more then one overlay" time="0">
-      <skipped/>
+    <testcase classname="BioEntitiesAccordion - component should render list of maps with number of entities after succeeded bio entity search" name="BioEntitiesAccordion - component should render list of maps with number of entities after succeeded bio entity search" time="0.018">
     </testcase>
   </testsuite>
-  <testsuite name="DrugsAccordion - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.38" tests="5">
-    <testcase classname="DrugsAccordion - component should display drugs number after succesfull drug search" name="DrugsAccordion - component should display drugs number after succesfull drug search" time="0.018">
+  <testsuite name="ContextMenu - Component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.591" tests="6">
+    <testcase classname="ContextMenu - Component when context menu is hidden should context menu has hidden class" name="ContextMenu - Component when context menu is hidden should context menu has hidden class" time="0.035">
     </testcase>
-    <testcase classname="DrugsAccordion - component should display loading indicator while waiting for drug search response" name="DrugsAccordion - component should display loading indicator while waiting for drug search response" time="0.014">
+    <testcase classname="ContextMenu - Component when context menu is shown should display context menu" name="ContextMenu - Component when context menu is shown should display context menu" time="0.003">
     </testcase>
-    <testcase classname="DrugsAccordion - component should navigate user to drugs results list after clicking button" name="DrugsAccordion - component should navigate user to drugs results list after clicking button" time="0.003">
+    <testcase classname="ContextMenu - Component when context menu is shown should display proper text when uniprot is not provided" name="ContextMenu - Component when context menu is shown should display proper text when uniprot is not provided" time="0.002">
     </testcase>
-    <testcase classname="DrugsAccordion - component should disable navigation button when there is no drugs" name="DrugsAccordion - component should disable navigation button when there is no drugs" time="0.009">
+    <testcase classname="ContextMenu - Component when context menu is shown should display proper text when uniprot is not provided" name="ContextMenu - Component when context menu is shown should display proper text when uniprot is not provided" time="0.005">
     </testcase>
-    <testcase classname="DrugsAccordion - component should disable navigation button when waiting for api response" name="DrugsAccordion - component should disable navigation button when waiting for api response" time="0.002">
+    <testcase classname="ContextMenu - Component when context menu is shown should display uniprot id as option if it is provided" name="ContextMenu - Component when context menu is shown should display uniprot id as option if it is provided" time="0.008">
+    </testcase>
+    <testcase classname="ContextMenu - Component when context menu is shown should open molart modal when clicking on uniprot" name="ContextMenu - Component when context menu is shown should open molart modal when clicking on uniprot" time="0.012">
     </testcase>
   </testsuite>
-  <testsuite name="useOverviewImageLinkActions - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.408" tests="9">
-    <testcase classname="useOverviewImageLinkActions - hook when clicked on image link when image id is NOT valid should NOT fire action set overview image id" name="useOverviewImageLinkActions - hook when clicked on image link when image id is NOT valid should NOT fire action set overview image id" time="0.007">
+  <testsuite name="useOverviewImageLinkActions - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.459" tests="9">
+    <testcase classname="useOverviewImageLinkActions - hook when clicked on image link when image id is NOT valid should NOT fire action set overview image id" name="useOverviewImageLinkActions - hook when clicked on image link when image id is NOT valid should NOT fire action set overview image id" time="0.005">
     </testcase>
-    <testcase classname="useOverviewImageLinkActions - hook when clicked on image link when image id is valid should fire action set overview image id" name="useOverviewImageLinkActions - hook when clicked on image link when image id is valid should fire action set overview image id" time="0">
+    <testcase classname="useOverviewImageLinkActions - hook when clicked on image link when image id is valid should fire action set overview image id" name="useOverviewImageLinkActions - hook when clicked on image link when image id is valid should fire action set overview image id" time="0.001">
     </testcase>
-    <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set active map" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set active map" time="0.006">
+    <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set active map" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set active map" time="0.004">
     </testcase>
-    <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set map position" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set map position" time="0.002">
+    <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set map position" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should set map position" time="0.001">
     </testcase>
     <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should close modal" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is already opened should close modal" time="0">
     </testcase>
     <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should open map and set as active" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should open map and set as active" time="0.001">
     </testcase>
-    <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should set map position" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should set map position" time="0">
+    <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should set map position" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should set map position" time="0.001">
     </testcase>
     <testcase classname="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should close modal" name="useOverviewImageLinkActions - hook when clicked on model link when model is available when map is not opened should close modal" time="0.001">
     </testcase>
-    <testcase classname="useOverviewImageLinkActions - hook when clicked on unsupported link should noop" name="useOverviewImageLinkActions - hook when clicked on unsupported link should noop" time="0.001">
+    <testcase classname="useOverviewImageLinkActions - hook when clicked on unsupported link should noop" name="useOverviewImageLinkActions - hook when clicked on unsupported link should noop" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="useOverviewImageLinkConfigs - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.291" tests="3">
-    <testcase classname="useOverviewImageLinkConfigs - hook when currentImage is undefined should return empty array" name="useOverviewImageLinkConfigs - hook when currentImage is undefined should return empty array" time="0.002">
+  <testsuite name="ExcludedCompartmentPathways - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.524" tests="4">
+    <testcase classname="ExcludedCompartmentPathways - component should display compartment / pathways checkboxes when fetching data is successful" name="ExcludedCompartmentPathways - component should display compartment / pathways checkboxes when fetching data is successful" time="0.074">
     </testcase>
-    <testcase classname="useOverviewImageLinkConfigs - hook when sizeFactor is zero should return empty array" name="useOverviewImageLinkConfigs - hook when sizeFactor is zero should return empty array" time="0">
+    <testcase classname="ExcludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetching data fails" name="ExcludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetching data fails" time="0.005">
     </testcase>
-    <testcase classname="useOverviewImageLinkConfigs - hook when all args are valid should return correct value" name="useOverviewImageLinkConfigs - hook when all args are valid should return correct value" time="0.001">
+    <testcase classname="ExcludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetched data is empty" name="ExcludedCompartmentPathways - component should not display compartment / pathways checkboxes when fetched data is empty" time="0.005">
+    </testcase>
+    <testcase classname="ExcludedCompartmentPathways - component should display loading message when fetching data is pending" name="ExcludedCompartmentPathways - component should display loading message when fetching data is pending" time="0.013">
     </testcase>
   </testsuite>
-  <testsuite name="useOverviewImage - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.379" tests="3">
-    <testcase classname="useOverviewImage - hook when image data is invalid should return default size of image and empty imageUrl" name="useOverviewImage - hook when image data is invalid should return default size of image and empty imageUrl" time="0.009">
+  <testsuite name="DrugsAccordion - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.542" tests="5">
+    <testcase classname="DrugsAccordion - component should display drugs number after succesfull drug search" name="DrugsAccordion - component should display drugs number after succesfull drug search" time="0.039">
+    </testcase>
+    <testcase classname="DrugsAccordion - component should display loading indicator while waiting for drug search response" name="DrugsAccordion - component should display loading indicator while waiting for drug search response" time="0.015">
     </testcase>
-    <testcase classname="useOverviewImage - hook when containerReact is undefined should return default size of image and valid imageUrl" name="useOverviewImage - hook when containerReact is undefined should return default size of image and valid imageUrl" time="0.001">
+    <testcase classname="DrugsAccordion - component should navigate user to drugs results list after clicking button" name="DrugsAccordion - component should navigate user to drugs results list after clicking button" time="0.009">
     </testcase>
-    <testcase classname="useOverviewImage - hook when containerReact is valid should return size of image and valid imageUrl" name="useOverviewImage - hook when containerReact is valid should return size of image and valid imageUrl" time="0.004">
+    <testcase classname="DrugsAccordion - component should disable navigation button when there is no drugs" name="DrugsAccordion - component should disable navigation button when there is no drugs" time="0.004">
+    </testcase>
+    <testcase classname="DrugsAccordion - component should disable navigation button when waiting for api response" name="DrugsAccordion - component should disable navigation button when waiting for api response" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="useOverviewImageSize - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.347" tests="3">
-    <testcase classname="useOverviewImageSize - hook when currentImage is not valid should return default value" name="useOverviewImageSize - hook when currentImage is not valid should return default value" time="0.005">
+  <testsuite name="GeneralOverlays - component" errors="0" failures="0" skipped="1" timestamp="2024-01-12T14:39:44" time="0.539" tests="6">
+    <testcase classname="GeneralOverlays - component render should display PD substantia nigra overlay item" name="GeneralOverlays - component render should display PD substantia nigra overlay item" time="0.021">
     </testcase>
-    <testcase classname="useOverviewImageSize - hook when containerRect is not valid should return default value" name="useOverviewImageSize - hook when containerRect is not valid should return default value" time="0">
+    <testcase classname="GeneralOverlays - component render should display Ageing brain overlay item" name="GeneralOverlays - component render should display Ageing brain overlay item" time="0.017">
     </testcase>
-    <testcase classname="useOverviewImageSize - hook when data is valid should return calculated height, width, sizeFactor" name="useOverviewImageSize - hook when data is valid should return calculated height, width, sizeFactor" time="0.001">
+    <testcase classname="GeneralOverlays - component render should display PRKN variants example overlay item" name="GeneralOverlays - component render should display PRKN variants example overlay item" time="0.005">
     </testcase>
-  </testsuite>
-  <testsuite name="DrawerHeadingBackwardButton - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.335" tests="3">
-    <testcase classname="DrawerHeadingBackwardButton - component should render passed values" name="DrawerHeadingBackwardButton - component should render passed values" time="0.03">
+    <testcase classname="GeneralOverlays - component render should display PRKN variants doubled overlay item" name="GeneralOverlays - component render should display PRKN variants doubled overlay item" time="0.003">
     </testcase>
-    <testcase classname="DrawerHeadingBackwardButton - component should call backward function on back button click" name="DrawerHeadingBackwardButton - component should call backward function on back button click" time="0.007">
+    <testcase classname="GeneralOverlays - component render should display Generic advanced format overlay overlay item" name="GeneralOverlays - component render should display Generic advanced format overlay overlay item" time="0.01">
     </testcase>
-    <testcase classname="DrawerHeadingBackwardButton - component should call class drawer on close button click" name="DrawerHeadingBackwardButton - component should call class drawer on close button click" time="0.018">
+    <testcase classname="GeneralOverlays - component view overlays should allow to turn on more then one overlay" name="GeneralOverlays - component view overlays should allow to turn on more then one overlay" time="0">
+      <skipped/>
     </testcase>
   </testsuite>
-  <testsuite name="MapAdditionalOptions - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.324" tests="3">
-    <testcase classname="MapAdditionalOptions - component should display background selector" name="MapAdditionalOptions - component should display background selector" time="0.016">
+  <testsuite name="OverlaysLegends - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.489" tests="6">
+    <testcase classname="OverlaysLegends - component when active overlays are empty should not render list of overlays legends" name="OverlaysLegends - component when active overlays are empty should not render list of overlays legends" time="0.012">
     </testcase>
-    <testcase classname="MapAdditionalOptions - component should render browse overview images button" name="MapAdditionalOptions - component should render browse overview images button" time="0.003">
+    <testcase classname="OverlaysLegends - component when active overlays are present should render overlay legend" name="OverlaysLegends - component when active overlays are present should render overlay legend" time="0.006">
+    </testcase>
+    <testcase classname="OverlaysLegends - component when active overlays are present should render overlay legend" name="OverlaysLegends - component when active overlays are present should render overlay legend" time="0.008">
     </testcase>
-    <testcase classname="MapAdditionalOptions - component should open overview image modal on button click" name="MapAdditionalOptions - component should open overview image modal on button click" time="0.004">
+    <testcase classname="OverlaysLegends - component when active overlays are present should render overlay legend" name="OverlaysLegends - component when active overlays are present should render overlay legend" time="0.002">
+    </testcase>
+    <testcase classname="OverlaysLegends - component when active overlays are present should render overlay legend" name="OverlaysLegends - component when active overlays are present should render overlay legend" time="0.003">
+    </testcase>
+    <testcase classname="OverlaysLegends - component when active overlays are present should render overlay legend" name="OverlaysLegends - component when active overlays are present should render overlay legend" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="SearchDrawerTabs - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.312" tests="2">
-    <testcase classname="SearchDrawerTabs - component should display tabs with search values" name="SearchDrawerTabs - component should display tabs with search values" time="0.016">
+  <testsuite name="CheckboxFilter - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.298" tests="11">
+    <testcase classname="CheckboxFilter - component should render CheckboxFilter properly" name="CheckboxFilter - component should render CheckboxFilter properly" time="0.018">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should filter options based on search term" name="CheckboxFilter - component should filter options based on search term" time="0.012">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should handle checkbox value change" name="CheckboxFilter - component should handle checkbox value change" time="0.008">
     </testcase>
-    <testcase classname="SearchDrawerTabs - component second test" name="SearchDrawerTabs - component second test" time="0.007">
+    <testcase classname="CheckboxFilter - component should call onFilterChange when searching new term" name="CheckboxFilter - component should call onFilterChange when searching new term" time="0.005">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should display message when no elements are found" name="CheckboxFilter - component should display message when no elements are found" time="0.004">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should display message when options are empty" name="CheckboxFilter - component should display message when options are empty" time="0.003">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should handle multiple checkbox selection" name="CheckboxFilter - component should handle multiple checkbox selection" time="0.006">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should handle unchecking a checkbox" name="CheckboxFilter - component should handle unchecking a checkbox" time="0.009">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should render search input when isSearchEnabled is true" name="CheckboxFilter - component should render search input when isSearchEnabled is true" time="0.02">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should not render search input when isSearchEnabled is false" name="CheckboxFilter - component should not render search input when isSearchEnabled is false" time="0.002">
+    </testcase>
+    <testcase classname="CheckboxFilter - component should not filter options based on search input when isSearchEnabled is false" name="CheckboxFilter - component should not filter options based on search input when isSearchEnabled is false" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="useEmptyBackground - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.273" tests="2">
-    <testcase classname="useEmptyBackground - hook returns setEmptyBackground function should not set background to &quot;Empty&quot; if its not available" name="useEmptyBackground - hook returns setEmptyBackground function should not set background to &quot;Empty&quot; if its not available" time="0.009">
+  <testsuite name="useUserOverlayForm" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.358" tests="4">
+    <testcase classname="useUserOverlayForm should update state when form fields are changed" name="useUserOverlayForm should update state when form fields are changed" time="0.017">
     </testcase>
-    <testcase classname="useEmptyBackground - hook returns setEmptyBackground function should set background to &quot;Empty&quot; if its available" name="useEmptyBackground - hook returns setEmptyBackground function should set background to &quot;Empty&quot; if its available" time="0.004">
+    <testcase classname="useUserOverlayForm should update overlayContent when handleChangeOverlayContent is called" name="useUserOverlayForm should update overlayContent when handleChangeOverlayContent is called" time="0.003">
+    </testcase>
+    <testcase classname="useUserOverlayForm should update elementsList and overlayContent when handleChangeElementsList is called" name="useUserOverlayForm should update elementsList and overlayContent when handleChangeElementsList is called" time="0.012">
+    </testcase>
+    <testcase classname="useUserOverlayForm should update state variables based on updateUserOverlayForm" name="useUserOverlayForm should update state variables based on updateUserOverlayForm" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="OverviewImagesModal - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.337" tests="4">
-    <testcase classname="OverviewImagesModal - component when currentImage is NOT valid should not render component" name="OverviewImagesModal - component when currentImage is NOT valid should not render component" time="0.01">
+  <testsuite name="onMapSingleClick - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.393" tests="5">
+    <testcase classname="onMapSingleClick - util when always should fire data reset handler" name="onMapSingleClick - util when always should fire data reset handler" time="0.029">
+    </testcase>
+    <testcase classname="onMapSingleClick - util when searchResults are undefined does not fire search result action" name="onMapSingleClick - util when searchResults are undefined does not fire search result action" time="0.001">
     </testcase>
-    <testcase classname="OverviewImagesModal - component when currentImage is valid should render component" name="OverviewImagesModal - component when currentImage is valid should render component" time="0.033">
+    <testcase classname="onMapSingleClick - util when searchResults are empty does not fire search result action" name="onMapSingleClick - util when searchResults are empty does not fire search result action" time="0">
     </testcase>
-    <testcase classname="OverviewImagesModal - component when currentImage is valid should render image with valid src" name="OverviewImagesModal - component when currentImage is valid should render image with valid src" time="0.003">
+    <testcase classname="onMapSingleClick - util when searchResults are valid when results type is ALIAS does fire search result action handler" name="onMapSingleClick - util when searchResults are valid when results type is ALIAS does fire search result action handler" time="0.009">
     </testcase>
-    <testcase classname="OverviewImagesModal - component when currentImage is valid should render image wrapper with valid size" name="OverviewImagesModal - component when currentImage is valid should render image wrapper with valid size" time="0.005">
+    <testcase classname="onMapSingleClick - util when searchResults are valid when results type is REACTION does fire search result action - handle reaction" name="onMapSingleClick - util when searchResults are valid when results type is REACTION does fire search result action - handle reaction" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="usePointToProjection - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.288" tests="3">
-    <testcase classname="usePointToProjection - util when mapSize arg is undefined in redux should return fallback value on function call" name="usePointToProjection - util when mapSize arg is undefined in redux should return fallback value on function call" time="0.035">
+  <testsuite name="handleBioEntityResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.405" tests="2">
+    <testcase classname="handleBioEntityResults - util should run setCurrentSelectedBioEntityId as first action" name="handleBioEntityResults - util should run setCurrentSelectedBioEntityId as first action" time="0.003">
     </testcase>
-    <testcase classname="usePointToProjection - util when mapSize arg is invalid in redux should return fallback value on function call" name="usePointToProjection - util when mapSize arg is invalid in redux should return fallback value on function call" time="0.002">
+    <testcase classname="handleBioEntityResults - util should run getMultiBioEntity as second action" name="handleBioEntityResults - util should run getMultiBioEntity as second action" time="0.001">
+    </testcase>
+  </testsuite>
+  <testsuite name="ResultsList - component " errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:44" time="0.472" tests="2">
+    <testcase classname="ResultsList - component  should render results and navigation panel" name="ResultsList - component  should render results and navigation panel" time="0.053">
     </testcase>
-    <testcase classname="usePointToProjection - util when all args are valid in redux should return valid lat lng value on function call" name="usePointToProjection - util when all args are valid in redux should return valid lat lng value on function call" time="0.002">
+    <testcase classname="ResultsList - component  should navigate to grouped search results after backward button click" name="ResultsList - component  should navigate to grouped search results after backward button click" time="0.039">
     </testcase>
   </testsuite>
-  <testsuite name="useOverviewImageUrl - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.285" tests="2">
-    <testcase classname="useOverviewImageUrl - hook when currentImage data is valid should return valid url" name="useOverviewImageUrl - hook when currentImage data is valid should return valid url" time="0.019">
+  <testsuite name="overlays reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.37" tests="7">
+    <testcase classname="overlays reducer should match initial state" name="overlays reducer should match initial state" time="0.002">
     </testcase>
-    <testcase classname="useOverviewImageUrl - hook when currentImage data is valid should return valid url" name="useOverviewImageUrl - hook when currentImage data is valid should return valid url" time="0.002">
+    <testcase classname="overlays reducer should update store after successful getAllPublicOverlaysByProjectId query" name="overlays reducer should update store after successful getAllPublicOverlaysByProjectId query" time="0.004">
+    </testcase>
+    <testcase classname="overlays reducer should update store after failed getAllPublicOverlaysByProjectId query" name="overlays reducer should update store after failed getAllPublicOverlaysByProjectId query" time="0.078">
+    </testcase>
+    <testcase classname="overlays reducer should update store on loading getAllPublicOverlaysByProjectId query" name="overlays reducer should update store on loading getAllPublicOverlaysByProjectId query" time="0.002">
+    </testcase>
+    <testcase classname="overlays reducer should update store when addOverlay is pending" name="overlays reducer should update store when addOverlay is pending" time="0.006">
+    </testcase>
+    <testcase classname="overlays reducer should update store after successful addOverlay" name="overlays reducer should update store after successful addOverlay" time="0.005">
+    </testcase>
+    <testcase classname="overlays reducer should update store after failed addOverlay" name="overlays reducer should update store after failed addOverlay" time="0.001">
+    </testcase>
+  </testsuite>
+  <testsuite name="useOlMapPinsLayer - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.45" tests="1">
+    <testcase classname="useOlMapPinsLayer - util should return VectorLayer" name="useOlMapPinsLayer - util should return VectorLayer" time="0.012">
     </testcase>
   </testsuite>
-  <testsuite name="DrawerHeading - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.304" tests="2">
-    <testcase classname="DrawerHeading - component should display passed title" name="DrawerHeading - component should display passed title" time="0.029">
+  <testsuite name="SearchDrawerTabs - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.394" tests="2">
+    <testcase classname="SearchDrawerTabs - component should display tabs with search values" name="SearchDrawerTabs - component should display tabs with search values" time="0.02">
     </testcase>
-    <testcase classname="DrawerHeading - component should call class drawer on close button click" name="DrawerHeading - component should call class drawer on close button click" time="0.027">
+    <testcase classname="SearchDrawerTabs - component second test" name="SearchDrawerTabs - component second test" time="0.012">
     </testcase>
   </testsuite>
-  <testsuite name="map thunks - utils" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.269" tests="10">
-    <testcase classname="map thunks - utils getBackgroundId should return backgroundId value from queryData" name="map thunks - utils getBackgroundId should return backgroundId value from queryData" time="0.001">
+  <testsuite name="BackgroundSelector - component" errors="0" failures="0" skipped="1" timestamp="2024-01-12T14:39:45" time="0.521" tests="6">
+    <testcase classname="BackgroundSelector - component should initialy display default value" name="BackgroundSelector - component should initialy display default value" time="0.028">
     </testcase>
-    <testcase classname="map thunks - utils getBackgroundId should return main map background id if query param does not include background id" name="map thunks - utils getBackgroundId should return main map background id if query param does not include background id" time="0">
+    <testcase classname="BackgroundSelector - component should display selected value name when it&apos;s not main background" name="BackgroundSelector - component should display selected value name when it&apos;s not main background" time="0.033">
     </testcase>
-    <testcase classname="map thunks - utils getBackgroundId should return default value (0) if query data does not include backgroundId and could not find main background in the store" name="map thunks - utils getBackgroundId should return default value (0) if query data does not include backgroundId and could not find main background in the store" time="0">
+    <testcase classname="BackgroundSelector - component should change redux map state on selecting background" name="BackgroundSelector - component should change redux map state on selecting background" time="0.013">
     </testcase>
-    <testcase classname="map thunks - utils getInitMapPosition should return valid map position from query params " name="map thunks - utils getInitMapPosition should return valid map position from query params " time="0">
+    <testcase classname="BackgroundSelector - component query params should display default value when main background id is in query params" name="BackgroundSelector - component query params should display default value when main background id is in query params" time="0.006">
     </testcase>
-    <testcase classname="map thunks - utils getInitMapPosition should return valid map position if query params do not include position" name="map thunks - utils getInitMapPosition should return valid map position if query params do not include position" time="0">
+    <testcase classname="BackgroundSelector - component query params should display correct background when background id is in query params" name="BackgroundSelector - component query params should display correct background when background id is in query params" time="0.002">
     </testcase>
-    <testcase classname="map thunks - utils getInitMapPosition should return default map position" name="map thunks - utils getInitMapPosition should return default map position" time="0.001">
+    <testcase classname="BackgroundSelector - component query params should set backgroundid in query on selecting background" name="BackgroundSelector - component query params should set backgroundid in query on selecting background" time="0">
+      <skipped/>
     </testcase>
-    <testcase classname="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelid when modelId is provided in queryData" name="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelid when modelId is provided in queryData" time="0">
+  </testsuite>
+  <testsuite name="LegendHeader - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.444" tests="3">
+    <testcase classname="LegendHeader - component should render legend title" name="LegendHeader - component should render legend title" time="0.023">
     </testcase>
-    <testcase classname="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelId if query params do not include modelId" name="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelId if query params do not include modelId" time="0">
+    <testcase classname="LegendHeader - component should render legend close button" name="LegendHeader - component should render legend close button" time="0.01">
     </testcase>
-    <testcase classname="map thunks - utils getOpenedMaps  should return main map only" name="map thunks - utils getOpenedMaps  should return main map only" time="0">
+    <testcase classname="LegendHeader - component should close legend on close button click" name="LegendHeader - component should close legend on close button click" time="0.022">
+    </testcase>
+  </testsuite>
+  <testsuite name="Columns - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.356" tests="2">
+    <testcase classname="Columns - component should display select column accordion" name="Columns - component should display select column accordion" time="0.048">
     </testcase>
-    <testcase classname="map thunks - utils getOpenedMaps  should return main map and opened submap" name="map thunks - utils getOpenedMaps  should return main map and opened submap" time="0">
+    <testcase classname="Columns - component should display columns checkboxes" name="Columns - component should display columns checkboxes" time="0.041">
     </testcase>
   </testsuite>
-  <testsuite name="onMapPositionChange - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.277" tests="2">
-    <testcase classname="onMapPositionChange - util should set map data position to valid one" name="onMapPositionChange - util should set map data position to valid one" time="0.011">
+  <testsuite name="useOverviewImageLinkConfigs - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.379" tests="3">
+    <testcase classname="useOverviewImageLinkConfigs - hook when currentImage is undefined should return empty array" name="useOverviewImageLinkConfigs - hook when currentImage is undefined should return empty array" time="0.002">
+    </testcase>
+    <testcase classname="useOverviewImageLinkConfigs - hook when sizeFactor is zero should return empty array" name="useOverviewImageLinkConfigs - hook when sizeFactor is zero should return empty array" time="0">
     </testcase>
-    <testcase classname="onMapPositionChange - util should set map data position to valid one" name="onMapPositionChange - util should set map data position to valid one" time="0.002">
+    <testcase classname="useOverviewImageLinkConfigs - hook when all args are valid should return correct value" name="useOverviewImageLinkConfigs - hook when all args are valid should return correct value" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="NavBar - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.311" tests="1">
-    <testcase classname="NavBar - component Should contain navigation buttons and logos with powered by info" name="NavBar - component Should contain navigation buttons and logos with powered by info" time="0.026">
+  <testsuite name="OverlaySelector component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.334" tests="2">
+    <testcase classname="OverlaySelector component renders the component with initial values" name="OverlaySelector component renders the component with initial values" time="0.031">
+    </testcase>
+    <testcase classname="OverlaySelector component opens the dropdown and selects an item" name="OverlaySelector component opens the dropdown and selects an item" time="0.033">
     </testcase>
   </testsuite>
-  <testsuite name="bioEntity reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.33" tests="4">
-    <testcase classname="bioEntity reducer should match initial state" name="bioEntity reducer should match initial state" time="0.003">
+  <testsuite name="handleReactionResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.46" tests="4">
+    <testcase classname="handleReactionResults - util should run getReactionsByIds as first action" name="handleReactionResults - util should run getReactionsByIds as first action" time="0.003">
     </testcase>
-    <testcase classname="bioEntity reducer should update store after succesfull getBioEntity query" name="bioEntity reducer should update store after succesfull getBioEntity query" time="0.013">
+    <testcase classname="handleReactionResults - util should run openReactionDrawerById to empty array as second action" name="handleReactionResults - util should run openReactionDrawerById to empty array as second action" time="0.001">
     </testcase>
-    <testcase classname="bioEntity reducer should update store after failed getBioEntity query" name="bioEntity reducer should update store after failed getBioEntity query" time="0.079">
+    <testcase classname="handleReactionResults - util should run setBioEntityContent to empty array as third action" name="handleReactionResults - util should run setBioEntityContent to empty array as third action" time="0">
     </testcase>
-    <testcase classname="bioEntity reducer should update store on loading getBioEntity query" name="bioEntity reducer should update store on loading getBioEntity query" time="0.008">
+    <testcase classname="handleReactionResults - util should run getBioEntity as fourth action" name="handleReactionResults - util should run getBioEntity as fourth action" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="backgrounds reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.246" tests="4">
-    <testcase classname="backgrounds reducer should match initial state" name="backgrounds reducer should match initial state" time="0.011">
+  <testsuite name="MapAdditionalOptions - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.466" tests="3">
+    <testcase classname="MapAdditionalOptions - component should display background selector" name="MapAdditionalOptions - component should display background selector" time="0.039">
     </testcase>
-    <testcase classname="backgrounds reducer should update store after succesfull getAllBackgroundsByProjectId query" name="backgrounds reducer should update store after succesfull getAllBackgroundsByProjectId query" time="0.005">
+    <testcase classname="MapAdditionalOptions - component should render browse overview images button" name="MapAdditionalOptions - component should render browse overview images button" time="0.003">
     </testcase>
-    <testcase classname="backgrounds reducer should update store after failed getAllBackgroundsByProjectId query" name="backgrounds reducer should update store after failed getAllBackgroundsByProjectId query" time="0.077">
+    <testcase classname="MapAdditionalOptions - component should open overview image modal on button click" name="MapAdditionalOptions - component should open overview image modal on button click" time="0.005">
     </testcase>
-    <testcase classname="backgrounds reducer should update store on loading getAllBackgroundsByProjectId query" name="backgrounds reducer should update store on loading getAllBackgroundsByProjectId query" time="0.001">
+  </testsuite>
+  <testsuite name="useReduxBusQueryManager - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.399" tests="3">
+    <testcase classname="useReduxBusQueryManager - util on init when data is NOT loaded should not update query" name="useReduxBusQueryManager - util on init when data is NOT loaded should not update query" time="0.01">
+    </testcase>
+    <testcase classname="useReduxBusQueryManager - util on init when data is loaded should update query" name="useReduxBusQueryManager - util on init when data is loaded should update query" time="0.007">
+    </testcase>
+    <testcase classname="useReduxBusQueryManager - util on init when data is loaded should update query params to valid ones" name="useReduxBusQueryManager - util on init when data is loaded should update query params to valid ones" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="drugs reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.314" tests="4">
-    <testcase classname="drugs reducer should match initial state" name="drugs reducer should match initial state" time="0.002">
+  <testsuite name="Types Component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.433" tests="1">
+    <testcase classname="Types Component renders without crashing" name="Types Component renders without crashing" time="0.038">
     </testcase>
-    <testcase classname="drugs reducer should update store after succesfull getDrugs query" name="drugs reducer should update store after succesfull getDrugs query" time="0.016">
+  </testsuite>
+  <testsuite name="IconButton - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.284" tests="3">
+    <testcase classname="IconButton - component should render IconButton" name="IconButton - component should render IconButton" time="0.034">
     </testcase>
-    <testcase classname="drugs reducer should update store after failed getDrugs query" name="drugs reducer should update store after failed getDrugs query" time="0.099">
+    <testcase classname="IconButton - component should render IconButton with plugin icon" name="IconButton - component should render IconButton with plugin icon" time="0.002">
     </testcase>
-    <testcase classname="drugs reducer should update store on loading getDrugs query" name="drugs reducer should update store on loading getDrugs query" time="0.014">
+    <testcase classname="IconButton - component should render IconButton as active" name="IconButton - component should render IconButton as active" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="IconButton - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.232" tests="3">
-    <testcase classname="IconButton - component should render IconButton" name="IconButton - component should render IconButton" time="0.013">
+  <testsuite name="statistics reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.404" tests="3">
+    <testcase classname="statistics reducer should match initial state" name="statistics reducer should match initial state" time="0.002">
+    </testcase>
+    <testcase classname="statistics reducer should update store after successful getStatisticById query" name="statistics reducer should update store after successful getStatisticById query" time="0.005">
     </testcase>
-    <testcase classname="IconButton - component should render IconButton with plugin icon" name="IconButton - component should render IconButton with plugin icon" time="0.01">
+    <testcase classname="statistics reducer should update store after failed getStatisticById query" name="statistics reducer should update store after failed getStatisticById query" time="0.119">
     </testcase>
-    <testcase classname="IconButton - component should render IconButton as active" name="IconButton - component should render IconButton as active" time="0.004">
+  </testsuite>
+  <testsuite name="useOverviewImageUrl - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.381" tests="2">
+    <testcase classname="useOverviewImageUrl - hook when currentImage data is valid should return valid url" name="useOverviewImageUrl - hook when currentImage data is valid should return valid url" time="0.008">
+    </testcase>
+    <testcase classname="useOverviewImageUrl - hook when currentImage data is valid should return valid url" name="useOverviewImageUrl - hook when currentImage data is valid should return valid url" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="chemicals reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:22" time="0.279" tests="4">
-    <testcase classname="chemicals reducer should match initial state" name="chemicals reducer should match initial state" time="0.004">
+  <testsuite name="PerfectMatchSwitch - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.459" tests="4">
+    <testcase classname="PerfectMatchSwitch - component should initialy be set to false when perfectMatch is not in query or set to false" name="PerfectMatchSwitch - component should initialy be set to false when perfectMatch is not in query or set to false" time="0.036">
     </testcase>
-    <testcase classname="chemicals reducer should update store after succesfull getChemicals query" name="chemicals reducer should update store after succesfull getChemicals query" time="0.025">
+    <testcase classname="PerfectMatchSwitch - component should initialy be set to true when perfectMatch query is set to true" name="PerfectMatchSwitch - component should initialy be set to true when perfectMatch query is set to true" time="0.018">
     </testcase>
-    <testcase classname="chemicals reducer should update store after failed getChemicals query" name="chemicals reducer should update store after failed getChemicals query" time="0.077">
+    <testcase classname="PerfectMatchSwitch - component should set checkbox to true and update store" name="PerfectMatchSwitch - component should set checkbox to true and update store" time="0.014">
     </testcase>
-    <testcase classname="chemicals reducer should update store on loading getChemicals query" name="chemicals reducer should update store on loading getChemicals query" time="0.011">
+    <testcase classname="PerfectMatchSwitch - component should set checkbox to false and update store" name="PerfectMatchSwitch - component should set checkbox to false and update store" time="0.02">
     </testcase>
   </testsuite>
-  <testsuite name="handleDataReset" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.226" tests="1">
-    <testcase classname="handleDataReset should dispatch reset actions" name="handleDataReset should dispatch reset actions" time="0.006">
+  <testsuite name="DrawerHeading - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.401" tests="2">
+    <testcase classname="DrawerHeading - component should display passed title" name="DrawerHeading - component should display passed title" time="0.02">
+    </testcase>
+    <testcase classname="DrawerHeading - component should call class drawer on close button click" name="DrawerHeading - component should call class drawer on close button click" time="0.023">
     </testcase>
   </testsuite>
-  <testsuite name="overlays reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.249" tests="4">
-    <testcase classname="overlays reducer should match initial state" name="overlays reducer should match initial state" time="0.002">
+  <testsuite name="useEmptyBackground - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:45" time="0.464" tests="2">
+    <testcase classname="useEmptyBackground - hook returns setEmptyBackground function should not set background to &quot;Empty&quot; if its not available" name="useEmptyBackground - hook returns setEmptyBackground function should not set background to &quot;Empty&quot; if its not available" time="0.012">
     </testcase>
-    <testcase classname="overlays reducer should update store after succesfull getAllPublicOverlaysByProjectId query" name="overlays reducer should update store after succesfull getAllPublicOverlaysByProjectId query" time="0.005">
+    <testcase classname="useEmptyBackground - hook returns setEmptyBackground function should set background to &quot;Empty&quot; if its available" name="useEmptyBackground - hook returns setEmptyBackground function should set background to &quot;Empty&quot; if its available" time="0.004">
     </testcase>
-    <testcase classname="overlays reducer should update store after failed getAllPublicOverlaysByProjectId query" name="overlays reducer should update store after failed getAllPublicOverlaysByProjectId query" time="0.092">
+  </testsuite>
+  <testsuite name="onMapPositionChange - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.449" tests="2">
+    <testcase classname="onMapPositionChange - util should set map data position to valid one" name="onMapPositionChange - util should set map data position to valid one" time="0.022">
     </testcase>
-    <testcase classname="overlays reducer should update store on loading getAllPublicOverlaysByProjectId query" name="overlays reducer should update store on loading getAllPublicOverlaysByProjectId query" time="0.007">
+    <testcase classname="onMapPositionChange - util should set map data position to valid one" name="onMapPositionChange - util should set map data position to valid one" time="0.007">
     </testcase>
   </testsuite>
-  <testsuite name="models reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.242" tests="4">
-    <testcase classname="models reducer should match initial state" name="models reducer should match initial state" time="0.002">
+  <testsuite name="NavBar - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.387" tests="1">
+    <testcase classname="NavBar - component Should contain navigation buttons and logos with powered by info" name="NavBar - component Should contain navigation buttons and logos with powered by info" time="0.067">
     </testcase>
-    <testcase classname="models reducer should update store after succesfull getModels query" name="models reducer should update store after succesfull getModels query" time="0.007">
+  </testsuite>
+  <testsuite name="CookieBanner component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.373" tests="3">
+    <testcase classname="CookieBanner component renders cookie banner correctly first time" name="CookieBanner component renders cookie banner correctly first time" time="0.029">
     </testcase>
-    <testcase classname="models reducer should update store after failed getModels query" name="models reducer should update store after failed getModels query" time="0.074">
+    <testcase classname="CookieBanner component hides the banner after accepting cookies" name="CookieBanner component hides the banner after accepting cookies" time="0.013">
     </testcase>
-    <testcase classname="models reducer should update store on loading getModels query" name="models reducer should update store on loading getModels query" time="0.003">
+    <testcase classname="CookieBanner component does not render the cookies banner when cookies are accepted" name="CookieBanner component does not render the cookies banner when cookies are accepted" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="UserAvatar - component " errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.245" tests="1">
-    <testcase classname="UserAvatar - component  should render placeholder image" name="UserAvatar - component  should render placeholder image" time="0.014">
+  <testsuite name="drugs reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.387" tests="4">
+    <testcase classname="drugs reducer should match initial state" name="drugs reducer should match initial state" time="0.011">
+    </testcase>
+    <testcase classname="drugs reducer should update store after succesfull getDrugs query" name="drugs reducer should update store after succesfull getDrugs query" time="0.027">
+    </testcase>
+    <testcase classname="drugs reducer should update store after failed getDrugs query" name="drugs reducer should update store after failed getDrugs query" time="0.106">
+    </testcase>
+    <testcase classname="drugs reducer should update store on loading getDrugs query" name="drugs reducer should update store on loading getDrugs query" time="0.025">
     </testcase>
   </testsuite>
-  <testsuite name="map middleware" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.244" tests="3">
-    <testcase classname="map middleware on listen when model is valid and different than current should dispatch setMapData, map/setMapData" name="map middleware on listen when model is valid and different than current should dispatch setMapData, map/setMapData" time="0.002">
+  <testsuite name="OverlaySingleLegend - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.374" tests="2">
+    <testcase classname="OverlaySingleLegend - component should render title with overlay name" name="OverlaySingleLegend - component should render title with overlay name" time="0.031">
     </testcase>
-    <testcase classname="map middleware on listen when model is valid and identical with current should NOT dispatch setMapData" name="map middleware on listen when model is valid and identical with current should NOT dispatch setMapData" time="0.001">
+    <testcase classname="OverlaySingleLegend - component should render image with valid src and alt" name="OverlaySingleLegend - component should render image with valid src and alt" time="0.003">
     </testcase>
-    <testcase classname="map middleware on listen when model is NOT valid should NOT dispatch setMapData" name="map middleware on listen when model is NOT valid should NOT dispatch setMapData" time="0">
+  </testsuite>
+  <testsuite name="Button - component " errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.327" tests="1">
+    <testcase classname="Button - component  should render name Button" name="Button - component  should render name Button" time="0.032">
     </testcase>
   </testsuite>
-  <testsuite name="Button - component " errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.252" tests="1">
-    <testcase classname="Button - component  should render name Button" name="Button - component  should render name Button" time="0.014">
+  <testsuite name="useOverviewImage - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.436" tests="3">
+    <testcase classname="useOverviewImage - hook when image data is invalid should return default size of image and empty imageUrl" name="useOverviewImage - hook when image data is invalid should return default size of image and empty imageUrl" time="0.003">
+    </testcase>
+    <testcase classname="useOverviewImage - hook when containerReact is undefined should return default size of image and valid imageUrl" name="useOverviewImage - hook when containerReact is undefined should return default size of image and valid imageUrl" time="0">
+    </testcase>
+    <testcase classname="useOverviewImage - hook when containerReact is valid should return size of image and valid imageUrl" name="useOverviewImage - hook when containerReact is valid should return size of image and valid imageUrl" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="bioEntityContents thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.252" tests="2">
-    <testcase classname="bioEntityContents thunks getBioEntityContents should return data when data response from API is valid" name="bioEntityContents thunks getBioEntityContents should return data when data response from API is valid" time="0.014">
+  <testsuite name="Input - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.268" tests="8">
+    <testcase classname="Input - component should render with proper testid" name="Input - component should render with proper testid" time="0.012">
+    </testcase>
+    <testcase classname="Input - component should apply the default style and size variants when none are provided" name="Input - component should apply the default style and size variants when none are provided" time="0.001">
+    </testcase>
+    <testcase classname="Input - component should apply the specified style variant" name="Input - component should apply the specified style variant" time="0.001">
+    </testcase>
+    <testcase classname="Input - component should apply the specified size variant" name="Input - component should apply the specified size variant" time="0.001">
+    </testcase>
+    <testcase classname="Input - component should merge custom class with style and size variant classes" name="Input - component should merge custom class with style and size variant classes" time="0.001">
     </testcase>
-    <testcase classname="bioEntityContents thunks getBioEntityContents should return undefined when data response from API is not valid " name="bioEntityContents thunks getBioEntityContents should return undefined when data response from API is not valid " time="0.018">
+    <testcase classname="Input - component  should handle onChange event" name="Input - component  should handle onChange event" time="0.003">
+    </testcase>
+    <testcase classname="Input - component should render with a placeholder" name="Input - component should render with a placeholder" time="0.002">
+    </testcase>
+    <testcase classname="Input - component should render with a default value" name="Input - component should render with a default value" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="reactions thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.181" tests="3">
-    <testcase classname="reactions thunks getReactionsByIds should return data when data response from API is valid" name="reactions thunks getReactionsByIds should return data when data response from API is valid" time="0.008">
+  <testsuite name="Textarea - Component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.308" tests="7">
+    <testcase classname="Textarea - Component should render with proper testid" name="Textarea - Component should render with proper testid" time="0.015">
+    </testcase>
+    <testcase classname="Textarea - Component should apply the default style variant when none is provided" name="Textarea - Component should apply the default style variant when none is provided" time="0.002">
+    </testcase>
+    <testcase classname="Textarea - Component should apply the specified style variant" name="Textarea - Component should apply the specified style variant" time="0.001">
     </testcase>
-    <testcase classname="reactions thunks getReactionsByIds should return undefined when data response from API is not valid " name="reactions thunks getReactionsByIds should return undefined when data response from API is not valid " time="0.007">
+    <testcase classname="Textarea - Component should merge custom class with style variant classes" name="Textarea - Component should merge custom class with style variant classes" time="0.001">
     </testcase>
-    <testcase classname="reactions thunks getReactionsByIds should return empty array when data response from API is empty" name="reactions thunks getReactionsByIds should return empty array when data response from API is empty" time="0.013">
+    <testcase classname="Textarea - Component should handle onChange event" name="Textarea - Component should handle onChange event" time="0.007">
+    </testcase>
+    <testcase classname="Textarea - Component should render with a placeholder" name="Textarea - Component should render with a placeholder" time="0.001">
+    </testcase>
+    <testcase classname="Textarea - Component should render with a default value" name="Textarea - Component should render with a default value" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="user reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.188" tests="4">
-    <testcase classname="user reducer should match initial state" name="user reducer should match initial state" time="0.003">
+  <testsuite name="useOverviewImageSize - hook" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.414" tests="3">
+    <testcase classname="useOverviewImageSize - hook when currentImage is not valid should return default value" name="useOverviewImageSize - hook when currentImage is not valid should return default value" time="0.002">
     </testcase>
-    <testcase classname="user reducer should update store after successful login query" name="user reducer should update store after successful login query" time="0.003">
+    <testcase classname="useOverviewImageSize - hook when containerRect is not valid should return default value" name="useOverviewImageSize - hook when containerRect is not valid should return default value" time="0">
     </testcase>
-    <testcase classname="user reducer should update store on loading login query" name="user reducer should update store on loading login query" time="0.002">
+    <testcase classname="useOverviewImageSize - hook when data is valid should return calculated height, width, sizeFactor" name="useOverviewImageSize - hook when data is valid should return calculated height, width, sizeFactor" time="0">
     </testcase>
-    <testcase classname="user reducer should update store after successful getSessionValid query" name="user reducer should update store after successful getSessionValid query" time="0.001">
+  </testsuite>
+  <testsuite name="TabNavigator - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.34" tests="3">
+    <testcase classname="TabNavigator - component should render TabNavigator with correct tabs" name="TabNavigator - component should render TabNavigator with correct tabs" time="0.019">
+    </testcase>
+    <testcase classname="TabNavigator - component should change tabs correctly" name="TabNavigator - component should change tabs correctly" time="0.005">
+    </testcase>
+    <testcase classname="TabNavigator - component should set initial active tab" name="TabNavigator - component should set initial active tab" time="0.028">
     </testcase>
   </testsuite>
-  <testsuite name="drugs thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.236" tests="2">
-    <testcase classname="drugs thunks getDrugs should return data when data response from API is valid" name="drugs thunks getDrugs should return data when data response from API is valid" time="0.033">
+  <testsuite name="models reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.319" tests="4">
+    <testcase classname="models reducer should match initial state" name="models reducer should match initial state" time="0.004">
+    </testcase>
+    <testcase classname="models reducer should update store after succesfull getModels query" name="models reducer should update store after succesfull getModels query" time="0.006">
     </testcase>
-    <testcase classname="drugs thunks getDrugs should return undefined when data response from API is not valid " name="drugs thunks getDrugs should return undefined when data response from API is not valid " time="0.006">
+    <testcase classname="models reducer should update store after failed getModels query" name="models reducer should update store after failed getModels query" time="0.097">
+    </testcase>
+    <testcase classname="models reducer should update store on loading getModels query" name="models reducer should update store on loading getModels query" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="project reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.276" tests="4">
-    <testcase classname="project reducer should match initial state" name="project reducer should match initial state" time="0.002">
+  <testsuite name="TabButton - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.278" tests="4">
+    <testcase classname="TabButton - component should render TabButton with custom label" name="TabButton - component should render TabButton with custom label" time="0.021">
     </testcase>
-    <testcase classname="project reducer should update store after succesfull getProjectById query" name="project reducer should update store after succesfull getProjectById query" time="0.005">
+    <testcase classname="TabButton - component should handle click event" name="TabButton - component should handle click event" time="0.006">
     </testcase>
-    <testcase classname="project reducer should update store after failed getProjectById query" name="project reducer should update store after failed getProjectById query" time="0.089">
+    <testcase classname="TabButton - component should indicate active tab correctly" name="TabButton - component should indicate active tab correctly" time="0.015">
     </testcase>
-    <testcase classname="project reducer should update store on loading getProjectById query" name="project reducer should update store on loading getProjectById query" time="0.002">
+    <testcase classname="TabButton - component should indicate not active tab correctly" name="TabButton - component should indicate not active tab correctly" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="login thunk" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.148" tests="2">
-    <testcase classname="login thunk dispatches closeModal action on successful login with valid data" name="login thunk dispatches closeModal action on successful login with valid data" time="0.002">
+  <testsuite name="bioEntity reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.334" tests="4">
+    <testcase classname="bioEntity reducer should match initial state" name="bioEntity reducer should match initial state" time="0.002">
     </testcase>
-    <testcase classname="login thunk does not dispatch closeModal action on failed login with invalid data" name="login thunk does not dispatch closeModal action on failed login with invalid data" time="0">
+    <testcase classname="bioEntity reducer should update store after succesfull getBioEntity query" name="bioEntity reducer should update store after succesfull getBioEntity query" time="0.022">
+    </testcase>
+    <testcase classname="bioEntity reducer should update store after failed getBioEntity query" name="bioEntity reducer should update store after failed getBioEntity query" time="0.093">
+    </testcase>
+    <testcase classname="bioEntity reducer should update store on loading getBioEntity query" name="bioEntity reducer should update store on loading getBioEntity query" time="0.01">
     </testcase>
   </testsuite>
-  <testsuite name="getHexTricolorGradientColorWithAlpha" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.258" tests="9">
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: -1 } should return #FF0000ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: -1 } should return #FF0000ff" time="0.002">
+  <testsuite name="FileUpload component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.309" tests="2">
+    <testcase classname="FileUpload component renders correctly with default state" name="FileUpload component renders correctly with default state" time="0.019">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 0.8, position: -0.75 } should return #BF4000cc" name="getHexTricolorGradientColorWithAlpha and position { alpha: 0.8, position: -0.75 } should return #BF4000cc" time="0">
+    <testcase classname="FileUpload component renders filename when file type is correct" name="FileUpload component renders filename when file type is correct" time="0.002">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 0.5, position: -0.5 } should return #80800080" name="getHexTricolorGradientColorWithAlpha and position { alpha: 0.5, position: -0.5 } should return #80800080" time="0">
+  </testsuite>
+  <testsuite name="ReactionDrawer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.463" tests="3">
+    <testcase classname="ReactionDrawer - component should show reference group with source=" name="ReactionDrawer - component should show reference group with source=" time="0.023">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 0, position: -0.25 } should return #40BF0000" name="getHexTricolorGradientColorWithAlpha and position { alpha: 0, position: -0.25 } should return #40BF0000" time="0.001">
+    <testcase classname="ReactionDrawer - component should show reference group with source=source1" name="ReactionDrawer - component should show reference group with source=source1" time="0.006">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0 } should return #00FF00ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0 } should return #00FF00ff" time="0">
+    <testcase classname="ReactionDrawer - component should show reference group with source=source2" name="ReactionDrawer - component should show reference group with source=source2" time="0.002">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.25 } should return #00BF40ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.25 } should return #00BF40ff" time="0">
+  </testsuite>
+  <testsuite name="getCompartmentPathwaysCheckboxElements" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.153" tests="5">
+    <testcase classname="getCompartmentPathwaysCheckboxElements should return an empty array when given an empty items array" name="getCompartmentPathwaysCheckboxElements should return an empty array when given an empty items array" time="0.003">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.5 } should return #008080ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.5 } should return #008080ff" time="0">
+    <testcase classname="getCompartmentPathwaysCheckboxElements should correctly extract unique names and corresponding ids from items" name="getCompartmentPathwaysCheckboxElements should correctly extract unique names and corresponding ids from items" time="0.001">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.75 } should return #0040BFff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.75 } should return #0040BFff" time="0">
+    <testcase classname="getCompartmentPathwaysCheckboxElements should correctly extract unique names and corresponding ids from items and sorts them alphabetically" name="getCompartmentPathwaysCheckboxElements should correctly extract unique names and corresponding ids from items and sorts them alphabetically" time="0">
+    </testcase>
+    <testcase classname="getModelsIds should return an empty array if models are not provided" name="getModelsIds should return an empty array if models are not provided" time="0">
     </testcase>
-    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 1 } should return #0000FFff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 1 } should return #0000FFff" time="0.001">
+    <testcase classname="getModelsIds should return an array of model IDs" name="getModelsIds should return an array of model IDs" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="getElementsByPoint - utils" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.181" tests="3">
-    <testcase classname="getElementsByPoint - utils should return data when data response from API is valid" name="getElementsByPoint - utils should return data when data response from API is valid" time="0.004">
+  <testsuite name="getPolygonLatitudeCoordinates" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.149" tests="3">
+    <testcase classname="getPolygonLatitudeCoordinates should return the correct latitude coordinates for width=80, nOverlays=3, xMin=2137.5, and overlayIndexBasedOnOrder=2" name="getPolygonLatitudeCoordinates should return the correct latitude coordinates for width=80, nOverlays=3, xMin=2137.5, and overlayIndexBasedOnOrder=2" time="0.001">
     </testcase>
-    <testcase classname="getElementsByPoint - utils should return undefined when data response from API is not valid " name="getElementsByPoint - utils should return undefined when data response from API is not valid " time="0.006">
+    <testcase classname="getPolygonLatitudeCoordinates should return the correct latitude coordinates for width=120, nOverlays=6, xMin=2137.5, and overlayIndexBasedOnOrder=5" name="getPolygonLatitudeCoordinates should return the correct latitude coordinates for width=120, nOverlays=6, xMin=2137.5, and overlayIndexBasedOnOrder=5" time="0">
     </testcase>
-    <testcase classname="getElementsByPoint - utils should return empty array when data response from API is empty" name="getElementsByPoint - utils should return empty array when data response from API is empty" time="0.001">
+    <testcase classname="getPolygonLatitudeCoordinates should return the correct latitude coordinates for width=40, nOverlays=1, xMin=2137.5, and overlayIndexBasedOnOrder=0" name="getPolygonLatitudeCoordinates should return the correct latitude coordinates for width=40, nOverlays=1, xMin=2137.5, and overlayIndexBasedOnOrder=0" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="chemicals thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.223" tests="2">
-    <testcase classname="chemicals thunks getChemiclas should return data when data response from API is valid" name="chemicals thunks getChemiclas should return data when data response from API is valid" time="0.019">
+  <testsuite name="map middleware" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.348" tests="3">
+    <testcase classname="map middleware on listen when model is valid and different than current should dispatch setMapData, map/setMapData" name="map middleware on listen when model is valid and different than current should dispatch setMapData, map/setMapData" time="0.002">
+    </testcase>
+    <testcase classname="map middleware on listen when model is valid and identical with current should NOT dispatch setMapData" name="map middleware on listen when model is valid and identical with current should NOT dispatch setMapData" time="0">
     </testcase>
-    <testcase classname="chemicals thunks getChemiclas should return undefined when data response from API is not valid " name="chemicals thunks getChemiclas should return undefined when data response from API is not valid " time="0.007">
+    <testcase classname="map middleware on listen when model is NOT valid should NOT dispatch setMapData" name="map middleware on listen when model is NOT valid should NOT dispatch setMapData" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getUpdatedMapData - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.17" tests="3">
-    <testcase classname="getUpdatedMapData - util when model does not have default values should return correct value" name="getUpdatedMapData - util when model does not have default values should return correct value" time="0.001">
+  <testsuite name="UserAvatar - component " errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.287" tests="1">
+    <testcase classname="UserAvatar - component  should render placeholder image" name="UserAvatar - component  should render placeholder image" time="0.014">
     </testcase>
-    <testcase classname="getUpdatedMapData - util when model has default falsy values should return correct value" name="getUpdatedMapData - util when model has default falsy values should return correct value" time="0">
+  </testsuite>
+  <testsuite name="checkIfIsActionValid - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.141" tests="3">
+    <testcase classname="checkIfIsActionValid - util when action payload has model id equal to current should return false" name="checkIfIsActionValid - util when action payload has model id equal to current should return false" time="0.001">
     </testcase>
-    <testcase classname="getUpdatedMapData - util when model has default truthy values should return correct value" name="getUpdatedMapData - util when model has default truthy values should return correct value" time="0">
+    <testcase classname="checkIfIsActionValid - util when action payload has model id different than current should return true" name="checkIfIsActionValid - util when action payload has model id different than current should return true" time="0">
+    </testcase>
+    <testcase classname="checkIfIsActionValid - util when action payload has NOT model id should return true" name="checkIfIsActionValid - util when action payload has NOT model id should return true" time="0">
+    </testcase>
+  </testsuite>
+  <testsuite name="compartmentPathways reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:46" time="0.264" tests="4">
+    <testcase classname="compartmentPathways reducer should match initial state" name="compartmentPathways reducer should match initial state" time="0.002">
+    </testcase>
+    <testcase classname="compartmentPathways reducer should update store on loading getCompartmentPathways query" name="compartmentPathways reducer should update store on loading getCompartmentPathways query" time="0.002">
+    </testcase>
+    <testcase classname="compartmentPathways reducer should update store after succesful getCompartmentPathways query" name="compartmentPathways reducer should update store after succesful getCompartmentPathways query" time="0.006">
+    </testcase>
+    <testcase classname="compartmentPathways reducer should update store after failed getCompartmentPathways query" name="compartmentPathways reducer should update store after failed getCompartmentPathways query" time="0.073">
+    </testcase>
+  </testsuite>
+  <testsuite name="roundToTwoDiggits" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.13" tests="5">
+    <testcase classname="roundToTwoDiggits should round a positive number with more than two decimal places to two decimal places" name="roundToTwoDiggits should round a positive number with more than two decimal places to two decimal places" time="0.013">
+    </testcase>
+    <testcase classname="roundToTwoDiggits should round a negative number with more than two decimal places to two decimal places" name="roundToTwoDiggits should round a negative number with more than two decimal places to two decimal places" time="0">
+    </testcase>
+    <testcase classname="roundToTwoDiggits should round a number with exactly two decimal places to two decimal places" name="roundToTwoDiggits should round a number with exactly two decimal places to two decimal places" time="0.001">
+    </testcase>
+    <testcase classname="roundToTwoDiggits should round a number with less than two decimal places to two decimal places" name="roundToTwoDiggits should round a number with less than two decimal places to two decimal places" time="0">
+    </testcase>
+    <testcase classname="roundToTwoDiggits should round zero to two decimal places" name="roundToTwoDiggits should round zero to two decimal places" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getCanvasIcon - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.256" tests="13">
+  <testsuite name="getCanvasIcon - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.13" tests="13">
     <testcase classname="getCanvasIcon - util getTextWidth - subUtil on value=1 should return 6.25" name="getCanvasIcon - util getTextWidth - subUtil on value=1 should return 6.25" time="0.001">
     </testcase>
     <testcase classname="getCanvasIcon - util getTextWidth - subUtil on value=7 should return 8.333" name="getCanvasIcon - util getTextWidth - subUtil on value=7 should return 8.333" time="0">
@@ -694,13 +996,13 @@
     </testcase>
     <testcase classname="getCanvasIcon - util getTextPosition - subUtil on textWidth=532 textHeight=443 should return x=-253.5 y=-164.4" name="getCanvasIcon - util getTextPosition - subUtil on textWidth=532 textHeight=443 should return x=-253.5 y=-164.4" time="0">
     </testcase>
-    <testcase classname="getCanvasIcon - util getTextPosition - subUtil on textWidth=10 textHeight=0 should return x=7.5 y=12.8" name="getCanvasIcon - util getTextPosition - subUtil on textWidth=10 textHeight=0 should return x=7.5 y=12.8" time="0.001">
+    <testcase classname="getCanvasIcon - util getTextPosition - subUtil on textWidth=10 textHeight=0 should return x=7.5 y=12.8" name="getCanvasIcon - util getTextPosition - subUtil on textWidth=10 textHeight=0 should return x=7.5 y=12.8" time="0">
     </testcase>
     <testcase classname="getCanvasIcon - util getTextPosition - subUtil on textWidth=0 textHeight=10 should return x=12.5 y=8.8" name="getCanvasIcon - util getTextPosition - subUtil on textWidth=0 textHeight=10 should return x=12.5 y=8.8" time="0.001">
     </testcase>
     <testcase classname="getCanvasIcon - util getTextPosition - subUtil on textWidth=0 textHeight=0 should return x=12.5 y=12.8" name="getCanvasIcon - util getTextPosition - subUtil on textWidth=0 textHeight=0 should return x=12.5 y=12.8" time="0">
     </testcase>
-    <testcase classname="getCanvasIcon - util drawPinOnCanvas - subUtil should run set fillStyle with color" name="getCanvasIcon - util drawPinOnCanvas - subUtil should run set fillStyle with color" time="0.004">
+    <testcase classname="getCanvasIcon - util drawPinOnCanvas - subUtil should run set fillStyle with color" name="getCanvasIcon - util drawPinOnCanvas - subUtil should run set fillStyle with color" time="0.001">
     </testcase>
     <testcase classname="getCanvasIcon - util drawPinOnCanvas - subUtil should run fill method with valid arguments" name="getCanvasIcon - util drawPinOnCanvas - subUtil should run fill method with valid arguments" time="0.001">
     </testcase>
@@ -709,53 +1011,61 @@
     <testcase classname="getCanvasIcon - util drawNumberOnCanvas - subUtil should run fillText once with valid args" name="getCanvasIcon - util drawNumberOnCanvas - subUtil should run fillText once with valid args" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="expandHexToFullFormatIfItsShorthanded" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.128" tests="11">
-    <testcase classname="expandHexToFullFormatIfItsShorthanded should expand short-handed hex string to full format" name="expandHexToFullFormatIfItsShorthanded should expand short-handed hex string to full format" time="0.002">
+  <testsuite name="chemicals thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.189" tests="2">
+    <testcase classname="chemicals thunks getChemiclas should return data when data response from API is valid" name="chemicals thunks getChemiclas should return data when data response from API is valid" time="0.029">
     </testcase>
-    <testcase classname="expandHexToFullFormatIfItsShorthanded should not modify full-format hex string" name="expandHexToFullFormatIfItsShorthanded should not modify full-format hex string" time="0">
+    <testcase classname="chemicals thunks getChemiclas should return undefined when data response from API is not valid " name="chemicals thunks getChemiclas should return undefined when data response from API is not valid " time="0.005">
     </testcase>
-    <testcase classname="expandHexToFullFormatIfItsShorthanded should handle hex string without leading #" name="expandHexToFullFormatIfItsShorthanded should handle hex string without leading #" time="0">
+  </testsuite>
+  <testsuite name="bioEntityContents thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.272" tests="2">
+    <testcase classname="bioEntityContents thunks getBioEntityContents should return data when data response from API is valid" name="bioEntityContents thunks getBioEntityContents should return data when data response from API is valid" time="0.016">
     </testcase>
-    <testcase classname="expandHexToFullFormatIfItsShorthanded should return original string if it does not match short-hand regex" name="expandHexToFullFormatIfItsShorthanded should return original string if it does not match short-hand regex" time="0">
+    <testcase classname="bioEntityContents thunks getBioEntityContents should return undefined when data response from API is not valid " name="bioEntityContents thunks getBioEntityContents should return undefined when data response from API is not valid " time="0.013">
     </testcase>
-    <testcase classname="hexToRgb should convert valid hex string to RGB object" name="hexToRgb should convert valid hex string to RGB object" time="0">
+  </testsuite>
+  <testsuite name="calculateOverlaysOrder" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.144" tests="5">
+    <testcase classname="calculateOverlaysOrder should return valid overlays order" name="calculateOverlaysOrder should return valid overlays order" time="0.011">
     </testcase>
-    <testcase classname="hexToRgb should return null for invalid hex string" name="hexToRgb should return null for invalid hex string" time="0.001">
+    <testcase classname="calculateOverlaysOrder should return valid overlays order" name="calculateOverlaysOrder should return valid overlays order" time="0.001">
     </testcase>
-    <testcase classname="hexToRgb should handle hex string without leading #" name="hexToRgb should handle hex string without leading #" time="0">
+    <testcase classname="calculateOverlaysOrder should return valid overlays order" name="calculateOverlaysOrder should return valid overlays order" time="0">
     </testcase>
-    <testcase classname="hexToRgb should return null for hex string with invalid characters" name="hexToRgb should return null for hex string with invalid characters" time="0">
+    <testcase classname="calculateOverlaysOrder should return valid overlays order" name="calculateOverlaysOrder should return valid overlays order" time="0">
     </testcase>
-    <testcase classname="hexToRgb should convert short-handed RGB hex string without leading # to RGB object" name="hexToRgb should convert short-handed RGB hex string without leading # to RGB object" time="0">
+    <testcase classname="calculateOverlaysOrder should return valid overlays order" name="calculateOverlaysOrder should return valid overlays order" time="0">
     </testcase>
-    <testcase classname="hexToRgb should handle short-handed RGB hex string with invalid characters" name="hexToRgb should handle short-handed RGB hex string with invalid characters" time="0">
+  </testsuite>
+  <testsuite name="processOverlayContentChange" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.128" tests="2">
+    <testcase classname="processOverlayContentChange should parse overlay file content and invoke the handleOverlayChange callback for valid lines" name="processOverlayContentChange should parse overlay file content and invoke the handleOverlayChange callback for valid lines" time="0.006">
     </testcase>
-    <testcase classname="hexToRgb should handle short-handed RGB hex string with invalid characters and without leading #" name="hexToRgb should handle short-handed RGB hex string with invalid characters and without leading #" time="0.001">
+    <testcase classname="processOverlayContentChange should handle lines with invalid format without calling handleOverlayChange" name="processOverlayContentChange should handle lines with invalid format without calling handleOverlayChange" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="drawer reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.187" tests="10">
-    <testcase classname="drawer reducer should match initial state" name="drawer reducer should match initial state" time="0.002">
-    </testcase>
-    <testcase classname="drawer reducer should update the store after openDrawer action" name="drawer reducer should update the store after openDrawer action" time="0.002">
+  <testsuite name="reactions thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.196" tests="3">
+    <testcase classname="reactions thunks getReactionsByIds should return data when data response from API is valid" name="reactions thunks getReactionsByIds should return data when data response from API is valid" time="0.017">
     </testcase>
-    <testcase classname="drawer reducer should update the store after openSearchDrawerWithSelectedTab action" name="drawer reducer should update the store after openSearchDrawerWithSelectedTab action" time="0.001">
+    <testcase classname="reactions thunks getReactionsByIds should return undefined when data response from API is not valid " name="reactions thunks getReactionsByIds should return undefined when data response from API is not valid " time="0.006">
     </testcase>
-    <testcase classname="drawer reducer should update the store after openSubmapsDrawer action" name="drawer reducer should update the store after openSubmapsDrawer action" time="0">
+    <testcase classname="reactions thunks getReactionsByIds should return empty array when data response from API is empty" name="reactions thunks getReactionsByIds should return empty array when data response from API is empty" time="0.001">
     </testcase>
-    <testcase classname="drawer reducer should update the store after selectTab action" name="drawer reducer should update the store after selectTab action" time="0.001">
+  </testsuite>
+  <testsuite name="degreesToRadians - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.137" tests="3">
+    <testcase classname="degreesToRadians - util coverts positive degree to close positive radians" name="degreesToRadians - util coverts positive degree to close positive radians" time="0.001">
     </testcase>
-    <testcase classname="drawer reducer should update the store after closeDrawerReducer action" name="drawer reducer should update the store after closeDrawerReducer action" time="0.001">
+    <testcase classname="degreesToRadians - util coverts negative degree to close negative radians" name="degreesToRadians - util coverts negative degree to close negative radians" time="0.001">
     </testcase>
-    <testcase classname="drawer reducer should update the store after displayDrugsList action" name="drawer reducer should update the store after displayDrugsList action" time="0.001">
+    <testcase classname="degreesToRadians - util coverts zero degree to zero radians" name="degreesToRadians - util coverts zero degree to zero radians" time="0">
     </testcase>
-    <testcase classname="drawer reducer should update the store after displayChemicalsList action" name="drawer reducer should update the store after displayChemicalsList action" time="0.001">
+  </testsuite>
+  <testsuite name="compartmentPathways thunk" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.232" tests="3">
+    <testcase classname="compartmentPathways thunk should handle query getCompartmentPathways properly when models are undefined" name="compartmentPathways thunk should handle query getCompartmentPathways properly when models are undefined" time="0.004">
     </testcase>
-    <testcase classname="drawer reducer should update the store after displayGroupedSearchResults action" name="drawer reducer should update the store after displayGroupedSearchResults action" time="0">
+    <testcase classname="compartmentPathways thunk should handle sendCompartmentPathwaysIds request properly if it is more than 100 ids" name="compartmentPathways thunk should handle sendCompartmentPathwaysIds request properly if it is more than 100 ids" time="0.009">
     </testcase>
-    <testcase classname="drawer reducer should update the store after displayEntityDetails action" name="drawer reducer should update the store after displayEntityDetails action" time="0.002">
+    <testcase classname="compartmentPathways thunk should not do a network request sendCompartmentPathwaysIds if it is less than 100 ids" name="compartmentPathways thunk should not do a network request sendCompartmentPathwaysIds if it is less than 100 ids" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="getSearchResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.195" tests="3">
+  <testsuite name="getSearchResults - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.189" tests="3">
     <testcase classname="getSearchResults - util when results type is ALIAS returns valid array of objects" name="getSearchResults - util when results type is ALIAS returns valid array of objects" time="0.003">
     </testcase>
     <testcase classname="getSearchResults - util when results type is REACTION returns valid array of objects" name="getSearchResults - util when results type is REACTION returns valid array of objects" time="0.001">
@@ -763,256 +1073,300 @@
     <testcase classname="getSearchResults - util when results type is invalid should return undefined" name="getSearchResults - util when results type is invalid should return undefined" time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="models thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.178" tests="2">
-    <testcase classname="models thunks getModels should return data when data response from API is valid" name="models thunks getModels should return data when data response from API is valid" time="0.008">
+  <testsuite name="handleDataReset" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.267" tests="1">
+    <testcase classname="handleDataReset should dispatch reset actions" name="handleDataReset should dispatch reset actions" time="0.002">
     </testcase>
-    <testcase classname="models thunks getModels should return undefined when data response from API is not valid " name="models thunks getModels should return undefined when data response from API is not valid " time="0.009">
+  </testsuite>
+  <testsuite name="drugs thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.253" tests="2">
+    <testcase classname="drugs thunks getDrugs should return data when data response from API is valid" name="drugs thunks getDrugs should return data when data response from API is valid" time="0.025">
+    </testcase>
+    <testcase classname="drugs thunks getDrugs should return undefined when data response from API is not valid " name="drugs thunks getDrugs should return undefined when data response from API is not valid " time="0.005">
     </testcase>
   </testsuite>
-  <testsuite name="getColorByAvailableProperties" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.169" tests="4">
-    <testcase classname="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value equal to 0" name="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value equal to 0" time="0.005">
+  <testsuite name="backgrounds reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.303" tests="4">
+    <testcase classname="backgrounds reducer should match initial state" name="backgrounds reducer should match initial state" time="0.002">
     </testcase>
-    <testcase classname="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value" name="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value" time="0">
+    <testcase classname="backgrounds reducer should update store after succesfull getAllBackgroundsByProjectId query" name="backgrounds reducer should update store after succesfull getAllBackgroundsByProjectId query" time="0.005">
     </testcase>
-    <testcase classname="getColorByAvailableProperties should return the result of convertDecimalToHex if entity has a color" name="getColorByAvailableProperties should return the result of convertDecimalToHex if entity has a color" time="0">
+    <testcase classname="backgrounds reducer should update store after failed getAllBackgroundsByProjectId query" name="backgrounds reducer should update store after failed getAllBackgroundsByProjectId query" time="0.09">
     </testcase>
-    <testcase classname="getColorByAvailableProperties should return the default color if entity has neither a value nor a color" name="getColorByAvailableProperties should return the default color if entity has neither a value nor a color" time="0">
+    <testcase classname="backgrounds reducer should update store on loading getAllBackgroundsByProjectId query" name="backgrounds reducer should update store on loading getAllBackgroundsByProjectId query" time="0.003">
     </testcase>
   </testsuite>
-  <testsuite name="interpolateColor" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.156" tests="5">
-    <testcase classname="interpolateColor should return color1 for position 0" name="interpolateColor should return color1 for position 0" time="0.003">
-    </testcase>
-    <testcase classname="interpolateColor should return color2 for position 1" name="interpolateColor should return color2 for position 1" time="0">
+  <testsuite name="models thunks" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.212" tests="2">
+    <testcase classname="models thunks getModels should return data when data response from API is valid" name="models thunks getModels should return data when data response from API is valid" time="0.011">
     </testcase>
-    <testcase classname="interpolateColor should interpolate colors for position 0.25" name="interpolateColor should interpolate colors for position 0.25" time="0.001">
+    <testcase classname="models thunks getModels should return undefined when data response from API is not valid " name="models thunks getModels should return undefined when data response from API is not valid " time="0.008">
     </testcase>
-    <testcase classname="interpolateColor should interpolate colors for position 0.5" name="interpolateColor should interpolate colors for position 0.5" time="0">
+  </testsuite>
+  <testsuite name="createOverlayGeometryFeature" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.212" tests="2">
+    <testcase classname="createOverlayGeometryFeature should create a feature with the correct geometry and style" name="createOverlayGeometryFeature should create a feature with the correct geometry and style" time="0.003">
     </testcase>
-    <testcase classname="interpolateColor should interpolate colors for position 0.75" name="interpolateColor should interpolate colors for position 0.75" time="0">
+    <testcase classname="createOverlayGeometryFeature should create a feature with the correct geometry and style when using a different color" name="createOverlayGeometryFeature should create a feature with the correct geometry and style when using a different color" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="getUpdatedModel - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.15" tests="3">
-    <testcase classname="getUpdatedModel - util when payload has valid modelId returns model object" name="getUpdatedModel - util when payload has valid modelId returns model object" time="0.002">
+  <testsuite name="project reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.311" tests="4">
+    <testcase classname="project reducer should match initial state" name="project reducer should match initial state" time="0.004">
     </testcase>
-    <testcase classname="getUpdatedModel - util when payload has invalid modelId returns undefined" name="getUpdatedModel - util when payload has invalid modelId returns undefined" time="0">
+    <testcase classname="project reducer should update store after succesfull getProjectById query" name="project reducer should update store after succesfull getProjectById query" time="0.006">
     </testcase>
-    <testcase classname="getUpdatedModel - util when payload does not have modelId returns undefined" name="getUpdatedModel - util when payload does not have modelId returns undefined" time="0">
+    <testcase classname="project reducer should update store after failed getProjectById query" name="project reducer should update store after failed getProjectById query" time="0.1">
+    </testcase>
+    <testcase classname="project reducer should update store on loading getProjectById query" name="project reducer should update store on loading getProjectById query" time="0.006">
     </testcase>
   </testsuite>
-  <testsuite name="rgbToHex - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.16" tests="2">
-    <testcase classname="rgbToHex - util should convert RGB values to hex format" name="rgbToHex - util should convert RGB values to hex format" time="0.001">
+  <testsuite name="drawer reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.236" tests="10">
+    <testcase classname="drawer reducer should match initial state" name="drawer reducer should match initial state" time="0.008">
     </testcase>
-    <testcase classname="rgbToHex - util should handle invalid input values" name="rgbToHex - util should handle invalid input values" time="0.005">
+    <testcase classname="drawer reducer should update the store after openDrawer action" name="drawer reducer should update the store after openDrawer action" time="0.002">
     </testcase>
-  </testsuite>
-  <testsuite name="getFilteredReferences - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.171" tests="3">
-    <testcase classname="getFilteredReferences - subUtil should return valid filtered references" name="getFilteredReferences - subUtil should return valid filtered references" time="0.001">
+    <testcase classname="drawer reducer should update the store after openSearchDrawerWithSelectedTab action" name="drawer reducer should update the store after openSearchDrawerWithSelectedTab action" time="0.001">
     </testcase>
-    <testcase classname="getFilteredReferences - subUtil should return valid filtered references" name="getFilteredReferences - subUtil should return valid filtered references" time="0">
+    <testcase classname="drawer reducer should update the store after openSubmapsDrawer action" name="drawer reducer should update the store after openSubmapsDrawer action" time="0.001">
     </testcase>
-    <testcase classname="getFilteredReferences - subUtil should return valid filtered references" name="getFilteredReferences - subUtil should return valid filtered references" time="0.001">
+    <testcase classname="drawer reducer should update the store after selectTab action" name="drawer reducer should update the store after selectTab action" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="getFinalImageSize - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.138" tests="4">
-    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0.001">
+    <testcase classname="drawer reducer should update the store after closeDrawerReducer action" name="drawer reducer should update the store after closeDrawerReducer action" time="0.001">
     </testcase>
-    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0.001">
+    <testcase classname="drawer reducer should update the store after displayDrugsList action" name="drawer reducer should update the store after displayDrugsList action" time="0">
     </testcase>
-    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0">
+    <testcase classname="drawer reducer should update the store after displayChemicalsList action" name="drawer reducer should update the store after displayChemicalsList action" time="0.001">
     </testcase>
-    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0">
+    <testcase classname="drawer reducer should update the store after displayGroupedSearchResults action" name="drawer reducer should update the store after displayGroupedSearchResults action" time="0.001">
+    </testcase>
+    <testcase classname="drawer reducer should update the store after displayEntityDetails action" name="drawer reducer should update the store after displayEntityDetails action" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="validateDataUsingZodSchema - utils" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.163" tests="2">
-    <testcase classname="validateDataUsingZodSchema - utils should return true for given cases" name="validateDataUsingZodSchema - utils should return true for given cases" time="0.002">
+  <testsuite name="getPointOffset - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.158" tests="3">
+    <testcase classname="getPointOffset - util when all args are valid should return valid point origin and shifted values" name="getPointOffset - util when all args are valid should return valid point origin and shifted values" time="0.002">
     </testcase>
-    <testcase classname="validateDataUsingZodSchema - utils should return false for given cases" name="validateDataUsingZodSchema - utils should return false for given cases" time="0.005">
+    <testcase classname="getPointOffset - util when all args are valid should not throw error" name="getPointOffset - util when all args are valid should not throw error" time="0">
+    </testcase>
+    <testcase classname="getPointOffset - util when mapSize arg is invalid should throw error" name="getPointOffset - util when mapSize arg is invalid should throw error" time="0.008">
     </testcase>
   </testsuite>
-  <testsuite name="handleSearchResultAction - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.125" tests="2">
-    <testcase classname="handleSearchResultAction - util on ALIAS search results should fire handleAliasResults" name="handleSearchResultAction - util on ALIAS search results should fire handleAliasResults" time="0.001">
+  <testsuite name="convertDecimalToHexColor - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.127" tests="2">
+    <testcase classname="convertDecimalToHexColor - util should convert small decimal" name="convertDecimalToHexColor - util should convert small decimal" time="0.001">
     </testcase>
-    <testcase classname="handleSearchResultAction - util on REACTION search results should fire handleReactionResults" name="handleSearchResultAction - util on REACTION search results should fire handleReactionResults" time="0">
+    <testcase classname="convertDecimalToHexColor - util should convert negative decimal" name="convertDecimalToHexColor - util should convert negative decimal" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="cookieBanner reducers" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.138" tests="4">
-    <testcase classname="cookieBanner reducers should match initial state" name="cookieBanner reducers should match initial state" time="0.003">
+  <testsuite name="getCanvas" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.108" tests="1">
+    <testcase classname="getCanvas should return HTMLCanvasElement with valid size on positive params" name="getCanvas should return HTMLCanvasElement with valid size on positive params" time="0.002">
     </testcase>
-    <testcase classname="cookieBanner reducers should handle showBanner action" name="cookieBanner reducers should handle showBanner action" time="0.001">
+  </testsuite>
+  <testsuite name="map thunks - utils" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.275" tests="10">
+    <testcase classname="map thunks - utils getBackgroundId should return backgroundId value from queryData" name="map thunks - utils getBackgroundId should return backgroundId value from queryData" time="0.001">
     </testcase>
-    <testcase classname="cookieBanner reducers should handle hideBanner action" name="cookieBanner reducers should handle hideBanner action" time="0">
+    <testcase classname="map thunks - utils getBackgroundId should return main map background id if query param does not include background id" name="map thunks - utils getBackgroundId should return main map background id if query param does not include background id" time="0">
     </testcase>
-    <testcase classname="cookieBanner reducers should handle acceptCookies action" name="cookieBanner reducers should handle acceptCookies action" time="0">
+    <testcase classname="map thunks - utils getBackgroundId should return default value (0) if query data does not include backgroundId and could not find main background in the store" name="map thunks - utils getBackgroundId should return default value (0) if query data does not include backgroundId and could not find main background in the store" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="getMapTileUrl - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.14" tests="2">
-    <testcase classname="getMapTileUrl - util when projectDirectory is empty should return empty value" name="getMapTileUrl - util when projectDirectory is empty should return empty value" time="0">
+    <testcase classname="map thunks - utils getInitMapPosition should return valid map position from query params " name="map thunks - utils getInitMapPosition should return valid map position from query params " time="0">
     </testcase>
-    <testcase classname="getMapTileUrl - util when all args are valid should return correct value" name="getMapTileUrl - util when all args are valid should return correct value" time="0">
+    <testcase classname="map thunks - utils getInitMapPosition should return valid map position if query params do not include position" name="map thunks - utils getInitMapPosition should return valid map position if query params do not include position" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="getGroupedReferences - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.123" tests="3">
-    <testcase classname="getGroupedReferences - util should return correct grouped references" name="getGroupedReferences - util should return correct grouped references" time="0.001">
+    <testcase classname="map thunks - utils getInitMapPosition should return default map position" name="map thunks - utils getInitMapPosition should return default map position" time="0.001">
     </testcase>
-    <testcase classname="getGroupedReferences - util should return correct grouped references" name="getGroupedReferences - util should return correct grouped references" time="0">
+    <testcase classname="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelid when modelId is provided in queryData" name="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelid when modelId is provided in queryData" time="0">
     </testcase>
-    <testcase classname="getGroupedReferences - util should return correct grouped references" name="getGroupedReferences - util should return correct grouped references" time="0">
+    <testcase classname="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelId if query params do not include modelId" name="map thunks - utils getInitMapSizeAndModelId should return correct mapsize and modelId if query params do not include modelId" time="0">
+    </testcase>
+    <testcase classname="map thunks - utils getOpenedMaps  should return main map only" name="map thunks - utils getOpenedMaps  should return main map only" time="0">
+    </testcase>
+    <testcase classname="map thunks - utils getOpenedMaps  should return main map and opened submap" name="map thunks - utils getOpenedMaps  should return main map and opened submap" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="checkIfIsActionValid - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.117" tests="3">
-    <testcase classname="checkIfIsActionValid - util when action payload has model id equal to current should return false" name="checkIfIsActionValid - util when action payload has model id equal to current should return false" time="0.001">
+  <testsuite name="interpolateThreeColors - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.123" tests="9">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -1 should return { r: 255, g: 0, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -1 should return { r: 255, g: 0, b: 0 }" time="0.001">
     </testcase>
-    <testcase classname="checkIfIsActionValid - util when action payload has model id different than current should return true" name="checkIfIsActionValid - util when action payload has model id different than current should return true" time="0">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.75 should return { r: 191, g: 64, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.75 should return { r: 191, g: 64, b: 0 }" time="0">
     </testcase>
-    <testcase classname="checkIfIsActionValid - util when action payload has NOT model id should return true" name="checkIfIsActionValid - util when action payload has NOT model id should return true" time="0">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.5 should return { r: 128, g: 128, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.5 should return { r: 128, g: 128, b: 0 }" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="getSearchValuesArray - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.126" tests="6">
-    <testcase classname="getSearchValuesArray - util should return array of values when string has ; separator" name="getSearchValuesArray - util should return array of values when string has ; separator" time="0.001">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.25 should return { r: 64, g: 191, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.25 should return { r: 64, g: 191, b: 0 }" time="0">
     </testcase>
-    <testcase classname="getSearchValuesArray - util should trim values to seven if more values are provided" name="getSearchValuesArray - util should trim values to seven if more values are provided" time="0">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0 should return { r: 0, g: 255, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0 should return { r: 0, g: 255, b: 0 }" time="0">
     </testcase>
-    <testcase classname="getSearchValuesArray - util should return single value in array if no ; was passed in string" name="getSearchValuesArray - util should return single value in array if no ; was passed in string" time="0.001">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.25 should return { r: 0, g: 191, b: 64 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.25 should return { r: 0, g: 191, b: 64 }" time="0">
     </testcase>
-    <testcase classname="getDefaultSearchTab for [ &apos;nadh&apos;, &apos;o2&apos;, &apos;mp3&apos; ] should return nadh" name="getDefaultSearchTab for [ &apos;nadh&apos;, &apos;o2&apos;, &apos;mp3&apos; ] should return nadh" time="0">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.5 should return { r: 0, g: 128, b: 128 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.5 should return { r: 0, g: 128, b: 128 }" time="0">
     </testcase>
-    <testcase classname="getDefaultSearchTab for [ &apos;o2&apos; ] should return o2" name="getDefaultSearchTab for [ &apos;o2&apos; ] should return o2" time="0">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.75 should return { r: 0, g: 64, b: 191 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.75 should return { r: 0, g: 64, b: 191 }" time="0">
     </testcase>
-    <testcase classname="getDefaultSearchTab for [ &apos;&apos; ] should return " name="getDefaultSearchTab for [ &apos;&apos; ] should return " time="0">
+    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 1 should return { r: 0, g: 0, b: 255 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 1 should return { r: 0, g: 0, b: 255 }" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="boundNumber - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.116" tests="3">
-    <testcase classname="boundNumber - util should return valid bounded number | v = 1, minMax = (0, 2), final = 1" name="boundNumber - util should return valid bounded number | v = 1, minMax = (0, 2), final = 1" time="0.001">
+  <testsuite name="radiansToDegrees - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.103" tests="3">
+    <testcase classname="radiansToDegrees - util coverts positive radian to close positive degrees" name="radiansToDegrees - util coverts positive radian to close positive degrees" time="0.001">
     </testcase>
-    <testcase classname="boundNumber - util should return valid bounded number | v = 1, minMax = (2, 2), final = 2" name="boundNumber - util should return valid bounded number | v = 1, minMax = (2, 2), final = 2" time="0">
+    <testcase classname="radiansToDegrees - util coverts negative radian to close negative degrees" name="radiansToDegrees - util coverts negative radian to close negative degrees" time="0">
     </testcase>
-    <testcase classname="boundNumber - util should return valid bounded number | v = 2, minMax = (0, 1), final = 1" name="boundNumber - util should return valid bounded number | v = 2, minMax = (0, 1), final = 1" time="0">
+    <testcase classname="radiansToDegrees - util coverts zero radian to zero degrees" name="radiansToDegrees - util coverts zero radian to zero degrees" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getCanvas" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.111" tests="1">
-    <testcase classname="getCanvas should return HTMLCanvasElement with valid size on positive params" name="getCanvas should return HTMLCanvasElement with valid size on positive params" time="0.003">
+  <testsuite name="parseQueryToTypes" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.124" tests="1">
+    <testcase classname="parseQueryToTypes should return valid data" name="parseQueryToTypes should return valid data" time="0.002">
     </testcase>
   </testsuite>
-  <testsuite name="getTruthyObjectOrUndefined - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.124" tests="4">
-    <testcase classname="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is truthy" name="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is truthy" time="0.001">
+  <testsuite name="cookieBanner reducers" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.109" tests="4">
+    <testcase classname="cookieBanner reducers should match initial state" name="cookieBanner reducers should match initial state" time="0.003">
     </testcase>
-    <testcase classname="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is empty" name="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is empty" time="0">
+    <testcase classname="cookieBanner reducers should handle showBanner action" name="cookieBanner reducers should handle showBanner action" time="0">
     </testcase>
-    <testcase classname="getTruthyObjectOrUndefined - util shoud return undefined if the object is partially truthy" name="getTruthyObjectOrUndefined - util shoud return undefined if the object is partially truthy" time="0">
+    <testcase classname="cookieBanner reducers should handle hideBanner action" name="cookieBanner reducers should handle hideBanner action" time="0">
     </testcase>
-    <testcase classname="getTruthyObjectOrUndefined - util shoud return undefined if the objects&apos;s nested objects is partially truthy" name="getTruthyObjectOrUndefined - util shoud return undefined if the objects&apos;s nested objects is partially truthy" time="0">
+    <testcase classname="cookieBanner reducers should handle acceptCookies action" name="cookieBanner reducers should handle acceptCookies action" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="pointToLatLng - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.149" tests="3">
-    <testcase classname="pointToLatLng - util when mapSize arg is undefined should return fallback value" name="pointToLatLng - util when mapSize arg is undefined should return fallback value" time="0.018">
+  <testsuite name="groupBy - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.099" tests="2">
+    <testcase classname="groupBy - util should return valid data basing on predicate" name="groupBy - util should return valid data basing on predicate" time="0.002">
     </testcase>
-    <testcase classname="pointToLatLng - util when mapSize arg is invalid should return fallback value" name="pointToLatLng - util when mapSize arg is invalid should return fallback value" time="0.001">
+    <testcase classname="groupBy - util should return valid data basing on predicate" name="groupBy - util should return valid data basing on predicate" time="0">
     </testcase>
-    <testcase classname="pointToLatLng - util when all args are valid should return valid lat lng value" name="pointToLatLng - util when all args are valid should return valid lat lng value" time="0">
+  </testsuite>
+  <testsuite name="getElementsByPoint - utils" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.16" tests="3">
+    <testcase classname="getElementsByPoint - utils should return data when data response from API is valid" name="getElementsByPoint - utils should return data when data response from API is valid" time="0.003">
+    </testcase>
+    <testcase classname="getElementsByPoint - utils should return undefined when data response from API is not valid " name="getElementsByPoint - utils should return undefined when data response from API is not valid " time="0.004">
+    </testcase>
+    <testcase classname="getElementsByPoint - utils should return empty array when data response from API is empty" name="getElementsByPoint - utils should return empty array when data response from API is empty" time="0.014">
     </testcase>
   </testsuite>
-  <testsuite name="getPointOffset - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.125" tests="3">
-    <testcase classname="getPointOffset - util when all args are valid should return valid point origin and shifted values" name="getPointOffset - util when all args are valid should return valid point origin and shifted values" time="0.002">
+  <testsuite name="validateDataUsingZodSchema - utils" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.129" tests="2">
+    <testcase classname="validateDataUsingZodSchema - utils should return true for given cases" name="validateDataUsingZodSchema - utils should return true for given cases" time="0.002">
     </testcase>
-    <testcase classname="getPointOffset - util when all args are valid should not throw error" name="getPointOffset - util when all args are valid should not throw error" time="0">
+    <testcase classname="validateDataUsingZodSchema - utils should return false for given cases" name="validateDataUsingZodSchema - utils should return false for given cases" time="0.009">
     </testcase>
-    <testcase classname="getPointOffset - util when mapSize arg is invalid should throw error" name="getPointOffset - util when mapSize arg is invalid should throw error" time="0.005">
+  </testsuite>
+  <testsuite name="getFinalImageSize - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.128" tests="4">
+    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0.001">
+    </testcase>
+    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0.001">
+    </testcase>
+    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0">
+    </testcase>
+    <testcase classname="getFinalImageSize - util should return valid size and size factor" name="getFinalImageSize - util should return valid size and size factor" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="addAlphaToHexString" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.125" tests="5">
-    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, undefined ] should return #ff0000ff" name="addAlphaToHexString for [ &apos;#ff0000&apos;, undefined ] should return #ff0000ff" time="0.002">
+  <testsuite name="getHexTricolorGradientColorWithAlpha" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.145" tests="9">
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: -1 } should return #FF0000ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: -1 } should return #FF0000ff" time="0.003">
     </testcase>
-    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 1 ] should return #ff0000ff" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 1 ] should return #ff0000ff" time="0">
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 0.8, position: -0.75 } should return #BF4000cc" name="getHexTricolorGradientColorWithAlpha and position { alpha: 0.8, position: -0.75 } should return #BF4000cc" time="0">
     </testcase>
-    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.8 ] should return #ff0000cc" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.8 ] should return #ff0000cc" time="0">
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 0.5, position: -0.5 } should return #80800080" name="getHexTricolorGradientColorWithAlpha and position { alpha: 0.5, position: -0.5 } should return #80800080" time="0">
+    </testcase>
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 0, position: -0.25 } should return #40BF0000" name="getHexTricolorGradientColorWithAlpha and position { alpha: 0, position: -0.25 } should return #40BF0000" time="0">
+    </testcase>
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0 } should return #00FF00ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0 } should return #00FF00ff" time="0">
+    </testcase>
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.25 } should return #00BF40ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.25 } should return #00BF40ff" time="0">
     </testcase>
-    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.5 ] should return #ff000080" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.5 ] should return #ff000080" time="0.001">
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.5 } should return #008080ff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.5 } should return #008080ff" time="0.001">
     </testcase>
-    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 0 ] should return #ff000000" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 0 ] should return #ff000000" time="0">
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.75 } should return #0040BFff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 0.75 } should return #0040BFff" time="0">
+    </testcase>
+    <testcase classname="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 1 } should return #0000FFff" name="getHexTricolorGradientColorWithAlpha and position { alpha: 1, position: 1 } should return #0000FFff" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="interpolateThreeColors - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.161" tests="9">
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -1 should return { r: 255, g: 0, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -1 should return { r: 255, g: 0, b: 0 }" time="0.002">
+  <testsuite name="login thunk" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.169" tests="2">
+    <testcase classname="login thunk dispatches closeModal action on successful login with valid data" name="login thunk dispatches closeModal action on successful login with valid data" time="0.002">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.75 should return { r: 191, g: 64, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.75 should return { r: 191, g: 64, b: 0 }" time="0">
+    <testcase classname="login thunk does not dispatch closeModal action on failed login with invalid data" name="login thunk does not dispatch closeModal action on failed login with invalid data" time="0.003">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.5 should return { r: 128, g: 128, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.5 should return { r: 128, g: 128, b: 0 }" time="0.001">
+  </testsuite>
+  <testsuite name="getColorByAvailableProperties" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.156" tests="4">
+    <testcase classname="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value equal to 0" name="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value equal to 0" time="0.002">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.25 should return { r: 64, g: 191, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position -0.25 should return { r: 64, g: 191, b: 0 }" time="0">
+    <testcase classname="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value" name="getColorByAvailableProperties should return the result of getHexTricolorGradientColorWithAlpha if entity has a value" time="0">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0 should return { r: 0, g: 255, b: 0 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0 should return { r: 0, g: 255, b: 0 }" time="0">
+    <testcase classname="getColorByAvailableProperties should return the result of convertDecimalToHex if entity has a color" name="getColorByAvailableProperties should return the result of convertDecimalToHex if entity has a color" time="0">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.25 should return { r: 0, g: 191, b: 64 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.25 should return { r: 0, g: 191, b: 64 }" time="0">
+    <testcase classname="getColorByAvailableProperties should return the default color if entity has neither a value nor a color" name="getColorByAvailableProperties should return the default color if entity has neither a value nor a color" time="0.001">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.5 should return { r: 0, g: 128, b: 128 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.5 should return { r: 0, g: 128, b: 128 }" time="0.001">
+  </testsuite>
+  <testsuite name="pointToLatLng - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.183" tests="3">
+    <testcase classname="pointToLatLng - util when mapSize arg is undefined should return fallback value" name="pointToLatLng - util when mapSize arg is undefined should return fallback value" time="0.011">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.75 should return { r: 0, g: 64, b: 191 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 0.75 should return { r: 0, g: 64, b: 191 }" time="0">
+    <testcase classname="pointToLatLng - util when mapSize arg is invalid should return fallback value" name="pointToLatLng - util when mapSize arg is invalid should return fallback value" time="0.001">
     </testcase>
-    <testcase classname="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 1 should return { r: 0, g: 0, b: 255 }" name="interpolateThreeColors - util for linear gradient with range [-1,0,1]: left color (-1) {&quot;r&quot;:255,&quot;g&quot;:0,&quot;b&quot;:0}, middle color (0) {&quot;r&quot;:0,&quot;g&quot;:255,&quot;b&quot;:0} and right Color (1) {&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:255} and position 1 should return { r: 0, g: 0, b: 255 }" time="0">
+    <testcase classname="pointToLatLng - util when all args are valid should return valid lat lng value" name="pointToLatLng - util when all args are valid should return valid lat lng value" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getOverviewImageLinkSize - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:23" time="0.132" tests="5">
-    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0.001">
+  <testsuite name="Overlay Bio Entity Reducers" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.216" tests="1">
+    <testcase classname="Overlay Bio Entity Reducers getOverlayBioEntityReducer should update the state correctly when getOverlayBioEntity action is dispatched" name="Overlay Bio Entity Reducers getOverlayBioEntityReducer should update the state correctly when getOverlayBioEntity action is dispatched" time="0.007">
     </testcase>
-    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
+  </testsuite>
+  <testsuite name="latLngToPoint - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.152" tests="4">
+    <testcase classname="latLngToPoint - util on map with default tileSize = 256 should return valid point" name="latLngToPoint - util on map with default tileSize = 256 should return valid point" time="0.002">
     </testcase>
-    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0.001">
+    <testcase classname="latLngToPoint - util on map with default tileSize = 256 should return valid point" name="latLngToPoint - util on map with default tileSize = 256 should return valid point" time="0">
     </testcase>
-    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
+    <testcase classname="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" name="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" time="0.001">
     </testcase>
-    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
+    <testcase classname="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" name="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getPointMerged" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.131" tests="3">
-    <testcase classname="getPointMerged should return valid merged point" name="getPointMerged should return valid merged point" time="0.002">
+  <testsuite name="getFilteredReferences - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.148" tests="3">
+    <testcase classname="getFilteredReferences - subUtil should return valid filtered references" name="getFilteredReferences - subUtil should return valid filtered references" time="0.001">
     </testcase>
-    <testcase classname="getPointMerged should return valid merged point" name="getPointMerged should return valid merged point" time="0.001">
+    <testcase classname="getFilteredReferences - subUtil should return valid filtered references" name="getFilteredReferences - subUtil should return valid filtered references" time="0.001">
     </testcase>
-    <testcase classname="getPointMerged should return valid merged point" name="getPointMerged should return valid merged point" time="0">
+    <testcase classname="getFilteredReferences - subUtil should return valid filtered references" name="getFilteredReferences - subUtil should return valid filtered references" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="convertDecimalToHexColor - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.159" tests="2">
-    <testcase classname="convertDecimalToHexColor - util should convert small decimal" name="convertDecimalToHexColor - util should convert small decimal" time="0.001">
+  <testsuite name="handleSearchResultForRightClickAction - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.154" tests="2">
+    <testcase classname="handleSearchResultForRightClickAction - util on ALIAS search results should fire handleBioEntityResults" name="handleSearchResultForRightClickAction - util on ALIAS search results should fire handleBioEntityResults" time="0.001">
     </testcase>
-    <testcase classname="convertDecimalToHexColor - util should convert negative decimal" name="convertDecimalToHexColor - util should convert negative decimal" time="0.001">
+    <testcase classname="handleSearchResultForRightClickAction - util on REACTION search results should fire handleReactionResults" name="handleSearchResultForRightClickAction - util on REACTION search results should fire handleReactionResults" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="parseQueryToTypes" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.16" tests="1">
-    <testcase classname="parseQueryToTypes should return valid data" name="parseQueryToTypes should return valid data" time="0.002">
+  <testsuite name="getUpdatedMapData - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.149" tests="3">
+    <testcase classname="getUpdatedMapData - util when model does not have default values should return correct value" name="getUpdatedMapData - util when model does not have default values should return correct value" time="0.002">
+    </testcase>
+    <testcase classname="getUpdatedMapData - util when model has default falsy values should return correct value" name="getUpdatedMapData - util when model has default falsy values should return correct value" time="0.001">
+    </testcase>
+    <testcase classname="getUpdatedMapData - util when model has default truthy values should return correct value" name="getUpdatedMapData - util when model has default truthy values should return correct value" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="api path" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.138" tests="3">
-    <testcase classname="api path should return url string for drugs" name="api path should return url string for drugs" time="0.001">
+  <testsuite name="getCheckboxElements" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.133" tests="4">
+    <testcase classname="getCheckboxElements should return an empty array when elementTypes is undefined" name="getCheckboxElements should return an empty array when elementTypes is undefined" time="0.001">
     </testcase>
-    <testcase classname="api path should return url string for bio entity content" name="api path should return url string for bio entity content" time="0">
+    <testcase classname="getCheckboxElements should map elementTypes to MappedElementTypes and exclude duplicates based on name and parentClass" name="getCheckboxElements should map elementTypes to MappedElementTypes and exclude duplicates based on name and parentClass" time="0.001">
     </testcase>
-    <testcase classname="api path should return url string for bio entity content" name="api path should return url string for bio entity content" time="0">
+    <testcase classname="getCheckboxElements should handle an empty array of elementTypes" name="getCheckboxElements should handle an empty array of elementTypes" time="0">
+    </testcase>
+    <testcase classname="getCheckboxElements should return an empty array when elementTypes is undefined" name="getCheckboxElements should return an empty array when elementTypes is undefined" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="latLngToPoint - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.152" tests="4">
-    <testcase classname="latLngToPoint - util on map with default tileSize = 256 should return valid point" name="latLngToPoint - util on map with default tileSize = 256 should return valid point" time="0.001">
+  <testsuite name="getOverviewImageLinkSize - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.115" tests="5">
+    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0.001">
     </testcase>
-    <testcase classname="latLngToPoint - util on map with default tileSize = 256 should return valid point" name="latLngToPoint - util on map with default tileSize = 256 should return valid point" time="0">
+    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
     </testcase>
-    <testcase classname="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" name="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" time="0">
+    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
     </testcase>
-    <testcase classname="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" name="latLngToPoint - util on map with non-default tileSize = 128 should return valid point" time="0.001">
+    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
+    </testcase>
+    <testcase classname="getOverviewImageLinkSize - util should return valid link config size" name="getOverviewImageLinkSize - util should return valid link config size" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="handleSearchResultForRightClickAction - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.118" tests="2">
-    <testcase classname="handleSearchResultForRightClickAction - util on ALIAS search results should fire handleBioEntityResults" name="handleSearchResultForRightClickAction - util on ALIAS search results should fire handleBioEntityResults" time="0.002">
+  <testsuite name="handleSearchResultAction - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.13" tests="2">
+    <testcase classname="handleSearchResultAction - util on ALIAS search results should fire handleAliasResults" name="handleSearchResultAction - util on ALIAS search results should fire handleAliasResults" time="0.002">
     </testcase>
-    <testcase classname="handleSearchResultForRightClickAction - util on REACTION search results should fire handleReactionResults" name="handleSearchResultForRightClickAction - util on REACTION search results should fire handleReactionResults" time="0">
+    <testcase classname="handleSearchResultAction - util on REACTION search results should fire handleReactionResults" name="handleSearchResultAction - util on REACTION search results should fire handleReactionResults" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="groupBy - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.132" tests="2">
-    <testcase classname="groupBy - util should return valid data basing on predicate" name="groupBy - util should return valid data basing on predicate" time="0.002">
+  <testsuite name="getUpdatedModel - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.175" tests="3">
+    <testcase classname="getUpdatedModel - util when payload has valid modelId returns model object" name="getUpdatedModel - util when payload has valid modelId returns model object" time="0.003">
     </testcase>
-    <testcase classname="groupBy - util should return valid data basing on predicate" name="groupBy - util should return valid data basing on predicate" time="0">
+    <testcase classname="getUpdatedModel - util when payload has invalid modelId returns undefined" name="getUpdatedModel - util when payload has invalid modelId returns undefined" time="0">
+    </testcase>
+    <testcase classname="getUpdatedModel - util when payload does not have modelId returns undefined" name="getUpdatedModel - util when payload does not have modelId returns undefined" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getFontSizeToFit" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.153" tests="5">
-    <testcase classname="getFontSizeToFit on text=Hello, fontFace=Helvetica, maxWidth=50 it should return value 10" name="getFontSizeToFit on text=Hello, fontFace=Helvetica, maxWidth=50 it should return value 10" time="0.003">
+  <testsuite name="getFontSizeToFit" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.132" tests="5">
+    <testcase classname="getFontSizeToFit on text=Hello, fontFace=Helvetica, maxWidth=50 it should return value 10" name="getFontSizeToFit on text=Hello, fontFace=Helvetica, maxWidth=50 it should return value 10" time="0.002">
     </testcase>
     <testcase classname="getFontSizeToFit on text=123, fontFace=Arial, maxWidth=48 it should return value 16" name="getFontSizeToFit on text=123, fontFace=Arial, maxWidth=48 it should return value 16" time="0.001">
     </testcase>
@@ -1020,121 +1374,141 @@
     </testcase>
     <testcase classname="getFontSizeToFit on text=Text, fontFace=, maxWidth=0 it should return value 0" name="getFontSizeToFit on text=Text, fontFace=, maxWidth=0 it should return value 0" time="0.001">
     </testcase>
-    <testcase classname="getFontSizeToFit on text=, fontFace=, maxWidth=0 it should return value 0" name="getFontSizeToFit on text=, fontFace=, maxWidth=0 it should return value 0" time="0">
+    <testcase classname="getFontSizeToFit on text=, fontFace=, maxWidth=0 it should return value 0" name="getFontSizeToFit on text=, fontFace=, maxWidth=0 it should return value 0" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="radiansToDegrees - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.144" tests="3">
-    <testcase classname="radiansToDegrees - util coverts positive radian to close positive degrees" name="radiansToDegrees - util coverts positive radian to close positive degrees" time="0.001">
+  <testsuite name="getGroupedReferences - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.133" tests="3">
+    <testcase classname="getGroupedReferences - util should return correct grouped references" name="getGroupedReferences - util should return correct grouped references" time="0.002">
     </testcase>
-    <testcase classname="radiansToDegrees - util coverts negative radian to close negative degrees" name="radiansToDegrees - util coverts negative radian to close negative degrees" time="0">
+    <testcase classname="getGroupedReferences - util should return correct grouped references" name="getGroupedReferences - util should return correct grouped references" time="0.001">
     </testcase>
-    <testcase classname="radiansToDegrees - util coverts zero radian to zero degrees" name="radiansToDegrees - util coverts zero radian to zero degrees" time="0">
+    <testcase classname="getGroupedReferences - util should return correct grouped references" name="getGroupedReferences - util should return correct grouped references" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="degreesToRadians - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.133" tests="3">
-    <testcase classname="degreesToRadians - util coverts positive degree to close positive radians" name="degreesToRadians - util coverts positive degree to close positive radians" time="0.001">
+  <testsuite name="addAlphaToHexString" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.133" tests="5">
+    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, undefined ] should return #ff0000ff" name="addAlphaToHexString for [ &apos;#ff0000&apos;, undefined ] should return #ff0000ff" time="0.008">
     </testcase>
-    <testcase classname="degreesToRadians - util coverts negative degree to close negative radians" name="degreesToRadians - util coverts negative degree to close negative radians" time="0">
+    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 1 ] should return #ff0000ff" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 1 ] should return #ff0000ff" time="0.001">
     </testcase>
-    <testcase classname="degreesToRadians - util coverts zero degree to zero radians" name="degreesToRadians - util coverts zero degree to zero radians" time="0">
+    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.8 ] should return #ff0000cc" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.8 ] should return #ff0000cc" time="0">
+    </testcase>
+    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.5 ] should return #ff000080" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 0.5 ] should return #ff000080" time="0">
+    </testcase>
+    <testcase classname="addAlphaToHexString for [ &apos;#ff0000&apos;, 0 ] should return #ff000000" name="addAlphaToHexString for [ &apos;#ff0000&apos;, 0 ] should return #ff000000" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="getPinStyle - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.416" tests="3">
+  <testsuite name="user reducer" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:47" time="0.198" tests="4">
+    <testcase classname="user reducer should match initial state" name="user reducer should match initial state" time="0.003">
+    </testcase>
+    <testcase classname="user reducer should update store after successful login query" name="user reducer should update store after successful login query" time="0.007">
+    </testcase>
+    <testcase classname="user reducer should update store on loading login query" name="user reducer should update store on loading login query" time="0.001">
+    </testcase>
+    <testcase classname="user reducer should update store after successful getSessionValid query" name="user reducer should update store after successful getSessionValid query" time="0.001">
+    </testcase>
+  </testsuite>
+  <testsuite name="getPinStyle - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.166" tests="3">
     <testcase classname="getPinStyle - subUtil should return instance of Style" name="getPinStyle - subUtil should return instance of Style" time="0.001">
     </testcase>
-    <testcase classname="getPinStyle - subUtil should return image object with displacament of pin size height" name="getPinStyle - subUtil should return image object with displacament of pin size height" time="0.007">
+    <testcase classname="getPinStyle - subUtil should return image object with displacament of pin size height" name="getPinStyle - subUtil should return image object with displacament of pin size height" time="0">
     </testcase>
     <testcase classname="getPinStyle - subUtil should return image of pin size" name="getPinStyle - subUtil should return image of pin size" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="createOverlayGeometryFeature" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.399" tests="2">
-    <testcase classname="createOverlayGeometryFeature should create a feature with the correct geometry and style" name="createOverlayGeometryFeature should create a feature with the correct geometry and style" time="0.002">
+  <testsuite name="getMapTileUrl - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.136" tests="2">
+    <testcase classname="getMapTileUrl - util when projectDirectory is empty should return empty value" name="getMapTileUrl - util when projectDirectory is empty should return empty value" time="0.001">
     </testcase>
-    <testcase classname="createOverlayGeometryFeature should create a feature with the correct geometry and style when using a different color" name="createOverlayGeometryFeature should create a feature with the correct geometry and style when using a different color" time="0">
+    <testcase classname="getMapTileUrl - util when all args are valid should return correct value" name="getMapTileUrl - util when all args are valid should return correct value" time="0.001">
     </testcase>
   </testsuite>
-  <testsuite name="getLineFeature" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.064" tests="2">
-    <testcase classname="getLineFeature should return valid Feature object" name="getLineFeature should return valid Feature object" time="0.003">
+  <testsuite name="interpolateColor" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.141" tests="5">
+    <testcase classname="interpolateColor should return color1 for position 0" name="interpolateColor should return color1 for position 0" time="0.001">
     </testcase>
-    <testcase classname="getLineFeature should return valid Feature object with LineString geometry" name="getLineFeature should return valid Feature object with LineString geometry" time="0.011">
+    <testcase classname="interpolateColor should return color2 for position 1" name="interpolateColor should return color2 for position 1" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="useOlMapReactionsLayer - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.078" tests="2">
-    <testcase classname="useOlMapReactionsLayer - util should return VectorLayer" name="useOlMapReactionsLayer - util should return VectorLayer" time="0.01">
+    <testcase classname="interpolateColor should interpolate colors for position 0.25" name="interpolateColor should interpolate colors for position 0.25" time="0.001">
+    </testcase>
+    <testcase classname="interpolateColor should interpolate colors for position 0.5" name="interpolateColor should interpolate colors for position 0.5" time="0">
     </testcase>
-    <testcase classname="useOlMapReactionsLayer - util should return VectorLayer with valid Style" name="useOlMapReactionsLayer - util should return VectorLayer with valid Style" time="0.01">
+    <testcase classname="interpolateColor should interpolate colors for position 0.75" name="interpolateColor should interpolate colors for position 0.75" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getPinFeature - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.04" tests="3">
-    <testcase classname="getPinFeature - subUtil should return instance of Feature" name="getPinFeature - subUtil should return instance of Feature" time="0.001">
+  <testsuite name="api path" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.125" tests="3">
+    <testcase classname="api path should return url string for drugs" name="api path should return url string for drugs" time="0.001">
     </testcase>
-    <testcase classname="getPinFeature - subUtil should return id as name" name="getPinFeature - subUtil should return id as name" time="0.001">
+    <testcase classname="api path should return url string for bio entity content" name="api path should return url string for bio entity content" time="0.001">
     </testcase>
-    <testcase classname="getPinFeature - subUtil should return point parsed with point to projection" name="getPinFeature - subUtil should return point parsed with point to projection" time="0.001">
+    <testcase classname="api path should return url string for bio entity content" name="api path should return url string for bio entity content" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="getBioEntitySingleFeature - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.057" tests="6">
-    <testcase classname="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=bioEntity" name="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=bioEntity" time="0.012">
+  <testsuite name="expandHexToFullFormatIfItsShorthanded" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.124" tests="11">
+    <testcase classname="expandHexToFullFormatIfItsShorthanded should expand short-handed hex string to full format" name="expandHexToFullFormatIfItsShorthanded should expand short-handed hex string to full format" time="0.001">
     </testcase>
-    <testcase classname="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=drugs" name="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=drugs" time="0.001">
+    <testcase classname="expandHexToFullFormatIfItsShorthanded should not modify full-format hex string" name="expandHexToFullFormatIfItsShorthanded should not modify full-format hex string" time="0">
     </testcase>
-    <testcase classname="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=chemicals" name="getBioEntitySingleFeature - subUtil should return instance of Feature with Style type=chemicals" time="0.001">
+    <testcase classname="expandHexToFullFormatIfItsShorthanded should handle hex string without leading #" name="expandHexToFullFormatIfItsShorthanded should handle hex string without leading #" time="0">
     </testcase>
-    <testcase classname="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=bioEntity" name="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=bioEntity" time="0.003">
+    <testcase classname="expandHexToFullFormatIfItsShorthanded should return original string if it does not match short-hand regex" name="expandHexToFullFormatIfItsShorthanded should return original string if it does not match short-hand regex" time="0">
     </testcase>
-    <testcase classname="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=drugs" name="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=drugs" time="0.002">
+    <testcase classname="hexToRgb should convert valid hex string to RGB object" name="hexToRgb should convert valid hex string to RGB object" time="0">
     </testcase>
-    <testcase classname="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=chemicals" name="getBioEntitySingleFeature - subUtil should run getPinStyle with valid args for type=chemicals" time="0.002">
+    <testcase classname="hexToRgb should return null for invalid hex string" name="hexToRgb should return null for invalid hex string" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="useOlMapPinsLayer - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.068" tests="1">
-    <testcase classname="useOlMapPinsLayer - util should return VectorLayer" name="useOlMapPinsLayer - util should return VectorLayer" time="0.025">
+    <testcase classname="hexToRgb should handle hex string without leading #" name="hexToRgb should handle hex string without leading #" time="0.001">
     </testcase>
-  </testsuite>
-  <testsuite name="getBioEntitiesFeatures - subUtil" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.992" tests="3">
-    <testcase classname="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=bioEntity" name="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=bioEntity" time="0.024">
+    <testcase classname="hexToRgb should return null for hex string with invalid characters" name="hexToRgb should return null for hex string with invalid characters" time="0">
     </testcase>
-    <testcase classname="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=drugs" name="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=drugs" time="0.005">
+    <testcase classname="hexToRgb should convert short-handed RGB hex string without leading # to RGB object" name="hexToRgb should convert short-handed RGB hex string without leading # to RGB object" time="0">
     </testcase>
-    <testcase classname="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=chemicals" name="getBioEntitiesFeatures - subUtil should return array of instances of Feature with Style type=chemicals" time="0.005">
+    <testcase classname="hexToRgb should handle short-handed RGB hex string with invalid characters" name="hexToRgb should handle short-handed RGB hex string with invalid characters" time="0">
+    </testcase>
+    <testcase classname="hexToRgb should handle short-handed RGB hex string with invalid characters and without leading #" name="hexToRgb should handle short-handed RGB hex string with invalid characters and without leading #" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="useOlMapListeners - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.012" tests="2">
-    <testcase classname="useOlMapListeners - util on change:center view event should run onMapPositionChange event" name="useOlMapListeners - util on change:center view event should run onMapPositionChange event" time="0.01">
+  <testsuite name="getPointMerged" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.117" tests="3">
+    <testcase classname="getPointMerged should return valid merged point" name="getPointMerged should return valid merged point" time="0.001">
     </testcase>
-    <testcase classname="useOlMapListeners - util on singleclick view event should run onMapPositionChange event" name="useOlMapListeners - util on singleclick view event should run onMapPositionChange event" time="0.001">
+    <testcase classname="getPointMerged should return valid merged point" name="getPointMerged should return valid merged point" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="useOlMapTileLayer - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="0.859" tests="1">
-    <testcase classname="useOlMapTileLayer - util should return valid TileLayer instance" name="useOlMapTileLayer - util should return valid TileLayer instance" time="0.013">
+    <testcase classname="getPointMerged should return valid merged point" name="getPointMerged should return valid merged point" time="0">
     </testcase>
   </testsuite>
-  <testsuite name="useOlMapView - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:24" time="1.067" tests="2">
-    <testcase classname="useOlMapView - util should modify view of the map instance on INITIAL position config change" name="useOlMapView - util should modify view of the map instance on INITIAL position config change" time="0.047">
+  <testsuite name="getSearchValuesArray - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.119" tests="6">
+    <testcase classname="getSearchValuesArray - util should return array of values when string has ; separator" name="getSearchValuesArray - util should return array of values when string has ; separator" time="0.002">
     </testcase>
-    <testcase classname="useOlMapView - util should return valid View instance" name="useOlMapView - util should return valid View instance" time="0.007">
+    <testcase classname="getSearchValuesArray - util should trim values to seven if more values are provided" name="getSearchValuesArray - util should trim values to seven if more values are provided" time="0">
     </testcase>
-  </testsuite>
-  <testsuite name="useOlMapLayers - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:25" time="0.469" tests="4">
-    <testcase classname="useOlMapLayers - util should modify layers of the map instance on init" name="useOlMapLayers - util should modify layers of the map instance on init" time="0.029">
+    <testcase classname="getSearchValuesArray - util should return single value in array if no ; was passed in string" name="getSearchValuesArray - util should return single value in array if no ; was passed in string" time="0">
     </testcase>
-    <testcase classname="useOlMapLayers - util should return valid TileLayer instance [1]" name="useOlMapLayers - util should return valid TileLayer instance [1]" time="0.01">
+    <testcase classname="getDefaultSearchTab for [ &apos;nadh&apos;, &apos;o2&apos;, &apos;mp3&apos; ] should return nadh" name="getDefaultSearchTab for [ &apos;nadh&apos;, &apos;o2&apos;, &apos;mp3&apos; ] should return nadh" time="0">
     </testcase>
-    <testcase classname="useOlMapLayers - util should return valid VectorLayer instance [2]" name="useOlMapLayers - util should return valid VectorLayer instance [2]" time="0.009">
+    <testcase classname="getDefaultSearchTab for [ &apos;o2&apos; ] should return o2" name="getDefaultSearchTab for [ &apos;o2&apos; ] should return o2" time="0.001">
     </testcase>
-    <testcase classname="useOlMapLayers - util should return valid VectorLayer instance [3]" name="useOlMapLayers - util should return valid VectorLayer instance [3]" time="0.006">
+    <testcase classname="getDefaultSearchTab for [ &apos;&apos; ] should return " name="getDefaultSearchTab for [ &apos;&apos; ] should return " time="0">
     </testcase>
   </testsuite>
-  <testsuite name="useOlMap - util" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:25" time="0.455" tests="2">
-    <testcase classname="useOlMap - util when initializing should set map instance" name="useOlMap - util when initializing should set map instance" time="0.033">
+  <testsuite name="rgbToHex - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.123" tests="2">
+    <testcase classname="rgbToHex - util should convert RGB values to hex format" name="rgbToHex - util should convert RGB values to hex format" time="0.001">
     </testcase>
-    <testcase classname="useOlMap - util when initializing should render content inside the target element" name="useOlMap - util when initializing should render content inside the target element" time="0.006">
+    <testcase classname="rgbToHex - util should handle invalid input values" name="rgbToHex - util should handle invalid input values" time="0.004">
     </testcase>
   </testsuite>
-  <testsuite name="MapViewer - component" errors="0" failures="0" skipped="0" timestamp="2024-01-03T15:35:25" time="0.482" tests="2">
-    <testcase classname="MapViewer - component should render component container" name="MapViewer - component should render component container" time="0.045">
+  <testsuite name="boundNumber - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.103" tests="3">
+    <testcase classname="boundNumber - util should return valid bounded number | v = 1, minMax = (0, 2), final = 1" name="boundNumber - util should return valid bounded number | v = 1, minMax = (0, 2), final = 1" time="0.001">
+    </testcase>
+    <testcase classname="boundNumber - util should return valid bounded number | v = 1, minMax = (2, 2), final = 2" name="boundNumber - util should return valid bounded number | v = 1, minMax = (2, 2), final = 2" time="0">
+    </testcase>
+    <testcase classname="boundNumber - util should return valid bounded number | v = 2, minMax = (0, 1), final = 1" name="boundNumber - util should return valid bounded number | v = 2, minMax = (0, 1), final = 1" time="0">
     </testcase>
-    <testcase classname="MapViewer - component should render openlayers map inside the component" name="MapViewer - component should render openlayers map inside the component" time="0.008">
+  </testsuite>
+  <testsuite name="getTruthyObjectOrUndefined - util" errors="0" failures="0" skipped="0" timestamp="2024-01-12T14:39:48" time="0.095" tests="4">
+    <testcase classname="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is truthy" name="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is truthy" time="0.001">
+    </testcase>
+    <testcase classname="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is empty" name="getTruthyObjectOrUndefined - util shoud return a truthy object if the object is empty" time="0">
+    </testcase>
+    <testcase classname="getTruthyObjectOrUndefined - util shoud return undefined if the object is partially truthy" name="getTruthyObjectOrUndefined - util shoud return undefined if the object is partially truthy" time="0.001">
+    </testcase>
+    <testcase classname="getTruthyObjectOrUndefined - util shoud return undefined if the objects&apos;s nested objects is partially truthy" name="getTruthyObjectOrUndefined - util shoud return undefined if the objects&apos;s nested objects is partially truthy" time="0">
     </testcase>
   </testsuite>
 </testsuites>
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 815105c02df0818adc2c668a6afc742796eff297..4aad8440554ebbab3ac260423e29db2eb4097bbe 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21036,8 +21036,7 @@
     "lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
     "lodash.camelcase": {
       "version": "4.3.0",
diff --git a/package.json b/package.json
index 8a754dc0eed77ccbde955e6e3a335e05258a463e..4cf34d33a72916303aa6cf834ab8b7e4f1e2a1ba 100644
--- a/package.json
+++ b/package.json
@@ -14,8 +14,8 @@
     "check-types": "tsc --pretty --noEmit",
     "prepare": "husky install",
     "postinstall": "husky install",
-    "test": "jest --config ./jest.config.ts --transformIgnorePatterns 'node_modules/(?!@toolz/allow-react)/'",
-    "test:watch": "jest --watch --config ./jest.config.ts --transformIgnorePatterns 'node_modules/(?!(ol|geotiff|quick-lru|.*\\.mjs$))'",
+    "test": "jest --config ./jest.config.ts --transformIgnorePatterns 'node_modules/(?!(ol|geotiff|quick-lru|color-space|color-rgba|color-parse|.*\\.mjs$))'",
+    "test:watch": "jest --watch --config ./jest.config.ts --transformIgnorePatterns 'node_modules/(?!(ol|geotiff|quick-lru|color-space|color-rgba|color-parse|.*\\.mjs$))'",
     "test:ci": "jest --config ./jest.config.ts --collectCoverage --coverageDirectory=\"./coverage\" --ci --reporters=default --reporters=jest-junit --watchAll=false --passWithNoTests --transformIgnorePatterns 'node_modules/(?!(ol|geotiff|quick-lru|color-space|color-rgba|color-parse|.*\\.mjs$))'",
     "test:coverage": "jest --watchAll --coverage --config ./jest.config.ts --transformIgnorePatterns 'node_modules/(?!(ol|geotiff|quick-lru|.*\\.mjs$))'",
     "test:coveragee": "jest --coverage --transformIgnorePatterns 'node_modules/(?!(ol|geotiff|quick-lru|.*\\.mjs$))'",
diff --git a/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.test.tsx b/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.test.tsx
index 4b7ee0e1d1ea8db5dbd3ff8d4eceb72f6f29b775..4925b9c9b892ab79626a1f0832aeb5f31c6c6fca 100644
--- a/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.test.tsx
+++ b/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.test.tsx
@@ -65,7 +65,12 @@ describe('SearchBar - component', () => {
       query: { searchValue: 'aspirin;nadh' },
     });
     renderComponent();
+
+    const input = screen.getByTestId<HTMLInputElement>('search-input');
+
+    expect(input.value).toBe('aspirin;nadh');
   });
+
   it('should change selected search element when user search another', () => {
     const { store } = renderComponent();
     const input = screen.getByTestId<HTMLInputElement>('search-input');
diff --git a/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.tsx b/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.tsx
index 02c20a18c027610cc60e3980107665ab9a0f75ec..ee5d31369ed9062989ef97c07c4d762c1933cb1c 100644
--- a/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.tsx
+++ b/src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.tsx
@@ -8,7 +8,8 @@ import {
 } from '@/redux/search/search.selectors';
 import { getSearchData } from '@/redux/search/search.thunks';
 import Image from 'next/image';
-import { ChangeEvent, KeyboardEvent, useState } from 'react';
+import { ChangeEvent, KeyboardEvent, useCallback, useEffect, useState } from 'react';
+import { useRouter } from 'next/router';
 import { useSelector } from 'react-redux';
 import { getDefaultSearchTab, getSearchValuesArrayAndTrimToSeven } from './SearchBar.utils';
 
@@ -20,6 +21,14 @@ export const SearchBar = (): JSX.Element => {
   const isDrawerOpen = useSelector(isDrawerOpenSelector);
   const isPerfectMatch = useSelector(perfectMatchSelector);
   const dispatch = useAppDispatch();
+  const router = useRouter();
+
+  const updateSearchValueFromQueryParam = useCallback((): void => {
+    const { searchValue: searchValueQueryParam } = router.query;
+    if (typeof searchValueQueryParam === 'string') {
+      setSearchValue(searchValueQueryParam);
+    }
+  }, [router.query]);
 
   const openSearchDrawerIfClosed = (defaultSearchTab: string): void => {
     if (!isDrawerOpen) {
@@ -49,6 +58,10 @@ export const SearchBar = (): JSX.Element => {
     }
   };
 
+  useEffect(() => {
+    updateSearchValueFromQueryParam();
+  }, [updateSearchValueFromQueryParam]);
+
   return (
     <div className="relative" data-testid="search-bar">
       <input
diff --git a/src/components/Map/Drawer/ExportDrawer/Annotations/Annotations.component.test.tsx b/src/components/Map/Drawer/ExportDrawer/Annotations/Annotations.component.test.tsx
deleted file mode 100644
index df05c8e0c5e7fcef43da5d5085d34a3c6ea14f43..0000000000000000000000000000000000000000
--- a/src/components/Map/Drawer/ExportDrawer/Annotations/Annotations.component.test.tsx
+++ /dev/null
@@ -1,119 +0,0 @@
-import { render, screen, waitFor } from '@testing-library/react';
-import {
-  InitialStoreState,
-  getReduxWrapperWithStore,
-} from '@/utils/testing/getReduxWrapperWithStore';
-import { StoreType } from '@/redux/store';
-import { statisticsFixture } from '@/models/fixtures/statisticsFixture';
-import { act } from 'react-dom/test-utils';
-import { Annotations } from './Annotations.component';
-
-const renderComponent = (initialStoreState: InitialStoreState = {}): { store: StoreType } => {
-  const { Wrapper, store } = getReduxWrapperWithStore(initialStoreState);
-
-  return (
-    render(
-      <Wrapper>
-        <Annotations />
-      </Wrapper>,
-    ),
-    {
-      store,
-    }
-  );
-};
-
-describe('Annotations - component', () => {
-  it('should display annotations checkboxes when fetching data is successful', async () => {
-    renderComponent({
-      statistics: {
-        data: {
-          ...statisticsFixture,
-          elementAnnotations: {
-            compartment: 1,
-            pathway: 0,
-          },
-        },
-        loading: 'succeeded',
-        error: {
-          message: '',
-          name: '',
-        },
-      },
-    });
-    const navigationButton = screen.getByTestId('accordion-item-button');
-
-    act(() => {
-      navigationButton.click();
-    });
-
-    expect(screen.getByText('Select annotations')).toBeInTheDocument();
-
-    await waitFor(() => {
-      expect(screen.getByTestId('checkbox-filter')).toBeInTheDocument();
-      expect(screen.getByLabelText('compartment')).toBeInTheDocument();
-      expect(screen.getByLabelText('search-input')).toBeInTheDocument();
-    });
-  });
-  it('should not display annotations checkboxes when fetching data fails', async () => {
-    renderComponent({
-      statistics: {
-        data: undefined,
-        loading: 'failed',
-        error: {
-          message: '',
-          name: '',
-        },
-      },
-    });
-    expect(screen.getByText('Select annotations')).toBeInTheDocument();
-    const navigationButton = screen.getByTestId('accordion-item-button');
-    act(() => {
-      navigationButton.click();
-    });
-
-    expect(screen.queryByTestId('checkbox-filter')).not.toBeInTheDocument();
-  });
-  it('should not display annotations checkboxes when fetched data is empty object', async () => {
-    renderComponent({
-      statistics: {
-        data: {
-          ...statisticsFixture,
-          elementAnnotations: {},
-        },
-        loading: 'failed',
-        error: {
-          message: '',
-          name: '',
-        },
-      },
-    });
-    expect(screen.getByText('Select annotations')).toBeInTheDocument();
-    const navigationButton = screen.getByTestId('accordion-item-button');
-    act(() => {
-      navigationButton.click();
-    });
-
-    expect(screen.queryByTestId('checkbox-filter')).not.toBeInTheDocument();
-  });
-
-  it('should display loading message when fetching data is pending', async () => {
-    renderComponent({
-      statistics: {
-        data: undefined,
-        loading: 'pending',
-        error: {
-          message: '',
-          name: '',
-        },
-      },
-    });
-    expect(screen.getByText('Select annotations')).toBeInTheDocument();
-    const navigationButton = screen.getByTestId('accordion-item-button');
-    act(() => {
-      navigationButton.click();
-    });
-
-    expect(screen.getByText('Loading...')).toBeInTheDocument();
-  });
-});
diff --git a/src/components/Map/Drawer/ExportDrawer/Annotations/Annotations.component.tsx b/src/components/Map/Drawer/ExportDrawer/Annotations/Annotations.component.tsx
deleted file mode 100644
index a68fd3894887e2c5fa30733e4388d8f8f76927eb..0000000000000000000000000000000000000000
--- a/src/components/Map/Drawer/ExportDrawer/Annotations/Annotations.component.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-/* eslint-disable no-magic-numbers */
-import {
-  Accordion,
-  AccordionItem,
-  AccordionItemButton,
-  AccordionItemHeading,
-  AccordionItemPanel,
-} from '@/shared/Accordion';
-import { useAppSelector } from '@/redux/hooks/useAppSelector';
-import {
-  elementAnnotationsSelector,
-  loadingStatisticsSelector,
-} from '@/redux/statistics/statistics.selectors';
-import { CheckboxFilter } from '../CheckboxFilter';
-
-export const Annotations = (): React.ReactNode => {
-  const loadingStatistics = useAppSelector(loadingStatisticsSelector);
-  const elementAnnotations = useAppSelector(elementAnnotationsSelector);
-  const isPending = loadingStatistics === 'pending';
-
-  const mappedElementAnnotations = elementAnnotations
-    ? Object.keys(elementAnnotations)?.map(el => ({ id: el, label: el }))
-    : [];
-
-  return (
-    <Accordion allowZeroExpanded>
-      <AccordionItem>
-        <AccordionItemHeading>
-          <AccordionItemButton>Select annotations</AccordionItemButton>
-        </AccordionItemHeading>
-        <AccordionItemPanel>
-          {isPending && <p>Loading...</p>}
-          {!isPending && mappedElementAnnotations && mappedElementAnnotations.length > 0 && (
-            <CheckboxFilter options={mappedElementAnnotations} />
-          )}
-        </AccordionItemPanel>
-      </AccordionItem>
-    </Accordion>
-  );
-};
diff --git a/src/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.component.tsx b/src/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.component.tsx
index 68dbe9c6ecf1ea715852925c85e2f2d18b3d4ad2..54ac8df4fc0f8634d21a474a3d4cfca07b239434 100644
--- a/src/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.component.tsx
+++ b/src/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.component.tsx
@@ -4,7 +4,7 @@ import React, { useEffect, useState } from 'react';
 import lensIcon from '@/assets/vectors/icons/lens.svg';
 import { twMerge } from 'tailwind-merge';
 
-type CheckboxItem = { id: string; label: string };
+export type CheckboxItem = { id: string; label: string };
 
 type CheckboxFilterProps = {
   options: CheckboxItem[];
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Annotations/index.ts b/src/components/Map/Drawer/ExportDrawer/Elements/Annotations/index.ts
deleted file mode 100644
index 3b82aaf76f1b363c9cc2429bbe05d17938bdac29..0000000000000000000000000000000000000000
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Annotations/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { Annotations } from './Annotations.component';
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.component.tsx b/src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.component.tsx
deleted file mode 100644
index c6d8084fe24299b8f13a6fc07dc1aa6019188646..0000000000000000000000000000000000000000
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.component.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { CheckboxFilter } from '../../CheckboxFilter';
-import { CollapsibleSection } from '../../CollapsibleSection';
-import { COLUMNS } from './Columns.constants';
-
-export const Columns = (): React.ReactNode => (
-  <CollapsibleSection title="Select column">
-    <CheckboxFilter options={COLUMNS} isSearchEnabled={false} />
-  </CollapsibleSection>
-);
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Elements.component.tsx b/src/components/Map/Drawer/ExportDrawer/Elements/Elements.component.tsx
index ffc3bf45e09d8512073f41cfa3b858c6627b5c66..fcf01b6a0c8fd6cae6b847e245f70e3d072508e7 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Elements.component.tsx
+++ b/src/components/Map/Drawer/ExportDrawer/Elements/Elements.component.tsx
@@ -1,31 +1,16 @@
-import { useEffect } from 'react';
-import { useAppSelector } from '@/redux/hooks/useAppSelector';
-import { modelsDataSelector } from '@/redux/models/models.selectors';
-import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
-import { getCompartmentPathways } from '@/redux/compartmentPathways/compartmentPathways.thunks';
-import { Annotations } from '../Annotations';
-import { Types } from './Types';
-import { IncludedCompartmentPathways } from './IncludedCompartmentPathways ';
-import { ExcludedCompartmentPathways } from './ExcludedCompartmentPathways';
-import { Columns } from './Columns';
-import { getModelsIds } from './Elements.utils';
+import { Export } from '../ExportCompound';
 
 export const Elements = (): React.ReactNode => {
-  const models = useAppSelector(modelsDataSelector);
-  const dispatch = useAppDispatch();
-
-  useEffect(() => {
-    const modelsIds = getModelsIds(models);
-    dispatch(getCompartmentPathways(modelsIds));
-  }, [dispatch, models]);
-
   return (
     <div data-testid="elements-tab">
-      <Types />
-      <Columns />
-      <Annotations />
-      <IncludedCompartmentPathways />
-      <ExcludedCompartmentPathways />
+      <Export>
+        <Export.Types />
+        <Export.Columns />
+        <Export.Annotations />
+        <Export.IncludedCompartmentPathways />
+        <Export.ExcludedCompartmentPathways />
+        <Export.DownloadElements />
+      </Export>
     </div>
   );
 };
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.ts b/src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.ts
index 25c681809836f5f8fa2fb66b2d7e5dae79707fe1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.ts
+++ b/src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.ts
@@ -1,42 +0,0 @@
-/* eslint-disable no-magic-numbers */
-import { CompartmentPathwayDetails, MapModel } from '@/types/models';
-
-type AddedNames = { [key: string]: number };
-
-type CheckboxElement = { id: string; label: string };
-
-type CheckboxElements = CheckboxElement[];
-
-export const getCompartmentPathwaysCheckboxElements = (
-  items: CompartmentPathwayDetails[],
-): CheckboxElements => {
-  const addedNames: AddedNames = {};
-
-  const setNameToIdIfUndefined = (item: CompartmentPathwayDetails): void => {
-    if (addedNames[item.name] === undefined) {
-      addedNames[item.name] = item.id;
-    }
-  };
-
-  items.forEach(setNameToIdIfUndefined);
-
-  const parseIdAndLabel = ([name, id]: [name: string, id: number]): CheckboxElement => ({
-    id: id.toString(),
-    label: name,
-  });
-
-  const sortByLabel = (a: CheckboxElement, b: CheckboxElement): number => {
-    if (a.label > b.label) return 1;
-    return -1;
-  };
-
-  const elements = Object.entries(addedNames).map(parseIdAndLabel).sort(sortByLabel);
-
-  return elements;
-};
-
-export const getModelsIds = (models: MapModel[] | undefined): number[] => {
-  if (!models) return [];
-
-  return models.map(model => model.idObject);
-};
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Annotations/Annotations.component.test.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.test.tsx
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Annotations/Annotations.component.test.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.test.tsx
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Annotations/Annotations.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.tsx
similarity index 73%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Annotations/Annotations.component.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.tsx
index f3795e9b9f5c9828957e6691c5427fd42deacd2d..6f7034f871d9034f2a038493d426d6784d552b02 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Annotations/Annotations.component.tsx
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.tsx
@@ -1,13 +1,16 @@
-/* eslint-disable no-magic-numbers */
+import { useContext } from 'react';
 import { useAppSelector } from '@/redux/hooks/useAppSelector';
 import {
   elementAnnotationsSelector,
   loadingStatisticsSelector,
 } from '@/redux/statistics/statistics.selectors';
+import { ZERO } from '@/constants/common';
 import { CheckboxFilter } from '../../CheckboxFilter';
 import { CollapsibleSection } from '../../CollapsibleSection';
+import { ExportContext } from '../ExportCompound.context';
 
 export const Annotations = (): React.ReactNode => {
+  const { setAnnotations } = useContext(ExportContext);
   const loadingStatistics = useAppSelector(loadingStatisticsSelector);
   const elementAnnotations = useAppSelector(elementAnnotationsSelector);
   const isPending = loadingStatistics === 'pending';
@@ -19,8 +22,8 @@ export const Annotations = (): React.ReactNode => {
   return (
     <CollapsibleSection title="Select annotations">
       {isPending && <p>Loading...</p>}
-      {!isPending && mappedElementAnnotations && mappedElementAnnotations.length > 0 && (
-        <CheckboxFilter options={mappedElementAnnotations} />
+      {!isPending && mappedElementAnnotations && mappedElementAnnotations.length > ZERO && (
+        <CheckboxFilter options={mappedElementAnnotations} onCheckedChange={setAnnotations} />
       )}
     </CollapsibleSection>
   );
diff --git a/src/components/Map/Drawer/ExportDrawer/Annotations/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/index.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Annotations/index.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/index.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.component.test.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.component.test.tsx
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.component.test.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.component.test.tsx
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.component.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..954a4c60a4354f675d4c7bab265f45d69c384039
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.component.tsx
@@ -0,0 +1,15 @@
+import { useContext } from 'react';
+import { CheckboxFilter } from '../../CheckboxFilter';
+import { CollapsibleSection } from '../../CollapsibleSection';
+import { COLUMNS } from './Columns.constants';
+import { ExportContext } from '../ExportCompound.context';
+
+export const Columns = (): React.ReactNode => {
+  const { setColumns } = useContext(ExportContext);
+
+  return (
+    <CollapsibleSection title="Select column">
+      <CheckboxFilter options={COLUMNS} isSearchEnabled={false} onCheckedChange={setColumns} />
+    </CollapsibleSection>
+  );
+};
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.constants.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.constants.tsx
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Columns/Columns.constants.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/Columns.constants.tsx
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Columns/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/index.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Columns/index.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Columns/index.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/DownloadElements.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/DownloadElements.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..53276caa74a5bd4b0851f3b189df50e79a2a53f3
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/DownloadElements.tsx
@@ -0,0 +1,13 @@
+import { useContext } from 'react';
+import { Button } from '@/shared/Button';
+import { ExportContext } from '../ExportCompound.context';
+
+export const DownloadElements = (): React.ReactNode => {
+  const { handleDownloadElements } = useContext(ExportContext);
+
+  return (
+    <div className="mt-6">
+      <Button onClick={handleDownloadElements}>Download</Button>
+    </div>
+  );
+};
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/DownloadNetwork.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/DownloadNetwork.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..fbe769f0877561ab755049749e12577e13c1b005
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/DownloadNetwork.tsx
@@ -0,0 +1,13 @@
+import { useContext } from 'react';
+import { Button } from '@/shared/Button';
+import { ExportContext } from '../ExportCompound.context';
+
+export const DownloadElements = (): React.ReactNode => {
+  const { handleDownloadNetwork } = useContext(ExportContext);
+
+  return (
+    <div className="mt-6">
+      <Button onClick={handleDownloadNetwork}>Download</Button>
+    </div>
+  );
+};
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.test.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.test.tsx
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.test.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.test.tsx
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx
similarity index 64%
rename from src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx
index 73e95759251ec96571f7f7d88eb84dcccf3b6389..a1de0816bef5e657fee1ee41ca4ed3f0937d0160 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx
@@ -1,24 +1,32 @@
-/* eslint-disable no-magic-numbers */
+import { useContext } from 'react';
 import { useAppSelector } from '@/redux/hooks/useAppSelector';
 import {
   compartmentPathwaysDataSelector,
   loadingCompartmentPathwaysSelector,
 } from '@/redux/compartmentPathways/compartmentPathways.selectors';
+import { ZERO } from '@/constants/common';
 import { CheckboxFilter } from '../../CheckboxFilter';
 import { CollapsibleSection } from '../../CollapsibleSection';
-import { getCompartmentPathwaysCheckboxElements } from '../Elements.utils';
+import { ExportContext } from '../ExportCompound.context';
+import { getCompartmentPathwaysCheckboxElements } from '../utils/getCompartmentPathwaysCheckboxElements';
 
 export const ExcludedCompartmentPathways = (): React.ReactNode => {
+  const { setExcludedCompartmentPathways } = useContext(ExportContext);
   const loadingCompartmentPathways = useAppSelector(loadingCompartmentPathwaysSelector);
   const isPending = loadingCompartmentPathways === 'pending';
   const compartmentPathways = useAppSelector(compartmentPathwaysDataSelector);
   const checkboxElements = getCompartmentPathwaysCheckboxElements(compartmentPathways);
-  const isCheckboxFilterVisible = !isPending && checkboxElements && checkboxElements.length > 0;
+  const isCheckboxFilterVisible = !isPending && checkboxElements && checkboxElements.length > ZERO;
 
   return (
     <CollapsibleSection title="Select excluded compartment / pathways">
       {isPending && <p>Loading...</p>}
-      {isCheckboxFilterVisible && <CheckboxFilter options={checkboxElements} />}
+      {isCheckboxFilterVisible && (
+        <CheckboxFilter
+          options={checkboxElements}
+          onCheckedChange={setExcludedCompartmentPathways}
+        />
+      )}
     </CollapsibleSection>
   );
 };
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/index.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/ExcludedCompartmentPathways/index.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/index.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.component.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..15f4767e22864d74979a577f62314f5af2d828de
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.component.tsx
@@ -0,0 +1,74 @@
+import { ReactNode, useCallback, useMemo, useState } from 'react';
+import { useAppSelector } from '@/redux/hooks/useAppSelector';
+import { modelsIdsSelector } from '@/redux/models/models.selectors';
+import { CheckboxItem } from '../CheckboxFilter/CheckboxFilter.component';
+import { Types } from './Types';
+import { Columns } from './Columns';
+import { Annotations } from './Annotations';
+import { ExcludedCompartmentPathways } from './ExcludedCompartmentPathways';
+import { IncludedCompartmentPathways } from './IncludedCompartmentPathways ';
+import { DownloadElements } from './DownloadElements/DownloadElements';
+import { ExportContext } from './ExportCompound.context';
+import { getNetworkDownloadBodyRequest } from './utils/getNetworkBodyRequest';
+import { getDownloadElementsBodyRequest } from './utils/getDownloadElementsBodyRequest';
+
+type ExportProps = {
+  children: ReactNode;
+};
+
+export const Export = ({ children }: ExportProps): JSX.Element => {
+  const [types, setTypes] = useState<CheckboxItem[]>([]);
+  const [columns, setColumns] = useState<CheckboxItem[]>([]);
+  const [annotations, setAnnotations] = useState<CheckboxItem[]>([]);
+  const modelIds = useAppSelector(modelsIdsSelector);
+  const [includedCompartmentPathways, setIncludedCompartmentPathways] = useState<CheckboxItem[]>(
+    [],
+  );
+  const [excludedCompartmentPathways, setExcludedCompartmentPathways] = useState<CheckboxItem[]>(
+    [],
+  );
+
+  const handleDownloadElements = useCallback(() => {
+    getDownloadElementsBodyRequest({
+      types,
+      columns,
+      modelIds,
+      annotations,
+      includedCompartmentPathways,
+      excludedCompartmentPathways,
+    });
+  }, [
+    types,
+    columns,
+    modelIds,
+    annotations,
+    includedCompartmentPathways,
+    excludedCompartmentPathways,
+  ]);
+
+  const handleDownloadNetwork = useCallback(() => {
+    getNetworkDownloadBodyRequest();
+  }, []);
+
+  const globalContextValue = useMemo(
+    () => ({
+      setTypes,
+      setColumns,
+      setAnnotations,
+      setIncludedCompartmentPathways,
+      setExcludedCompartmentPathways,
+      handleDownloadElements,
+      handleDownloadNetwork,
+    }),
+    [handleDownloadElements, handleDownloadNetwork],
+  );
+
+  return <ExportContext.Provider value={globalContextValue}>{children}</ExportContext.Provider>;
+};
+
+Export.Types = Types;
+Export.Columns = Columns;
+Export.Annotations = Annotations;
+Export.IncludedCompartmentPathways = IncludedCompartmentPathways;
+Export.ExcludedCompartmentPathways = ExcludedCompartmentPathways;
+Export.DownloadElements = DownloadElements;
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.context.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.context.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3490162eb61f13c9ddbf4f2a13d732693e98d003
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.context.ts
@@ -0,0 +1,22 @@
+import { createContext } from 'react';
+import { CheckboxItem } from '../CheckboxFilter/CheckboxFilter.component';
+
+export type ExportContextType = {
+  setTypes: React.Dispatch<React.SetStateAction<CheckboxItem[]>>;
+  setColumns: React.Dispatch<React.SetStateAction<CheckboxItem[]>>;
+  setAnnotations: React.Dispatch<React.SetStateAction<CheckboxItem[]>>;
+  setIncludedCompartmentPathways: React.Dispatch<React.SetStateAction<CheckboxItem[]>>;
+  setExcludedCompartmentPathways: React.Dispatch<React.SetStateAction<CheckboxItem[]>>;
+  handleDownloadElements: () => void;
+  handleDownloadNetwork: () => void;
+};
+
+export const ExportContext = createContext<ExportContextType>({
+  setTypes: () => {},
+  setColumns: () => {},
+  setAnnotations: () => {},
+  setIncludedCompartmentPathways: () => {},
+  setExcludedCompartmentPathways: () => {},
+  handleDownloadElements: () => {},
+  handleDownloadNetwork: () => {},
+});
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /IncludedCompartmentPathways.component.test.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /IncludedCompartmentPathways.component.test.tsx
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /IncludedCompartmentPathways.component.test.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /IncludedCompartmentPathways.component.test.tsx
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /IncludedCompartmentPathways.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /IncludedCompartmentPathways.component.tsx
similarity index 67%
rename from src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /IncludedCompartmentPathways.component.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /IncludedCompartmentPathways.component.tsx
index 77a64aed273ac294c018bc23197b1a1cd4036b0a..39164e58904ff7d2667b9573c82ad1d5a38e58f1 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /IncludedCompartmentPathways.component.tsx	
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /IncludedCompartmentPathways.component.tsx	
@@ -1,14 +1,17 @@
-/* eslint-disable no-magic-numbers */
+import { useContext } from 'react';
 import {
   compartmentPathwaysDataSelector,
   loadingCompartmentPathwaysSelector,
 } from '@/redux/compartmentPathways/compartmentPathways.selectors';
 import { useAppSelector } from '@/redux/hooks/useAppSelector';
+import { ZERO } from '@/constants/common';
 import { CheckboxFilter } from '../../CheckboxFilter';
 import { CollapsibleSection } from '../../CollapsibleSection';
-import { getCompartmentPathwaysCheckboxElements } from '../Elements.utils';
+import { ExportContext } from '../ExportCompound.context';
+import { getCompartmentPathwaysCheckboxElements } from '../utils/getCompartmentPathwaysCheckboxElements';
 
 export const IncludedCompartmentPathways = (): React.ReactNode => {
+  const { setIncludedCompartmentPathways } = useContext(ExportContext);
   const loadingCompartmentPathways = useAppSelector(loadingCompartmentPathwaysSelector);
   const isPending = loadingCompartmentPathways === 'pending';
   const compartmentPathways = useAppSelector(compartmentPathwaysDataSelector);
@@ -17,8 +20,11 @@ export const IncludedCompartmentPathways = (): React.ReactNode => {
   return (
     <CollapsibleSection title="Select included compartment / pathways">
       {isPending && <p>Loading...</p>}
-      {!isPending && checkboxElements && checkboxElements.length > 0 && (
-        <CheckboxFilter options={checkboxElements} />
+      {!isPending && checkboxElements && checkboxElements.length > ZERO && (
+        <CheckboxFilter
+          options={checkboxElements}
+          onCheckedChange={setIncludedCompartmentPathways}
+        />
       )}
     </CollapsibleSection>
   );
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /index.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/IncludedCompartmentPathways /index.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways /index.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.component.test.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.component.test.tsx
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.component.test.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.component.test.tsx
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.component.tsx
similarity index 64%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.component.tsx
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.component.tsx
index 0c37bdf6907d676eeaed5182c5002710327ff13c..9398790028d9a1e60cbaeee9bf85014523839570 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.component.tsx
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.component.tsx
@@ -1,16 +1,25 @@
+import { useContext } from 'react';
 import { elementTypesSelector } from '@/redux/configuration/configuration.selectors';
 import { useAppSelector } from '@/redux/hooks/useAppSelector';
 import { getCheckboxElements } from './Types.utils';
 import { CheckboxFilter } from '../../CheckboxFilter';
 import { CollapsibleSection } from '../../CollapsibleSection';
+import { ExportContext } from '../ExportCompound.context';
 
 export const Types = (): React.ReactNode => {
+  const { setTypes } = useContext(ExportContext);
   const elementTypes = useAppSelector(elementTypesSelector);
   const checkboxElements = getCheckboxElements(elementTypes);
 
   return (
     <CollapsibleSection title="Select types">
-      {checkboxElements && <CheckboxFilter options={checkboxElements} isSearchEnabled={false} />}
+      {checkboxElements && (
+        <CheckboxFilter
+          options={checkboxElements}
+          isSearchEnabled={false}
+          onCheckedChange={setTypes}
+        />
+      )}
     </CollapsibleSection>
   );
 };
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.utils.test.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.utils.test.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.utils.test.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.utils.test.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.utils.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.utils.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Types/Types.utils.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/Types.utils.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Types/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/index.ts
similarity index 100%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Types/index.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/Types/index.ts
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/index.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cc9ebec49c0de9036d71209be308feaecd41229c
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/index.ts
@@ -0,0 +1 @@
+export { Export } from './ExportCompound.component';
diff --git a/src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.test.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.test.ts
similarity index 74%
rename from src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.test.ts
rename to src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.test.ts
index 76d374425476c156e0d2c9d8b5c4a8e2725ce4ad..d0a7806ce4d62ea5210b1249087b97345affa819 100644
--- a/src/components/Map/Drawer/ExportDrawer/Elements/Elements.utils.test.ts
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.test.ts
@@ -1,7 +1,6 @@
 /* eslint-disable no-magic-numbers */
 import { CompartmentPathwayDetails } from '@/types/models';
-import { modelsFixture } from '@/models/fixtures/modelsFixture';
-import { getCompartmentPathwaysCheckboxElements, getModelsIds } from './Elements.utils';
+import { getCompartmentPathwaysCheckboxElements } from './getCompartmentPathwaysCheckboxElements';
 
 describe('getCompartmentPathwaysCheckboxElements', () => {
   it('should return an empty array when given an empty items array', () => {
@@ -45,17 +44,3 @@ describe('getCompartmentPathwaysCheckboxElements', () => {
     ]);
   });
 });
-
-const MODELS_IDS = modelsFixture.map(item => item.idObject);
-
-describe('getModelsIds', () => {
-  it('should return an empty array if models are not provided', () => {
-    const result = getModelsIds(undefined);
-    expect(result).toEqual([]);
-  });
-
-  it('should return an array of model IDs', () => {
-    const result = getModelsIds(modelsFixture);
-    expect(result).toEqual(MODELS_IDS);
-  });
-});
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e0f4bf81a14c4fece41eff986e4b3685b2506f16
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.ts
@@ -0,0 +1,36 @@
+/* eslint-disable no-magic-numbers */
+import { CompartmentPathwayDetails } from '@/types/models';
+
+type AddedNames = { [key: string]: number };
+
+type CheckboxElement = { id: string; label: string };
+
+type CheckboxElements = CheckboxElement[];
+
+export const getCompartmentPathwaysCheckboxElements = (
+  items: CompartmentPathwayDetails[],
+): CheckboxElements => {
+  const addedNames: AddedNames = {};
+
+  const setNameToIdIfUndefined = (item: CompartmentPathwayDetails): void => {
+    if (addedNames[item.name] === undefined) {
+      addedNames[item.name] = item.id;
+    }
+  };
+
+  items.forEach(setNameToIdIfUndefined);
+
+  const parseIdAndLabel = ([name, id]: [name: string, id: number]): CheckboxElement => ({
+    id: id.toString(),
+    label: name,
+  });
+
+  const sortByLabel = (a: CheckboxElement, b: CheckboxElement): number => {
+    if (a.label > b.label) return 1;
+    return -1;
+  };
+
+  const elements = Object.entries(addedNames).map(parseIdAndLabel).sort(sortByLabel);
+
+  return elements;
+};
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.test.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..68d1e8f0ae0858439f4ed21fc681eef713d921b1
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.test.ts
@@ -0,0 +1,47 @@
+import { getDownloadElementsBodyRequest } from './getDownloadElementsBodyRequest';
+
+describe('getDownloadElementsBodyRequest', () => {
+  it('should return the correct DownloadBodyRequest object', () => {
+    const types = [
+      { id: '1', label: 'Type 1' },
+      { id: '2', label: 'Type 2' },
+    ];
+    const columns = [
+      { id: '1', label: 'Column 1' },
+      { id: '2', label: 'Column 2' },
+    ];
+    // eslint-disable-next-line no-magic-numbers
+    const modelIds = [1, 2, 3];
+    const annotations = [
+      { id: '1', label: 'Annotation 1' },
+      { id: '2', label: 'Annotation 2' },
+    ];
+    const includedCompartmentPathways = [
+      { id: '1', label: 'Compartment 1' },
+      { id: '2', label: 'Compartment 2' },
+    ];
+    const excludedCompartmentPathways = [
+      { id: '1', label: 'Compartment 3' },
+      { id: '2', label: 'Compartment 4' },
+    ];
+
+    const result = getDownloadElementsBodyRequest({
+      types,
+      columns,
+      modelIds,
+      annotations,
+      includedCompartmentPathways,
+      excludedCompartmentPathways,
+    });
+
+    expect(result).toEqual({
+      types: ['Type 1', 'Type 2'],
+      columns: ['Column 1', 'Column 2'],
+      // eslint-disable-next-line no-magic-numbers
+      submaps: [1, 2, 3],
+      annotations: ['Annotation 1', 'Annotation 2'],
+      includedCompartmentIds: ['Compartment 1', 'Compartment 2'],
+      excludedCompartmentIds: ['Compartment 3', 'Compartment 4'],
+    });
+  });
+});
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1a262a95703df1efc1e0baba873acf11cc50e13a
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.ts
@@ -0,0 +1,35 @@
+import { CheckboxItem } from '../../CheckboxFilter/CheckboxFilter.component';
+
+type DownloadBodyRequest = {
+  types: string[];
+  columns: string[];
+  submaps: number[];
+  annotations: string[];
+  includedCompartmentIds: string[];
+  excludedCompartmentIds: string[];
+};
+
+type GetDownloadBodyRequestProps = {
+  types: CheckboxItem[];
+  columns: CheckboxItem[];
+  modelIds: number[];
+  annotations: CheckboxItem[];
+  includedCompartmentPathways: CheckboxItem[];
+  excludedCompartmentPathways: CheckboxItem[];
+};
+
+export const getDownloadElementsBodyRequest = ({
+  types,
+  columns,
+  modelIds,
+  annotations,
+  includedCompartmentPathways,
+  excludedCompartmentPathways,
+}: GetDownloadBodyRequestProps): DownloadBodyRequest => ({
+  types: types.map(type => type.label),
+  columns: columns.map(column => column.label),
+  submaps: modelIds,
+  annotations: annotations.map(annotation => annotation.label),
+  includedCompartmentIds: includedCompartmentPathways.map(compartment => compartment.label),
+  excludedCompartmentIds: excludedCompartmentPathways.map(compartment => compartment.label),
+});
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.test.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1aa3d73b227fb3f5ba7ce6a3fd69e70b161ac58e
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.test.ts
@@ -0,0 +1,8 @@
+import { getNetworkDownloadBodyRequest } from './getNetworkBodyRequest';
+
+describe('getNetworkDownloadBodyRequest', () => {
+  it('should return an empty object', () => {
+    const result = getNetworkDownloadBodyRequest();
+    expect(result).toEqual({});
+  });
+});
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.ts b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6613aea72d35cc71d858350896d3d8ea79121e73
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.ts
@@ -0,0 +1 @@
+export const getNetworkDownloadBodyRequest = (): object => ({});
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.tsx b/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.tsx
index 068348d1f068bbe22bd14e16b430a1948fee3453..1d98f663a79aae7c2dbe4b2e954c58c32536794f 100644
--- a/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.tsx
+++ b/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.tsx
@@ -1,23 +1,36 @@
+import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
+import { useAppSelector } from '@/redux/hooks/useAppSelector';
+import { modelsIdsSelector } from '@/redux/models/models.selectors';
 import { DrawerHeading } from '@/shared/DrawerHeading';
-import { useState } from 'react';
+import { getCompartmentPathways } from '@/redux/compartmentPathways/compartmentPathways.thunks';
+import { useEffect, useState } from 'react';
 import { TabNavigator } from './TabNavigator';
 import { Elements } from './Elements';
 import { TAB_NAMES } from './TabNavigator/TabNavigator.constants';
 import { TabNames } from './TabNavigator/TabNavigator.types';
+import { Network } from './Network';
 
 export const ExportDrawer = (): React.ReactNode => {
+  const modelsIds = useAppSelector(modelsIdsSelector);
+  const dispatch = useAppDispatch();
   const [activeTab, setActiveTab] = useState<TabNames>(TAB_NAMES.ELEMENTS);
 
   const handleTabChange = (tabName: TabNames): void => {
     setActiveTab(tabName);
   };
 
+  useEffect(() => {
+    dispatch(getCompartmentPathways(modelsIds));
+  }, [dispatch, modelsIds]);
+
   return (
     <div data-testid="export-drawer" className="h-full max-h-full">
       <DrawerHeading title="Export" />
       <div className="h-[calc(100%-93px)] max-h-[calc(100%-93px)] overflow-y-auto px-6">
         <TabNavigator activeTab={activeTab} onTabChange={handleTabChange} />
         {activeTab === TAB_NAMES.ELEMENTS && <Elements />}
+        {activeTab === TAB_NAMES.NETWORK && <Network />}
+        {activeTab === TAB_NAMES.GRAPHICS && <div>Graphics</div>}
       </div>
     </div>
   );
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils.tsx b/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..20e5e8711bc36f2a2c962bf1a599296c59e6f408
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils.tsx
@@ -0,0 +1,7 @@
+import { MapModel } from '@/types/models';
+
+export const getModelsIds = (models: MapModel[] | undefined): number[] => {
+  if (!models) return [];
+
+  return models.map(model => model.idObject);
+};
diff --git a/src/components/Map/Drawer/ExportDrawer/ExportDrawer.utils.test.ts b/src/components/Map/Drawer/ExportDrawer/ExportDrawer.utils.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ee1aa52f9e3194b17cbdfddc9b963357211afc37
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/ExportDrawer.utils.test.ts
@@ -0,0 +1,16 @@
+import { modelsFixture } from '@/models/fixtures/modelsFixture';
+import { getModelsIds } from './ExportDrawer.component.utils';
+
+const MODELS_IDS = modelsFixture.map(item => item.idObject);
+
+describe('getModelsIds', () => {
+  it('should return an empty array if models are not provided', () => {
+    const result = getModelsIds(undefined);
+    expect(result).toEqual([]);
+  });
+
+  it('should return an array of model IDs', () => {
+    const result = getModelsIds(modelsFixture);
+    expect(result).toEqual(MODELS_IDS);
+  });
+});
diff --git a/src/components/Map/Drawer/ExportDrawer/Network/Network.component.tsx b/src/components/Map/Drawer/ExportDrawer/Network/Network.component.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..1438a0851f3581298f226532ff874bf44821a1b6
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/Network/Network.component.tsx
@@ -0,0 +1,16 @@
+import { Export } from '../ExportCompound';
+
+export const Network = (): React.ReactNode => {
+  return (
+    <div data-testid="export-tab">
+      <Export>
+        <Export.Types />
+        <Export.Columns />
+        <Export.Annotations />
+        <Export.IncludedCompartmentPathways />
+        <Export.ExcludedCompartmentPathways />
+        <Export.DownloadElements />
+      </Export>
+    </div>
+  );
+};
diff --git a/src/components/Map/Drawer/ExportDrawer/Network/index.ts b/src/components/Map/Drawer/ExportDrawer/Network/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3d64c4bfc39b924fccc516b5138431f7034a53ba
--- /dev/null
+++ b/src/components/Map/Drawer/ExportDrawer/Network/index.ts
@@ -0,0 +1 @@
+export { Network } from './Network.component';
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.test.tsx b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.test.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..a30986f5e018ce2af17e0dfd92dcf99a029c0bad
--- /dev/null
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.test.tsx
@@ -0,0 +1,149 @@
+import { FIRST_ARRAY_ELEMENT } from '@/constants/common';
+import { backgroundsFixture } from '@/models/fixtures/backgroundsFixture';
+import { configurationFixture } from '@/models/fixtures/configurationFixture';
+import { modelsFixture } from '@/models/fixtures/modelsFixture';
+import {
+  CONFIGURATION_FORMATS_MOCK,
+  CONFIGURATION_FORMATS_TYPES_MOCK,
+} from '@/models/mocks/configurationFormatsMock';
+import { INITIAL_STORE_STATE_MOCK } from '@/redux/root/root.fixtures';
+import { RootState, StoreType } from '@/redux/store';
+import {
+  InitialStoreState,
+  getReduxWrapperWithStore,
+} from '@/utils/testing/getReduxWrapperWithStore';
+import { act, render, renderHook, screen } from '@testing-library/react';
+import { DownloadSubmap } from './DownloadSubmap.component';
+import { GetSubmapDownloadUrl, useGetSubmapDownloadUrl } from './utils/useGetSubmapDownloadUrl';
+
+const VALID_MODEL_ID = 5052;
+const VALID_BACKGROUND_ID = 53;
+const VALID_MAX_ZOOM = 9;
+
+const getState = (): RootState => ({
+  ...INITIAL_STORE_STATE_MOCK,
+  map: {
+    ...INITIAL_STORE_STATE_MOCK.map,
+    data: {
+      ...INITIAL_STORE_STATE_MOCK.map.data,
+      modelId: VALID_MODEL_ID,
+      backgroundId: VALID_BACKGROUND_ID,
+      size: {
+        ...INITIAL_STORE_STATE_MOCK.map.data.size,
+        maxZoom: VALID_MAX_ZOOM,
+      },
+    },
+  },
+  models: {
+    ...INITIAL_STORE_STATE_MOCK.models,
+    data: [
+      {
+        ...modelsFixture[FIRST_ARRAY_ELEMENT],
+        idObject: VALID_MODEL_ID,
+      },
+    ],
+  },
+  backgrounds: {
+    ...INITIAL_STORE_STATE_MOCK.backgrounds,
+    data: [
+      {
+        ...backgroundsFixture[FIRST_ARRAY_ELEMENT],
+        id: VALID_BACKGROUND_ID,
+      },
+    ],
+  },
+  configuration: {
+    ...INITIAL_STORE_STATE_MOCK.configuration,
+    main: {
+      ...INITIAL_STORE_STATE_MOCK.configuration.main,
+      data: {
+        ...configurationFixture,
+        modelFormats: CONFIGURATION_FORMATS_MOCK,
+      },
+    },
+  },
+});
+
+const toggleListByButtonClick = (): void => {
+  const button = screen.getByTestId('download-submap-button');
+  act(() => {
+    button.click();
+  });
+};
+
+const getUtilGetSubmapDownloadUrl = (): GetSubmapDownloadUrl => {
+  const { Wrapper } = getReduxWrapperWithStore(getState());
+
+  const {
+    result: { current: getSubmapDownloadUrl },
+  } = renderHook(() => useGetSubmapDownloadUrl(), { wrapper: Wrapper });
+
+  return getSubmapDownloadUrl;
+};
+
+const renderComponent = (initialStoreState: InitialStoreState = {}): { store: StoreType } => {
+  const { Wrapper, store } = getReduxWrapperWithStore(initialStoreState);
+
+  return (
+    render(
+      <Wrapper>
+        <DownloadSubmap />
+      </Wrapper>,
+    ),
+    {
+      store,
+    }
+  );
+};
+
+describe('DownloadSubmap - component', () => {
+  it('should render download button', () => {
+    renderComponent(getState());
+    const button = screen.getByTestId('download-submap-button');
+    expect(button).toBeInTheDocument();
+  });
+
+  it('should open list on button click', () => {
+    renderComponent(getState());
+    toggleListByButtonClick();
+
+    const list = screen.getByTestId('download-submap-list');
+    expect(list).not.toHaveClass('hidden');
+  });
+
+  it('should close list on button click twice', () => {
+    renderComponent(getState());
+    const list = screen.getByTestId('download-submap-list');
+
+    // list should be opened
+    toggleListByButtonClick();
+    expect(list).not.toHaveClass('hidden');
+
+    // list should be closed
+    toggleListByButtonClick();
+    expect(list).toHaveClass('hidden');
+  });
+
+  it('should not show list when closed (default state)', () => {
+    renderComponent(getState());
+    const list = screen.getByTestId('download-submap-list');
+    expect(list).toHaveClass('hidden');
+  });
+
+  it('should render list elements with href and names when opened', () => {
+    const getSubmapDownloadUrl = getUtilGetSubmapDownloadUrl();
+    renderComponent(getState());
+    const list = screen.getByTestId('download-submap-list');
+
+    const validHrefs = CONFIGURATION_FORMATS_MOCK.map(({ handler }) =>
+      getSubmapDownloadUrl({ handler }),
+    );
+    const validNames = CONFIGURATION_FORMATS_TYPES_MOCK;
+    const allAnchors = [...list.getElementsByTagName('a')];
+
+    allAnchors.forEach(anchor => {
+      expect(validHrefs.includes(anchor.href)).toBeTruthy();
+      expect(validNames.includes(anchor.innerText)).toBeTruthy();
+    });
+  });
+});
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.tsx b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..01587d62f8bbd459f9aff42cd0f7502c1051ec8a
--- /dev/null
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.tsx
@@ -0,0 +1,50 @@
+import { formatsHandlersSelector } from '@/redux/configuration/configuration.selectors';
+import { Button } from '@/shared/Button';
+import { useSelect } from 'downshift';
+import { useSelector } from 'react-redux';
+import { SUBMAP_DOWNLOAD_HANDLERS_NAMES } from './DownloadSubmap.constants';
+import { useGetSubmapDownloadUrl } from './utils/useGetSubmapDownloadUrl';
+
+export const DownloadSubmap = (): JSX.Element => {
+  const formatsHandlers = useSelector(formatsHandlersSelector);
+  const formatsHandlersItems = Object.entries(formatsHandlers);
+  const getSubmapDownloadUrl = useGetSubmapDownloadUrl();
+
+  const { isOpen, getToggleButtonProps, getMenuProps } = useSelect({
+    items: formatsHandlersItems,
+  });
+
+  return (
+    <div className="relative">
+      <Button
+        data-testid="download-submap-button"
+        variantStyles="ghost"
+        className="mr-4"
+        {...getToggleButtonProps()}
+      >
+        Download
+      </Button>
+      <ul
+        data-testid="download-submap-list"
+        className={`absolute left-[-50%] z-10 max-h-80 w-48 overflow-scroll rounded-sm border bg-white p-0 ps-0 ${
+          !isOpen && 'hidden'
+        }`}
+        {...getMenuProps()}
+      >
+        {isOpen &&
+          formatsHandlersItems.map(([formatId, handler]) => (
+            <li key={formatId}>
+              <a
+                className="flex flex-col border-t px-4 py-2 shadow-sm"
+                href={getSubmapDownloadUrl({ handler })}
+                target="_blank"
+                download
+              >
+                <span>{SUBMAP_DOWNLOAD_HANDLERS_NAMES[formatId]}</span>
+              </a>
+            </li>
+          ))}
+      </ul>
+    </div>
+  );
+};
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.constants.ts b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.constants.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5bd478cc6117c4170772519a99f7e0ffe29e74ce
--- /dev/null
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.constants.ts
@@ -0,0 +1,13 @@
+import {
+  CELL_DESIGNER_SBML_HANDLER_NAME_ID,
+  GPML_HANDLER_NAME_ID,
+  SBGN_ML_HANDLER_NAME_ID,
+  SBML_HANDLER_NAME_ID,
+} from '@/redux/configuration/configuration.constants';
+
+export const SUBMAP_DOWNLOAD_HANDLERS_NAMES: Record<string, string> = {
+  [GPML_HANDLER_NAME_ID]: 'GPML',
+  [SBML_HANDLER_NAME_ID]: 'SBML',
+  [CELL_DESIGNER_SBML_HANDLER_NAME_ID]: 'CellDesigner SBML',
+  [SBGN_ML_HANDLER_NAME_ID]: 'SBGN-ML',
+};
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.ts b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..96d65c330502b30451ab503c4fa00e0a409887fa
--- /dev/null
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.ts
@@ -0,0 +1 @@
+export { DownloadSubmap } from './DownloadSubmap.component';
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.test.ts b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c8f335bff701d4fdeef65f9f815dcfe6dbc1fab2
--- /dev/null
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.test.ts
@@ -0,0 +1,117 @@
+import { BASE_API_URL, PROJECT_ID } from '@/constants';
+import { FIRST_ARRAY_ELEMENT } from '@/constants/common';
+import { backgroundsFixture } from '@/models/fixtures/backgroundsFixture';
+import { modelsFixture } from '@/models/fixtures/modelsFixture';
+import { INITIAL_STORE_STATE_MOCK } from '@/redux/root/root.fixtures';
+import { RootState } from '@/redux/store';
+import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore';
+import { renderHook } from '@testing-library/react';
+import { useGetSubmapDownloadUrl } from './useGetSubmapDownloadUrl';
+
+const VALID_HANDLER = 'lcsb.mapviewer.wikipathway.GpmlParser';
+const VALID_MODEL_ID = 5052;
+const VALID_BACKGROUND_ID = 53;
+const VALID_MAX_ZOOM = 9;
+
+const getState = ({
+  modelId,
+  backgroundId,
+  mapSizeMaxZoom,
+}: {
+  modelId: number;
+  backgroundId: number;
+  mapSizeMaxZoom: number;
+}): RootState => ({
+  ...INITIAL_STORE_STATE_MOCK,
+  map: {
+    ...INITIAL_STORE_STATE_MOCK.map,
+    data: {
+      ...INITIAL_STORE_STATE_MOCK.map.data,
+      modelId,
+      backgroundId,
+      size: {
+        ...INITIAL_STORE_STATE_MOCK.map.data.size,
+        maxZoom: mapSizeMaxZoom,
+      },
+    },
+  },
+  models: {
+    ...INITIAL_STORE_STATE_MOCK.models,
+    data: [
+      {
+        ...modelsFixture[FIRST_ARRAY_ELEMENT],
+        idObject: VALID_MODEL_ID,
+      },
+    ],
+  },
+  backgrounds: {
+    ...INITIAL_STORE_STATE_MOCK.backgrounds,
+    data: [
+      {
+        ...backgroundsFixture[FIRST_ARRAY_ELEMENT],
+        id: VALID_BACKGROUND_ID,
+      },
+    ],
+  },
+});
+
+describe('useGetSubmapDownloadUrl - hook', () => {
+  describe('when not all params valid', () => {
+    const cases = [
+      {
+        modelId: 0,
+        backgroundId: VALID_BACKGROUND_ID,
+        mapSizeMaxZoom: VALID_MAX_ZOOM,
+        handler: VALID_HANDLER,
+      },
+      {
+        modelId: VALID_MODEL_ID,
+        backgroundId: 0,
+        mapSizeMaxZoom: VALID_MAX_ZOOM,
+        handler: VALID_HANDLER,
+      },
+      {
+        modelId: VALID_MODEL_ID,
+        backgroundId: VALID_BACKGROUND_ID,
+        mapSizeMaxZoom: 0,
+        handler: VALID_HANDLER,
+      },
+      {
+        modelId: VALID_MODEL_ID,
+        backgroundId: VALID_BACKGROUND_ID,
+        mapSizeMaxZoom: VALID_MAX_ZOOM,
+        handler: '',
+      },
+    ];
+
+    it.each(cases)('should return empty string', ({ handler, ...stateParams }) => {
+      const { Wrapper } = getReduxWrapperWithStore(getState(stateParams));
+
+      const {
+        result: { current: getSubmapDownloadUrl },
+      } = renderHook(() => useGetSubmapDownloadUrl(), { wrapper: Wrapper });
+
+      expect(getSubmapDownloadUrl({ handler })).toBe('');
+    });
+  });
+
+  describe('when all params valid', () => {
+    it('should return valid string', () => {
+      const { Wrapper } = getReduxWrapperWithStore(
+        getState({
+          modelId: VALID_MODEL_ID,
+          backgroundId: VALID_BACKGROUND_ID,
+          mapSizeMaxZoom: VALID_MAX_ZOOM,
+        }),
+      );
+
+      const {
+        result: { current: getSubmapDownloadUrl },
+      } = renderHook(() => useGetSubmapDownloadUrl(), { wrapper: Wrapper });
+
+      expect(getSubmapDownloadUrl({ handler: VALID_HANDLER })).toBe(
+        `${BASE_API_URL}/projects/${PROJECT_ID}/models/5052:downloadModel?backgroundOverlayId=53&handlerClass=lcsb.mapviewer.wikipathway.GpmlParser&zoomLevel=9`,
+      );
+    });
+  });
+});
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.ts b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e003af360c856d2e254ea8f0a1252391c7e6610d
--- /dev/null
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.ts
@@ -0,0 +1,27 @@
+import { BASE_API_URL, PROJECT_ID } from '@/constants';
+import { currentBackgroundSelector } from '@/redux/backgrounds/background.selectors';
+import { mapDataSizeSelector } from '@/redux/map/map.selectors';
+import { currentModelSelector } from '@/redux/models/models.selectors';
+import { useSelector } from 'react-redux';
+
+export type GetSubmapDownloadUrl = ({ handler }: { handler: string }) => string;
+
+export const useGetSubmapDownloadUrl = (): GetSubmapDownloadUrl => {
+  const model = useSelector(currentModelSelector);
+  const background = useSelector(currentBackgroundSelector);
+  const mapSize = useSelector(mapDataSizeSelector);
+
+  const getSubmapDownloadUrl: GetSubmapDownloadUrl = ({ handler }) => {
+    const allParamsValid = [model?.idObject, background?.id, mapSize.maxZoom, handler].reduce(
+      (a, b) => Boolean(a) && Boolean(b),
+      true,
+    );
+    if (!allParamsValid) {
+      return '';
+    }
+
+    return `${BASE_API_URL}/projects/${PROJECT_ID}/models/${model?.idObject}:downloadModel?backgroundOverlayId=${background?.id}&handlerClass=${handler}&zoomLevel=${mapSize.maxZoom}`;
+  };
+
+  return getSubmapDownloadUrl;
+};
diff --git a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/SubmapItem.component.tsx b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/SubmapItem.component.tsx
index e056671a444f93c2d528489ab00c9b5074e8a214..a7a38dfae9cb989d98e2bbb2e8be273f4b8cf0aa 100644
--- a/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/SubmapItem.component.tsx
+++ b/src/components/Map/Drawer/SubmapsDrawer/SubmapItem/SubmapItem.component.tsx
@@ -1,5 +1,5 @@
-import { Button } from '@/shared/Button';
 import { IconButton } from '@/shared/IconButton';
+import { DownloadSubmap } from './DownloadSubmap';
 
 interface SubmapItemProps {
   modelName: string;
@@ -10,9 +10,7 @@ export const SubmpamItem = ({ modelName, onOpenClick }: SubmapItemProps): JSX.El
   <div className="flex flex-row flex-nowrap items-center justify-between border-b py-6">
     {modelName}
     <div className="flex flex-row flex-nowrap items-center">
-      <Button variantStyles="ghost" className="mr-4">
-        Download
-      </Button>
+      <DownloadSubmap />
       <IconButton
         icon="chevron-right"
         className="h-6 w-6 bg-white-pearl"
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayLineFeature.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayLineFeature.ts
index 76c62650fd3cd9fd20d33626d756c1fd2670c1b8..b38d603bbb793c6578722f2c8170cd8f5c895b51 100644
--- a/src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayLineFeature.ts
+++ b/src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayLineFeature.ts
@@ -1,7 +1,7 @@
 import { LinePoint } from '@/types/reactions';
 import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection';
 import { Feature } from 'ol';
-import { Geometry } from 'ol/geom';
+import { SimpleGeometry } from 'ol/geom';
 import { getLineFeature } from '../reactionsLayer/getLineFeature';
 import { getOverlayLineFeatureStyle } from './getOverlayLineFeatureStyle';
 
@@ -13,7 +13,7 @@ interface Options {
 export const createOverlayLineFeature = (
   points: LinePoint,
   { color, pointToProjection }: Options,
-): Feature<Geometry> => {
+): Feature<SimpleGeometry> => {
   const feature = getLineFeature(points, pointToProjection);
 
   feature.setStyle(getOverlayLineFeatureStyle(color));
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/getColorByAvailableProperties.test.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/getColorByAvailableProperties.test.ts
deleted file mode 100644
index 8ef9d84996f2dae4ae5819893ea8de9d1c4c3187..0000000000000000000000000000000000000000
--- a/src/components/Map/MapViewer/utils/config/overlaysLayer/getColorByAvailableProperties.test.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import { OverlayBioEntityRender } from '@/types/OLrendering';
-import { getColorByAvailableProperties } from './getColorByAvailableProperties';
-
-describe('getColorByAvailableProperties', () => {
-  const ENTITY: OverlayBioEntityRender = {
-    type: 'rectangle',
-    id: 0,
-    modelId: 0,
-    x1: 0,
-    y1: 0,
-    x2: 0,
-    y2: 0,
-    width: 0,
-    height: 0,
-    value: null,
-    overlayId: 0,
-    color: null,
-  };
-
-  const getHexTricolorGradientColorWithAlpha = jest.fn().mockReturnValue('#FFFFFF');
-  const defaultColor = '#000000';
-
-  beforeEach(() => {
-    jest.clearAllMocks();
-  });
-
-  it('should return the result of getHexTricolorGradientColorWithAlpha if entity has a value equal to 0', () => {
-    const entity = { ...ENTITY, value: 0 };
-    const result = getColorByAvailableProperties(
-      entity,
-      getHexTricolorGradientColorWithAlpha,
-      defaultColor,
-    );
-
-    expect(result).toEqual('#FFFFFF');
-    expect(getHexTricolorGradientColorWithAlpha).toHaveBeenCalledWith(entity.value);
-  });
-
-  it('should return the result of getHexTricolorGradientColorWithAlpha if entity has a value', () => {
-    const entity = { ...ENTITY, value: -0.2137 };
-    const result = getColorByAvailableProperties(
-      entity,
-      getHexTricolorGradientColorWithAlpha,
-      defaultColor,
-    );
-
-    expect(result).toEqual('#FFFFFF');
-    expect(getHexTricolorGradientColorWithAlpha).toHaveBeenCalledWith(entity.value);
-  });
-
-  it('should return the result of convertDecimalToHex if entity has a color', () => {
-    const entity = { ...ENTITY, color: { rgb: -65536, alpha: 0 } }; // red  color
-
-    const result = getColorByAvailableProperties(
-      entity,
-      getHexTricolorGradientColorWithAlpha,
-      defaultColor,
-    );
-
-    expect(result).toEqual('#ff0000');
-    expect(getHexTricolorGradientColorWithAlpha).not.toHaveBeenCalled();
-  });
-
-  it('should return the default color if entity has neither a value nor a color', () => {
-    const result = getColorByAvailableProperties(
-      ENTITY,
-      getHexTricolorGradientColorWithAlpha,
-      defaultColor,
-    );
-
-    expect(result).toEqual('#000000');
-    expect(getHexTricolorGradientColorWithAlpha).not.toHaveBeenCalled();
-  });
-});
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/getColorByAvailableProperties.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/getColorByAvailableProperties.ts
deleted file mode 100644
index 6cbc988306822a2bcd1bd2a4cc1aabbc7d24b4f4..0000000000000000000000000000000000000000
--- a/src/components/Map/MapViewer/utils/config/overlaysLayer/getColorByAvailableProperties.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ZERO } from '@/constants/common';
-import type { GetHex3ColorGradientColorWithAlpha } from '@/hooks/useTriColorLerp';
-import { OverlayBioEntityRender } from '@/types/OLrendering';
-import { convertDecimalToHexColor } from '@/utils/convert/convertDecimalToHex';
-
-export const getColorByAvailableProperties = (
-  entity: OverlayBioEntityRender,
-  getHexTricolorGradientColorWithAlpha: GetHex3ColorGradientColorWithAlpha,
-  defaultColor: string,
-): string => {
-  if (typeof entity.value === 'number') {
-    return getHexTricolorGradientColorWithAlpha(entity.value || ZERO);
-  }
-  if (entity.color) {
-    return convertDecimalToHexColor(entity.color.rgb);
-  }
-  return defaultColor;
-};
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlayFeatures.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlayFeatures.ts
deleted file mode 100644
index cf81087791456d75326d9b48970e45f055b277fd..0000000000000000000000000000000000000000
--- a/src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlayFeatures.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import { ZERO } from '@/constants/common';
-import type { GetHex3ColorGradientColorWithAlpha } from '@/hooks/useTriColorLerp';
-import { OverlayOrder } from '@/redux/overlayBioEntity/overlayBioEntity.utils';
-import { OverlayBioEntityRender } from '@/types/OLrendering';
-import { LinePoint } from '@/types/reactions';
-import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection';
-import type Feature from 'ol/Feature';
-import { Geometry } from 'ol/geom';
-import type Polygon from 'ol/geom/Polygon';
-import { createOverlayGeometryFeature } from './createOverlayGeometryFeature';
-import { createOverlayLineFeature } from './createOverlayLineFeature';
-import { getColorByAvailableProperties } from './getColorByAvailableProperties';
-import { getPolygonLatitudeCoordinates } from './getPolygonLatitudeCoordinates';
-
-type GetOverlayFeaturesProps = {
-  bioEntities: OverlayBioEntityRender[];
-  pointToProjection: UsePointToProjectionResult;
-  getHex3ColorGradientColorWithAlpha: GetHex3ColorGradientColorWithAlpha;
-  defaultColor: string;
-  overlaysOrder: OverlayOrder[];
-};
-
-export const getOverlayFeatures = ({
-  bioEntities,
-  pointToProjection,
-  getHex3ColorGradientColorWithAlpha,
-  defaultColor,
-  overlaysOrder,
-}: GetOverlayFeaturesProps): Feature<Polygon>[] | Feature<Geometry>[] =>
-  bioEntities.map(entity => {
-    /**
-     * Depending on number of active overlays
-     * it's required to calculate xMin and xMax coordinates of the polygon
-     * so "entity" might be devided equali between active overlays
-     */
-    const { xMin, xMax } = getPolygonLatitudeCoordinates({
-      width: entity.width,
-      nOverlays: overlaysOrder.length,
-      xMin: entity.x1,
-      overlayIndexBasedOnOrder:
-        overlaysOrder.find(({ id }) => id === entity.overlayId)?.index || ZERO,
-    });
-
-    const color = getColorByAvailableProperties(
-      entity,
-      getHex3ColorGradientColorWithAlpha,
-      defaultColor,
-    );
-
-    if (entity.type === 'rectangle') {
-      return createOverlayGeometryFeature(
-        [
-          ...pointToProjection({ x: xMin, y: entity.y1 }),
-          ...pointToProjection({ x: xMax, y: entity.y2 }),
-        ],
-        color,
-      );
-    }
-
-    return createOverlayLineFeature(
-      [
-        { x: entity.x1, y: entity.y1 },
-        { x: entity.x2, y: entity.y2 },
-      ] as LinePoint,
-      {
-        color,
-        pointToProjection,
-      },
-    );
-  });
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.test.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..61841611e83b4818cf7c1382cc0ff8795e85996e
--- /dev/null
+++ b/src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.test.ts
@@ -0,0 +1,63 @@
+import { CONFIGURATION_INITIAL_STORE_MOCKS } from '@/redux/configuration/configuration.mock';
+import { OverlayBioEntityRender } from '@/types/OLrendering';
+import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore';
+import { renderHook } from '@testing-library/react';
+import { useGetOverlayColor } from './useGetOverlayColor';
+
+describe('useOverlayFeatures - hook', () => {
+  const { Wrapper } = getReduxWrapperWithStore({
+    configuration: {
+      ...CONFIGURATION_INITIAL_STORE_MOCKS,
+    },
+  });
+  const {
+    result: {
+      current: { getOverlayBioEntityColorByAvailableProperties },
+    },
+  } = renderHook(() => useGetOverlayColor(), {
+    wrapper: Wrapper,
+  });
+
+  describe('getOverlayBioEntityColorByAvailableProperties - function', () => {
+    const ENTITY: OverlayBioEntityRender = {
+      type: 'rectangle',
+      id: 0,
+      modelId: 0,
+      x1: 0,
+      y1: 0,
+      x2: 0,
+      y2: 0,
+      width: 0,
+      height: 0,
+      value: null,
+      overlayId: 0,
+      color: null,
+    };
+
+    it('should return color based on value', () => {});
+
+    it('should return the correct result if entity has a value equal to 0', () => {
+      const entity = { ...ENTITY, value: 0 };
+
+      expect(getOverlayBioEntityColorByAvailableProperties(entity)).toEqual('#FFFFFFcc');
+    });
+
+    it('should return the result if entity has a value', () => {
+      const entity = { ...ENTITY, value: -0.2137 };
+
+      expect(getOverlayBioEntityColorByAvailableProperties(entity)).toEqual('#FFC9C9cc');
+    });
+
+    it('should return the correct result if entity has a color but no value', () => {
+      const entity = { ...ENTITY, color: { rgb: -65536, alpha: 0 } }; // red  color
+
+      expect(getOverlayBioEntityColorByAvailableProperties(entity)).toEqual('#ff0000cc');
+    });
+
+    it('should return the default color if entity has neither a value nor a color', () => {
+      const entity = { ...ENTITY };
+
+      expect(getOverlayBioEntityColorByAvailableProperties(entity)).toEqual('#00FF00cc');
+    });
+  });
+});
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.ts
new file mode 100644
index 0000000000000000000000000000000000000000..64518c5e005318aca9f21c9635478e735043330b
--- /dev/null
+++ b/src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.ts
@@ -0,0 +1,73 @@
+import { useCallback, useMemo } from 'react';
+import { WHITE_HEX_OPACITY_0 } from '@/constants/hexColors';
+import {
+  maxColorValSelector,
+  minColorValSelector,
+  neutralColorValSelector,
+  overlayOpacitySelector,
+  simpleColorValSelector,
+} from '@/redux/configuration/configuration.selectors';
+import { useAppSelector } from '@/redux/hooks/useAppSelector';
+import { getHexTricolorGradientColorWithAlpha } from '@/utils/convert/getHexTricolorGradientColorWithAlpha';
+import { ONE, ZERO } from '@/constants/common';
+import { OverlayBioEntityRender } from '@/types/OLrendering';
+import { addAlphaToHexString } from '@/utils/convert/addAlphaToHexString';
+import { getHexStringColorFromRGBIntWithAlpha } from '@/utils/convert/getHexStringColorFromRGBIntWithAlpha';
+
+type GetOverlayBioEntityColorByAvailableProperties = (entity: OverlayBioEntityRender) => string;
+
+type UseTriColorLerpReturn = {
+  getOverlayBioEntityColorByAvailableProperties: GetOverlayBioEntityColorByAvailableProperties;
+};
+
+export const useGetOverlayColor = (): UseTriColorLerpReturn => {
+  const minColorValHexString = useAppSelector(minColorValSelector) || '';
+  const maxColorValHexString = useAppSelector(maxColorValSelector) || '';
+  const neutralColorValHexString = useAppSelector(neutralColorValSelector) || '';
+  const overlayOpacityValue = useAppSelector(overlayOpacitySelector) || ONE;
+  const simpleColorValue = useAppSelector(simpleColorValSelector) || WHITE_HEX_OPACITY_0;
+
+  const getHex3ColorGradientColorWithAlpha = useCallback(
+    (position: number) =>
+      getHexTricolorGradientColorWithAlpha({
+        leftColor: minColorValHexString,
+        middleColor: neutralColorValHexString,
+        rightColor: maxColorValHexString,
+        position,
+        alpha: Number(overlayOpacityValue),
+      }),
+    [minColorValHexString, neutralColorValHexString, maxColorValHexString, overlayOpacityValue],
+  );
+
+  const getHexColorFromRGBIntWithAlpha = useCallback(
+    (rgbInt: number) =>
+      getHexStringColorFromRGBIntWithAlpha({ rgbInt, alpha: Number(overlayOpacityValue) }),
+    [overlayOpacityValue],
+  );
+
+  const defaultColorHex = useMemo(
+    () => addAlphaToHexString(simpleColorValue, Number(overlayOpacityValue)),
+    [simpleColorValue, overlayOpacityValue],
+  );
+
+  /**
+   * Entity might have 3 properties that indicates color:
+   * value - which value from [-1,1] range and needs to interpolate between minColorVal, neutralColorVal and maxColorVal
+   * color - which is integer representation of color and needs to be converted to hex string
+   * defaultColor - which is hex string representation of color. It occurs when color and value are not available
+   */
+  const getOverlayBioEntityColorByAvailableProperties = useCallback(
+    (entity: OverlayBioEntityRender) => {
+      if (typeof entity.value === 'number') {
+        return getHex3ColorGradientColorWithAlpha(entity.value || ZERO);
+      }
+      if (entity.color) {
+        return getHexColorFromRGBIntWithAlpha(entity.color.rgb);
+      }
+      return defaultColorHex;
+    },
+    [getHex3ColorGradientColorWithAlpha, getHexColorFromRGBIntWithAlpha, defaultColorHex],
+  );
+
+  return { getOverlayBioEntityColorByAvailableProperties };
+};
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/useOlMapOverlaysLayer.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/useOlMapOverlaysLayer.ts
index 71247c54a4bc0ae7ac0091de51336ac64c5d73cc..1fb0084b4de573f5a94c58e9145cfc18424a111a 100644
--- a/src/components/Map/MapViewer/utils/config/overlaysLayer/useOlMapOverlaysLayer.ts
+++ b/src/components/Map/MapViewer/utils/config/overlaysLayer/useOlMapOverlaysLayer.ts
@@ -1,16 +1,9 @@
-import { useTriColorLerp } from '@/hooks/useTriColorLerp';
-import { useAppSelector } from '@/redux/hooks/useAppSelector';
-import {
-  getOverlayOrderSelector,
-  overlayBioEntitiesForCurrentModelSelector,
-} from '@/redux/overlayBioEntity/overlayBioEntity.selector';
-import { usePointToProjection } from '@/utils/map/usePointToProjection';
-import { Feature } from 'ol';
-import { Geometry } from 'ol/geom';
+import Geometry from 'ol/geom/Geometry';
 import VectorLayer from 'ol/layer/Vector';
 import VectorSource from 'ol/source/Vector';
+import { Feature } from 'ol';
 import { useMemo } from 'react';
-import { getOverlayFeatures } from './getOverlayFeatures';
+import { useOverlayFeatures } from './useOverlayFeatures';
 
 /**
  * Prerequisites: "view" button triggers opening overlays -> it triggers downloading overlayBioEntityData for given overlay for ALL available submaps(models)
@@ -27,34 +20,13 @@ import { getOverlayFeatures } from './getOverlayFeatures';
  */
 
 export const useOlMapOverlaysLayer = (): VectorLayer<VectorSource<Feature<Geometry>>> => {
-  const pointToProjection = usePointToProjection();
-  const { getHex3ColorGradientColorWithAlpha, defaultColorHex } = useTriColorLerp();
-  const bioEntities = useAppSelector(overlayBioEntitiesForCurrentModelSelector);
-  const overlaysOrder = useAppSelector(getOverlayOrderSelector);
-
-  const features = useMemo(
-    () =>
-      getOverlayFeatures({
-        bioEntities,
-        pointToProjection,
-        getHex3ColorGradientColorWithAlpha,
-        defaultColor: defaultColorHex,
-        overlaysOrder,
-      }),
-    [
-      bioEntities,
-      getHex3ColorGradientColorWithAlpha,
-      pointToProjection,
-      defaultColorHex,
-      overlaysOrder,
-    ],
-  );
+  const overlaysFeatures = useOverlayFeatures();
 
   const vectorSource = useMemo(() => {
     return new VectorSource({
-      features,
+      features: overlaysFeatures,
     });
-  }, [features]);
+  }, [overlaysFeatures]);
 
   const overlaysLayer = useMemo(
     () =>
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.test.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..15c9cf3e5e9820d3d3f9d604bc19a7e5dad1c383
--- /dev/null
+++ b/src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.test.ts
@@ -0,0 +1,85 @@
+/* eslint-disable no-magic-numbers */
+import { CONFIGURATION_INITIAL_STORE_MOCKS } from '@/redux/configuration/configuration.mock';
+import { mapStateWithCurrentlySelectedMainMapFixture } from '@/redux/map/map.fixtures';
+import { MODELS_DATA_MOCK_WITH_MAIN_MAP } from '@/redux/models/models.mock';
+import { MOCKED_OVERLAY_BIO_ENTITY_RENDER } from '@/redux/overlayBioEntity/overlayBioEntity.mock';
+import { OVERLAYS_PUBLIC_FETCHED_STATE_MOCK } from '@/redux/overlays/overlays.mock';
+import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore';
+import { renderHook } from '@testing-library/react';
+import { useOverlayFeatures } from './useOverlayFeatures';
+
+/**
+ * mocks for useOverlayFeatures
+ * are taken from helpers functions that are used inside useOverlayFeatures
+ * point of the test is to test if all helper functions work correctly when combined together
+ */
+
+describe('useOverlayFeatures', () => {
+  const { Wrapper } = getReduxWrapperWithStore({
+    configuration: {
+      ...CONFIGURATION_INITIAL_STORE_MOCKS,
+    },
+    overlayBioEntity: {
+      overlaysId: [11, 12],
+      data: {
+        // overlayId
+        11: {
+          // modelId
+          52: MOCKED_OVERLAY_BIO_ENTITY_RENDER,
+          53: MOCKED_OVERLAY_BIO_ENTITY_RENDER,
+        },
+        12: {
+          52: MOCKED_OVERLAY_BIO_ENTITY_RENDER,
+          53: MOCKED_OVERLAY_BIO_ENTITY_RENDER,
+        },
+      },
+    },
+    overlays: {
+      ...OVERLAYS_PUBLIC_FETCHED_STATE_MOCK,
+    },
+    map: {
+      ...mapStateWithCurrentlySelectedMainMapFixture,
+    },
+    models: {
+      ...MODELS_DATA_MOCK_WITH_MAIN_MAP,
+    },
+  });
+
+  it('should return an array of features', () => {
+    const {
+      result: { current: features },
+    } = renderHook(() => useOverlayFeatures(), {
+      wrapper: Wrapper,
+    });
+
+    expect(features).toHaveLength(10);
+
+    // type: rectangle
+    expect(features[0].getGeometry()?.getCoordinates()).toEqual([
+      [
+        [-13149141, 18867005],
+        [-13149141, 18881970],
+        [-13143529, 18881970],
+        [-13143529, 18867005],
+        [-13149141, 18867005],
+      ],
+    ]);
+    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+    // @ts-ignore
+    expect(features[0].getStyle().getFill().getColor()).toBe('#FFFFFFcc');
+
+    // type: line
+    expect(features[7].getGeometry()?.getCoordinates()).toEqual([
+      [
+        [-13149141, 18867005],
+        [-13149141, 18881970],
+        [-13141659, 18881970],
+        [-13141659, 18867005],
+        [-13149141, 18867005],
+      ],
+    ]);
+    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+    // @ts-ignore
+    expect(features[7].getStyle().getFill().getColor()).toBe('#ff0000cc');
+  });
+});
diff --git a/src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.ts b/src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.ts
new file mode 100644
index 0000000000000000000000000000000000000000..477a95dd324f06f8099d88db81055e7324b77d5f
--- /dev/null
+++ b/src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.ts
@@ -0,0 +1,67 @@
+import { ZERO } from '@/constants/common';
+import { useAppSelector } from '@/redux/hooks/useAppSelector';
+import {
+  getOverlayOrderSelector,
+  overlayBioEntitiesForCurrentModelSelector,
+} from '@/redux/overlayBioEntity/overlayBioEntity.selector';
+import { LinePoint } from '@/types/reactions';
+import { usePointToProjection } from '@/utils/map/usePointToProjection';
+import type Feature from 'ol/Feature';
+import { SimpleGeometry } from 'ol/geom';
+import type Polygon from 'ol/geom/Polygon';
+import { useMemo } from 'react';
+import { createOverlayGeometryFeature } from './createOverlayGeometryFeature';
+import { createOverlayLineFeature } from './createOverlayLineFeature';
+import { getPolygonLatitudeCoordinates } from './getPolygonLatitudeCoordinates';
+import { useGetOverlayColor } from './useGetOverlayColor';
+
+export const useOverlayFeatures = (): Feature<Polygon>[] | Feature<SimpleGeometry>[] => {
+  const pointToProjection = usePointToProjection();
+  const { getOverlayBioEntityColorByAvailableProperties } = useGetOverlayColor();
+  const overlaysOrder = useAppSelector(getOverlayOrderSelector);
+  const bioEntities = useAppSelector(overlayBioEntitiesForCurrentModelSelector);
+
+  const features = useMemo(
+    () =>
+      bioEntities.map(entity => {
+        /**
+         * Depending on number of active overlays
+         * it's required to calculate xMin and xMax coordinates of the polygon
+         * so "entity" might be devided equality between active overlays
+         */
+        const { xMin, xMax } = getPolygonLatitudeCoordinates({
+          width: entity.width,
+          nOverlays: overlaysOrder.length,
+          xMin: entity.x1,
+          overlayIndexBasedOnOrder:
+            overlaysOrder.find(({ id }) => id === entity.overlayId)?.index || ZERO,
+        });
+
+        const color = getOverlayBioEntityColorByAvailableProperties(entity);
+
+        if (entity.type === 'rectangle') {
+          return createOverlayGeometryFeature(
+            [
+              ...pointToProjection({ x: xMin, y: entity.y1 }),
+              ...pointToProjection({ x: xMax, y: entity.y2 }),
+            ],
+            color,
+          );
+        }
+
+        return createOverlayLineFeature(
+          [
+            { x: entity.x1, y: entity.y1 },
+            { x: entity.x2, y: entity.y2 },
+          ] as LinePoint,
+          {
+            color,
+            pointToProjection,
+          },
+        );
+      }),
+    [overlaysOrder, bioEntities, pointToProjection, getOverlayBioEntityColorByAvailableProperties],
+  );
+
+  return features;
+};
diff --git a/src/components/Map/MapViewer/utils/config/reactionsLayer/getLineFeature.ts b/src/components/Map/MapViewer/utils/config/reactionsLayer/getLineFeature.ts
index 40211171605c35ff87995e6ed9abf02bc300c76b..b7ce166ad5bf96b39976fc6d08fabb8fae5e6f1a 100644
--- a/src/components/Map/MapViewer/utils/config/reactionsLayer/getLineFeature.ts
+++ b/src/components/Map/MapViewer/utils/config/reactionsLayer/getLineFeature.ts
@@ -1,12 +1,12 @@
 import { LinePoint } from '@/types/reactions';
 import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection';
 import { Feature } from 'ol';
-import { LineString } from 'ol/geom';
+import { LineString, SimpleGeometry } from 'ol/geom';
 
 export const getLineFeature = (
   linePoints: LinePoint,
   pointToProjection: UsePointToProjectionResult,
-): Feature => {
+): Feature<SimpleGeometry> => {
   const points = linePoints.map(pointToProjection);
 
   return new Feature({
diff --git a/src/hooks/useTriColorLerp.ts b/src/hooks/useTriColorLerp.ts
deleted file mode 100644
index f872b09c506edbf4b8c50c3e70d02e1a860d12f2..0000000000000000000000000000000000000000
--- a/src/hooks/useTriColorLerp.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { useCallback } from 'react';
-import { WHITE_HEX_OPACITY_0 } from '@/constants/hexColors';
-import {
-  maxColorValSelector,
-  minColorValSelector,
-  neutralColorValSelector,
-  overlayOpacitySelector,
-  simpleColorValSelector,
-} from '@/redux/configuration/configuration.selectors';
-import { useAppSelector } from '@/redux/hooks/useAppSelector';
-import { getHexTricolorGradientColorWithAlpha } from '@/utils/convert/getHexTricolorGradientColorWithAlpha';
-import { ONE } from '@/constants/common';
-import { addAlphaToHexString } from '../utils/convert/addAlphaToHexString';
-
-export type GetHex3ColorGradientColorWithAlpha = (position: number) => string;
-
-type UseTriColorLerpReturn = {
-  getHex3ColorGradientColorWithAlpha: GetHex3ColorGradientColorWithAlpha;
-  defaultColorHex: string;
-};
-
-export const useTriColorLerp = (): UseTriColorLerpReturn => {
-  const minColorValHexString = useAppSelector(minColorValSelector) || '';
-  const maxColorValHexString = useAppSelector(maxColorValSelector) || '';
-  const neutralColorValHexString = useAppSelector(neutralColorValSelector) || '';
-  const overlayOpacityValue = useAppSelector(overlayOpacitySelector) || ONE;
-  const simpleColorValue = useAppSelector(simpleColorValSelector) || WHITE_HEX_OPACITY_0;
-
-  const getHex3ColorGradientColorWithAlpha = useCallback(
-    (position: number) =>
-      getHexTricolorGradientColorWithAlpha({
-        leftColor: minColorValHexString,
-        middleColor: neutralColorValHexString,
-        rightColor: maxColorValHexString,
-        position,
-        alpha: Number(overlayOpacityValue),
-      }),
-    [minColorValHexString, neutralColorValHexString, maxColorValHexString, overlayOpacityValue],
-  );
-
-  const defaultColorHex = addAlphaToHexString(simpleColorValue, Number(overlayOpacityValue));
-
-  return { getHex3ColorGradientColorWithAlpha, defaultColorHex };
-};
diff --git a/src/models/configurationSchema.ts b/src/models/configurationSchema.ts
index db44bb5651921d33a73a75029205a2b30f5291eb..b3ec41d84ddccc28ed1e1fbc0628508a316e51b9 100644
--- a/src/models/configurationSchema.ts
+++ b/src/models/configurationSchema.ts
@@ -16,13 +16,7 @@ export const optionSchema = z.object({
   value: z.string().optional(),
 });
 
-export const imageFormatSchema = z.object({
-  name: z.string(),
-  handler: z.string(),
-  extension: z.string(),
-});
-
-export const modelFormatSchema = z.object({
+export const formatSchema = z.object({
   name: z.string(),
   handler: z.string(),
   extension: z.string(),
@@ -87,8 +81,8 @@ export const modificationStateTypeSchema = z.record(
 export const configurationSchema = z.object({
   elementTypes: z.array(elementTypeSchema),
   options: z.array(optionSchema),
-  imageFormats: z.array(imageFormatSchema),
-  modelFormats: z.array(modelFormatSchema),
+  imageFormats: z.array(formatSchema),
+  modelFormats: z.array(formatSchema),
   overlayTypes: z.array(overlayTypeSchema),
   reactionTypes: z.array(reactionTypeSchema),
   miriamTypes: miriamTypesSchema,
diff --git a/src/models/fixtures/configurationFixture.ts b/src/models/fixtures/configurationFixture.ts
new file mode 100644
index 0000000000000000000000000000000000000000..56e19f7adcb59678ca144fd6a63bb741c8e51876
--- /dev/null
+++ b/src/models/fixtures/configurationFixture.ts
@@ -0,0 +1,9 @@
+import { ZOD_SEED } from '@/constants';
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { createFixture } from 'zod-fixture';
+import { configurationSchema } from '../configurationSchema';
+
+export const configurationFixture = createFixture(configurationSchema, {
+  seed: ZOD_SEED,
+  array: { min: 1, max: 1 },
+});
diff --git a/src/models/mocks/configurationFormatsMock.ts b/src/models/mocks/configurationFormatsMock.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8d6d4e8afa75491a2fcafee702da4320a633f1b9
--- /dev/null
+++ b/src/models/mocks/configurationFormatsMock.ts
@@ -0,0 +1,31 @@
+import { ConfigurationFormatSchema } from '@/types/models';
+
+export const CONFIGURATION_FORMATS_TYPES_MOCK: string[] = [
+  'CellDesigner SBML',
+  'SBGN-ML',
+  'SBML',
+  'GPML',
+];
+
+export const CONFIGURATION_FORMATS_MOCK: ConfigurationFormatSchema[] = [
+  {
+    name: 'CellDesigner SBML',
+    handler: 'lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser',
+    extension: 'xml',
+  },
+  {
+    name: 'SBGN-ML',
+    handler: 'lcsb.mapviewer.converter.model.sbgnml.SbgnmlXmlConverter',
+    extension: 'sbgn',
+  },
+  {
+    name: 'SBML',
+    handler: 'lcsb.mapviewer.converter.model.sbml.SbmlParser',
+    extension: 'xml',
+  },
+  {
+    name: 'GPML',
+    handler: 'lcsb.mapviewer.wikipathway.GpmlParser',
+    extension: 'gpml',
+  },
+];
diff --git a/src/models/mocks/configurationOptionMock.ts b/src/models/mocks/configurationOptionMock.ts
index f658402ecdddcb0df80cf9a1e92e940b5c422679..c1e6a1e53d452fd0b9b66bf25538afdbe832623b 100644
--- a/src/models/mocks/configurationOptionMock.ts
+++ b/src/models/mocks/configurationOptionMock.ts
@@ -5,6 +5,7 @@ export const CONFIGURATION_OPTIONS_TYPES_MOCK: string[] = [
   'MAX_COLOR_VAL',
   'SIMPLE_COLOR_VAL',
   'NEUTRAL_COLOR_VAL',
+  'OVERLAY_OPACITY',
 ];
 
 export const CONFIGURATION_OPTIONS_COLOURS_MOCK: ConfigurationOption[] = [
@@ -44,4 +45,13 @@ export const CONFIGURATION_OPTIONS_COLOURS_MOCK: ConfigurationOption[] = [
     value: 'FFFFFF',
     group: 'Overlays',
   },
+  {
+    idObject: 33,
+    type: 'OVERLAY_OPACITY',
+    valueType: 'DOUBLE',
+    commonName: 'Opacity used when drawing data overlays (value between 0.0-1.0)',
+    isServerSide: false,
+    value: '0.8',
+    group: 'Overlays',
+  },
 ];
diff --git a/src/redux/compartmentPathways/compartmentPathways.reducers.test.ts b/src/redux/compartmentPathways/compartmentPathways.reducers.test.ts
index 2c2639032a77c6798b6ec8c8b648f4927a135e21..037eefa24fe80a7a82141bdedf7ce5c757e0b9b6 100644
--- a/src/redux/compartmentPathways/compartmentPathways.reducers.test.ts
+++ b/src/redux/compartmentPathways/compartmentPathways.reducers.test.ts
@@ -10,7 +10,7 @@ import {
   compartmentPathwaysFixture,
   compartmentPathwaysOverLimitFixture,
 } from '@/models/fixtures/compartmentPathways';
-import { getModelsIds } from '@/components/Map/Drawer/ExportDrawer/Elements/Elements.utils';
+import { getModelsIds } from '@/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils';
 import { apiPath } from '../apiPath';
 import compartmentPathwaysReducer from './compartmentPathways.slice';
 import { CompartmentPathwaysState } from './compartmentPathways.types';
diff --git a/src/redux/compartmentPathways/compartmentPathways.thunks.test.ts b/src/redux/compartmentPathways/compartmentPathways.thunks.test.ts
index b2d801e304562f0a8da4aecd402b9b3aa0bfe906..407eb70d6a20ff4abb36a2408b2a0eb388c084b3 100644
--- a/src/redux/compartmentPathways/compartmentPathways.thunks.test.ts
+++ b/src/redux/compartmentPathways/compartmentPathways.thunks.test.ts
@@ -10,7 +10,7 @@ import {
   compartmentPathwaysFixture,
   compartmentPathwaysOverLimitFixture,
 } from '@/models/fixtures/compartmentPathways';
-import { getModelsIds } from '@/components/Map/Drawer/ExportDrawer/Elements/Elements.utils';
+import { getModelsIds } from '@/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils';
 import { apiPath } from '../apiPath';
 import compartmentPathwaysReducer from './compartmentPathways.slice';
 import { CompartmentPathwaysState } from './compartmentPathways.types';
diff --git a/src/redux/configuration/configuration.constants.ts b/src/redux/configuration/configuration.constants.ts
index ebf80efa62cfa09dab7aa8a2b4d94167ab0b16c3..56448d47fce6e44bf31adfe19acd78b25b340453 100644
--- a/src/redux/configuration/configuration.constants.ts
+++ b/src/redux/configuration/configuration.constants.ts
@@ -10,3 +10,8 @@ export const LEGEND_FILE_NAMES_IDS = [
   'LEGEND_FILE_3',
   'LEGEND_FILE_4',
 ];
+
+export const GPML_HANDLER_NAME_ID = 'GPML';
+export const SBML_HANDLER_NAME_ID = 'SBML';
+export const CELL_DESIGNER_SBML_HANDLER_NAME_ID = 'CellDesigner SBML';
+export const SBGN_ML_HANDLER_NAME_ID = 'SBGN-ML';
diff --git a/src/redux/configuration/configuration.mock.ts b/src/redux/configuration/configuration.mock.ts
index d371990411b2f4fc2e88b66f44c411da248d346e..07ee6ea998096fcad4a62772d50845021e074e18 100644
--- a/src/redux/configuration/configuration.mock.ts
+++ b/src/redux/configuration/configuration.mock.ts
@@ -1,8 +1,8 @@
 /* eslint-disable no-magic-numbers */
 import { DEFAULT_ERROR } from '@/constants/errors';
 import {
-  CONFIGURATION_OPTIONS_TYPES_MOCK,
   CONFIGURATION_OPTIONS_COLOURS_MOCK,
+  CONFIGURATION_OPTIONS_TYPES_MOCK,
 } from '@/models/mocks/configurationOptionMock';
 import { ConfigurationState } from './configuration.adapter';
 
@@ -29,6 +29,7 @@ export const CONFIGURATION_INITIAL_STORE_MOCKS: ConfigurationState = {
       [CONFIGURATION_OPTIONS_TYPES_MOCK[1]]: CONFIGURATION_OPTIONS_COLOURS_MOCK[1],
       [CONFIGURATION_OPTIONS_TYPES_MOCK[2]]: CONFIGURATION_OPTIONS_COLOURS_MOCK[2],
       [CONFIGURATION_OPTIONS_TYPES_MOCK[3]]: CONFIGURATION_OPTIONS_COLOURS_MOCK[3],
+      [CONFIGURATION_OPTIONS_TYPES_MOCK[4]]: CONFIGURATION_OPTIONS_COLOURS_MOCK[4],
     },
     loading: 'idle',
     error: DEFAULT_ERROR,
diff --git a/src/redux/configuration/configuration.reducers.ts b/src/redux/configuration/configuration.reducers.ts
index 57e60a05a28eda8721332f80adbf4abeda5c56bd..f1f428a1a6b3d8704c67221227a56d410b7e8b02 100644
--- a/src/redux/configuration/configuration.reducers.ts
+++ b/src/redux/configuration/configuration.reducers.ts
@@ -1,6 +1,6 @@
 import { ActionReducerMapBuilder } from '@reduxjs/toolkit';
-import { getConfiguration, getConfigurationOptions } from './configuration.thunks';
 import { ConfigurationState, configurationAdapter } from './configuration.adapter';
+import { getConfiguration, getConfigurationOptions } from './configuration.thunks';
 
 export const getConfigurationOptionsReducer = (
   builder: ActionReducerMapBuilder<ConfigurationState>,
diff --git a/src/redux/configuration/configuration.selectors.ts b/src/redux/configuration/configuration.selectors.ts
index 3fc6d2e7118f93ef7c17d575fbdfb1ec6dd17b1b..451590bbca72cf44ab73bec01501175c15f96612 100644
--- a/src/redux/configuration/configuration.selectors.ts
+++ b/src/redux/configuration/configuration.selectors.ts
@@ -1,17 +1,24 @@
+import { ConfigurationFormatSchema } from '@/types/models';
 import { createSelector } from '@reduxjs/toolkit';
 import { rootSelector } from '../root/root.selectors';
 import { configurationAdapter } from './configuration.adapter';
 import {
+  CELL_DESIGNER_SBML_HANDLER_NAME_ID,
+  GPML_HANDLER_NAME_ID,
   LEGEND_FILE_NAMES_IDS,
   MAX_COLOR_VAL_NAME_ID,
   MIN_COLOR_VAL_NAME_ID,
   NEUTRAL_COLOR_VAL_NAME_ID,
   OVERLAY_OPACITY_NAME_ID,
+  SBGN_ML_HANDLER_NAME_ID,
+  SBML_HANDLER_NAME_ID,
   SIMPLE_COLOR_VAL_NAME_ID,
 } from './configuration.constants';
+import { ConfigurationHandlersIds } from './configuration.types';
 
 const configurationSelector = createSelector(rootSelector, state => state.configuration);
 const configurationOptionsSelector = createSelector(configurationSelector, state => state.options);
+const configurationMainSelector = createSelector(configurationSelector, state => state.main.data);
 
 const configurationAdapterSelectors = configurationAdapter.getSelectors();
 
@@ -46,12 +53,38 @@ export const defaultLegendImagesSelector = createSelector(configurationOptionsSe
   ).filter(legendImage => Boolean(legendImage)),
 );
 
-export const configurationMainSelector = createSelector(
-  configurationSelector,
-  state => state.main.data,
-);
-
 export const elementTypesSelector = createSelector(
   configurationMainSelector,
   state => state?.elementTypes,
 );
+
+export const modelFormatsSelector = createSelector(
+  configurationMainSelector,
+  state => state?.modelFormats,
+);
+
+export const formatsEntriesSelector = createSelector(
+  modelFormatsSelector,
+  (modelFormats): Record<string, ConfigurationFormatSchema> => {
+    return Object.fromEntries(
+      (modelFormats || [])
+        .flat()
+        .filter((format: ConfigurationFormatSchema): format is ConfigurationFormatSchema =>
+          Boolean(format),
+        )
+        .map((format: ConfigurationFormatSchema) => [format.name, format]),
+    );
+  },
+);
+
+export const formatsHandlersSelector = createSelector(
+  formatsEntriesSelector,
+  (formats): ConfigurationHandlersIds => {
+    return {
+      [GPML_HANDLER_NAME_ID]: formats[GPML_HANDLER_NAME_ID]?.handler,
+      [SBML_HANDLER_NAME_ID]: formats[SBML_HANDLER_NAME_ID]?.handler,
+      [CELL_DESIGNER_SBML_HANDLER_NAME_ID]: formats[CELL_DESIGNER_SBML_HANDLER_NAME_ID]?.handler,
+      [SBGN_ML_HANDLER_NAME_ID]: formats[SBGN_ML_HANDLER_NAME_ID]?.handler,
+    };
+  },
+);
diff --git a/src/redux/configuration/configuration.slice.ts b/src/redux/configuration/configuration.slice.ts
index 7758564a93148b091a89035997757284c363e5ca..5b71ec09cdf82f7578287f0888a4a2ed19346731 100644
--- a/src/redux/configuration/configuration.slice.ts
+++ b/src/redux/configuration/configuration.slice.ts
@@ -1,6 +1,6 @@
 import { createSlice } from '@reduxjs/toolkit';
-import { getConfigurationOptionsReducer, getConfigurationReducer } from './configuration.reducers';
 import { CONFIGURATION_INITIAL_STATE } from './configuration.adapter';
+import { getConfigurationOptionsReducer, getConfigurationReducer } from './configuration.reducers';
 
 export const configurationSlice = createSlice({
   name: 'configuration',
diff --git a/src/redux/configuration/configuration.types.ts b/src/redux/configuration/configuration.types.ts
index 086619ae0b02e56f9a8d4a9a21f26beaebfa4545..e797b88764723d2f18b1c2c7b2898c46d3ade799 100644
--- a/src/redux/configuration/configuration.types.ts
+++ b/src/redux/configuration/configuration.types.ts
@@ -1,4 +1,17 @@
 import { FetchDataState } from '@/types/fetchDataState';
 import { Configuration } from '@/types/models';
+import {
+  CELL_DESIGNER_SBML_HANDLER_NAME_ID,
+  GPML_HANDLER_NAME_ID,
+  SBGN_ML_HANDLER_NAME_ID,
+  SBML_HANDLER_NAME_ID,
+} from './configuration.constants';
 
 export type ConfigurationMainState = FetchDataState<Configuration>;
+
+export interface ConfigurationHandlersIds {
+  [GPML_HANDLER_NAME_ID]?: string;
+  [SBML_HANDLER_NAME_ID]?: string;
+  [CELL_DESIGNER_SBML_HANDLER_NAME_ID]?: string;
+  [SBGN_ML_HANDLER_NAME_ID]?: string;
+}
diff --git a/src/redux/map/map.fixtures.ts b/src/redux/map/map.fixtures.ts
index 5cb2f16fe2683d2988f2a7bd16aff6e95a558eaf..be022b6972ad0c42f4ff1c7c9e2c95351f47af4e 100644
--- a/src/redux/map/map.fixtures.ts
+++ b/src/redux/map/map.fixtures.ts
@@ -40,3 +40,20 @@ export const initialMapStateFixture: MapState = {
   error: DEFAULT_ERROR,
   openedMaps: openedMapsInitialValueFixture,
 };
+
+export const mapStateWithCurrentlySelectedMainMapFixture: MapState = {
+  data: {
+    ...initialMapDataFixture,
+    modelId: 52,
+    size: {
+      width: 26779.25,
+      height: 13503,
+      tileSize: 256,
+      minZoom: 2,
+      maxZoom: 9,
+    },
+  },
+  loading: 'idle',
+  error: DEFAULT_ERROR,
+  openedMaps: openedMapsInitialValueFixture,
+};
diff --git a/src/redux/models/models.mock.ts b/src/redux/models/models.mock.ts
index e45763d82516d7ff30c12ee7512a8da5f2378cdf..b7658d3867c9d80e221fa59ffd8507c51b0cf46d 100644
--- a/src/redux/models/models.mock.ts
+++ b/src/redux/models/models.mock.ts
@@ -6,3 +6,27 @@ export const MODELS_INITIAL_STATE_MOCK: ModelsState = {
   loading: 'idle',
   error: DEFAULT_ERROR,
 };
+
+export const MODELS_DATA_MOCK_WITH_MAIN_MAP: ModelsState = {
+  data: [
+    {
+      idObject: 52,
+      width: 26779.25,
+      height: 13503,
+      defaultCenterX: null,
+      defaultCenterY: null,
+      description: '',
+      name: 'Core PD map',
+      defaultZoomLevel: null,
+      tileSize: 256,
+      references: [],
+      authors: [],
+      creationDate: null,
+      modificationDates: [],
+      minZoom: 2,
+      maxZoom: 9,
+    },
+  ],
+  loading: 'idle',
+  error: DEFAULT_ERROR,
+};
diff --git a/src/redux/overlayBioEntity/overlayBioEntity.mock.ts b/src/redux/overlayBioEntity/overlayBioEntity.mock.ts
index 4fa115d0c747d65e9d25369984108bc98c4ca6ce..9b093c3eeaecee77b8fc2923f37f8cd3da8c5eec 100644
--- a/src/redux/overlayBioEntity/overlayBioEntity.mock.ts
+++ b/src/redux/overlayBioEntity/overlayBioEntity.mock.ts
@@ -1,6 +1,80 @@
+import { OverlayBioEntityRender } from '@/types/OLrendering';
 import { OverlaysBioEntityState } from './overlayBioEntity.types';
 
 export const OVERLAY_BIO_ENTITY_INITIAL_STATE_MOCK: OverlaysBioEntityState = {
   overlaysId: [],
   data: [],
 };
+
+export const MOCKED_OVERLAY_BIO_ENTITY_RENDER: OverlayBioEntityRender[] = [
+  {
+    type: 'rectangle',
+    id: 1,
+    modelId: 52,
+    width: 30,
+    x1: 18412,
+    x2: 18492,
+    y1: 3128.653195488725,
+    y2: 3088.653195488725,
+    overlayId: 11,
+    height: 10,
+    value: 0,
+    color: null,
+  },
+  {
+    type: 'rectangle',
+    id: 2,
+    modelId: 52,
+    width: 30,
+    x1: 18412,
+    x2: 18492,
+    y1: 3128.653195488725,
+    y2: 3088.653195488725,
+    overlayId: 11,
+    height: 10,
+    value: -0.2137,
+    color: null,
+  },
+  {
+    type: 'rectangle',
+    id: 3,
+    modelId: 52,
+    width: 40,
+    x1: 18412,
+    x2: 18492,
+    y1: 3128.653195488725,
+    y2: 3088.653195488725,
+    overlayId: 11,
+    height: 10,
+    value: null,
+    color: { rgb: -65536, alpha: 0 },
+  },
+  {
+    type: 'line',
+    id: 66143,
+    modelId: 52,
+    x1: 4462.61826820353,
+    x2: 4571.99387254902,
+    y1: 7105.89040426431,
+    y2: 6979.823529411765,
+    width: 109.3756043454905,
+    height: 126.06687485254497,
+    value: null,
+    overlayId: 20,
+    color: null,
+  },
+  {
+    type: 'line',
+    id: 66144,
+    modelId: 52,
+    x1: 4454.850442288663,
+    x2: 4463.773636826477,
+    y1: 7068.434324866321,
+    y2: 7112.188429617157,
+    width: 8.923194537814197,
+    height: 43.75410475083663,
+    value: null,
+    overlayId: 20,
+    color: null,
+  },
+];
diff --git a/src/redux/root/query.selectors.ts b/src/redux/root/query.selectors.ts
index 98660410716f25c5e3f663f7f22cd7073667ceee..3088b0dacb0ae0051fb11a60a658af927aff4667 100644
--- a/src/redux/root/query.selectors.ts
+++ b/src/redux/root/query.selectors.ts
@@ -16,18 +16,20 @@ export const queryDataParamsSelector = createSelector(
     { modelId, backgroundId, position },
     activeOverlaysId,
   ): QueryDataParams => {
+    const joinedSearchValue = searchValue.join(';');
+    const shouldIncludeSearchValue = searchValue.length > ZERO && joinedSearchValue;
+
+    const shouldIncludeOverlaysId = activeOverlaysId.length > ZERO;
+
     const queryDataParams: QueryDataParams = {
-      searchValue: searchValue.join(';'),
       perfectMatch,
       modelId,
       backgroundId,
       ...position.last,
+      ...(shouldIncludeSearchValue ? { searchValue: joinedSearchValue } : {}),
+      ...(shouldIncludeOverlaysId ? { overlaysId: activeOverlaysId.join(',') } : {}),
     };
 
-    if (activeOverlaysId.length > ZERO) {
-      queryDataParams.overlaysId = activeOverlaysId.join(',');
-    }
-
     return queryDataParams;
   },
 );
diff --git a/src/types/models.ts b/src/types/models.ts
index d6603d0b9e00ef11e1b841428296a06647ca2a2e..1504094a6797307b81ec57522cdd627fe7d36c0f 100644
--- a/src/types/models.ts
+++ b/src/types/models.ts
@@ -8,7 +8,7 @@ import {
   compartmentPathwaySchema,
 } from '@/models/compartmentPathwaySchema';
 import { configurationOptionSchema } from '@/models/configurationOptionSchema';
-import { configurationSchema } from '@/models/configurationSchema';
+import { configurationSchema, formatSchema } from '@/models/configurationSchema';
 import { disease } from '@/models/disease';
 import { drugSchema } from '@/models/drugSchema';
 import { elementSearchResult, elementSearchResultType } from '@/models/elementSearchResult';
@@ -70,6 +70,7 @@ export type SessionValid = z.infer<typeof sessionSchemaValid>;
 export type Login = z.infer<typeof loginSchema>;
 export type ConfigurationOption = z.infer<typeof configurationOptionSchema>;
 export type Configuration = z.infer<typeof configurationSchema>;
+export type ConfigurationFormatSchema = z.infer<typeof formatSchema>;
 export type OverlayBioEntity = z.infer<typeof overlayBioEntitySchema>;
 export type OverlayElementWithReaction = z.infer<typeof overlayElementWithReactionSchema>;
 export type OverlayElementWithBioEntity = z.infer<typeof overlayElementWithBioEntitySchema>;
diff --git a/src/utils/convert/getHexStringColorFromRGBIntWithAlpha.test.ts b/src/utils/convert/getHexStringColorFromRGBIntWithAlpha.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b25bbe2aaa250963510220f32745b9f4ca3990b
--- /dev/null
+++ b/src/utils/convert/getHexStringColorFromRGBIntWithAlpha.test.ts
@@ -0,0 +1,17 @@
+import { getHexStringColorFromRGBIntWithAlpha } from './getHexStringColorFromRGBIntWithAlpha';
+
+const OPACITY_80 = 0.8;
+
+describe('getHexTricolorGradientColorWithAlpha ', () => {
+  it('should return the correct result with input with negative rgb integer', () => {
+    expect(getHexStringColorFromRGBIntWithAlpha({ rgbInt: -3342388, alpha: OPACITY_80 })).toEqual(
+      '#ccffcccc',
+    );
+  });
+
+  it('should return the correct result with input with positive rgb integer', () => {
+    expect(getHexStringColorFromRGBIntWithAlpha({ rgbInt: 57, alpha: OPACITY_80 })).toEqual(
+      '#000039cc',
+    );
+  });
+});
diff --git a/src/utils/convert/getHexStringColorFromRGBIntWithAlpha.ts b/src/utils/convert/getHexStringColorFromRGBIntWithAlpha.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1317bd89bb02372279f7fbafc1dc9dc28ca2b42f
--- /dev/null
+++ b/src/utils/convert/getHexStringColorFromRGBIntWithAlpha.ts
@@ -0,0 +1,16 @@
+import { convertDecimalToHexColor } from './convertDecimalToHex';
+import { addAlphaToHexString } from './addAlphaToHexString';
+
+type GetHexStringColorFromRGBIntWithAlphaProps = {
+  rgbInt: number;
+  alpha: number;
+};
+
+export const getHexStringColorFromRGBIntWithAlpha = ({
+  rgbInt,
+  alpha,
+}: GetHexStringColorFromRGBIntWithAlphaProps): string => {
+  const hexStringColor = convertDecimalToHexColor(rgbInt);
+  const hexStringColorWithAlpha = addAlphaToHexString(hexStringColor, alpha);
+  return hexStringColorWithAlpha;
+};