From 7ccfb04eed3110c2a0df5c42d05c01e11c0e3d46 Mon Sep 17 00:00:00 2001
From: alaskowski <alaskowski@ethz.ch>
Date: Mon, 19 Jun 2023 10:19:46 +0200
Subject: [PATCH] SSDM-13637: Added missing metadata tests for
 CreateExperimentTest and CreateExperimentTypeTest

---
 .../asapi/v3/CreateExperimentTest.java        | 30 +++++++++++++++++++
 .../asapi/v3/CreateExperimentTypeTest.java    | 18 +++++++++++
 2 files changed, 48 insertions(+)

diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java
index 67c1c6ad657..af439024ef2 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java
@@ -1011,6 +1011,36 @@ public class CreateExperimentTest extends AbstractExperimentTest
         assertEquals(experiment2.getProperties().size(), 2);
     }
 
+    @Test
+    public void testCreateWithMetaData()
+    {
+        // Given
+        String sessionToken = v3api.login(TEST_USER, PASSWORD);
+        PropertyTypePermId propertyType = createAPropertyType(sessionToken, DataType.BOOLEAN);
+        EntityTypePermId experimentType = createAnExperimentType(sessionToken, true, propertyType, PLATE_GEOMETRY);
+
+        ExperimentCreation creation = new ExperimentCreation();
+        creation.setCode("EXPERIMENT_WITH_SAMPLE_PROPERTY");
+        creation.setTypeId(experimentType);
+        creation.setProjectId(new ProjectIdentifier("/CISD/NEMO"));
+        creation.setProperty(PLATE_GEOMETRY.getPermId(), "384_WELLS_16X24");
+        creation.setBooleanProperty(propertyType.getPermId(), true);
+        creation.setMetaData(Map.of("key", "value"));
+
+        // When
+        List<ExperimentPermId> experimentIds = v3api.createExperiments(sessionToken, Arrays.asList(creation));
+
+        // Then
+        assertEquals(experimentIds.size(), 1);
+        ExperimentFetchOptions fetchOptions = new ExperimentFetchOptions();
+        fetchOptions.withProperties();
+        fetchOptions.withSampleProperties();
+        Experiment experiment2 = v3api.getExperiments(sessionToken, experimentIds, fetchOptions).get(experimentIds.get(0));
+        assertEquals(experiment2.getProperties().get(PLATE_GEOMETRY.getPermId()), "384_WELLS_16X24");
+        assertEquals(experiment2.getBooleanProperty(propertyType.getPermId()).booleanValue(), true);
+        assertEquals(experiment2.getMetaData(), Map.of("key", "value"));
+    }
+
     @Test(dataProvider = USER_ROLES_PROVIDER)
     public void testCreateWithDifferentRoles(RoleWithHierarchy role)
     {
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTypeTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTypeTest.java
index 0bd1b6aeff7..97d4924bfb4 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTypeTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTypeTest.java
@@ -15,9 +15,12 @@
  */
 package ch.ethz.sis.openbis.systemtest.asapi.v3;
 
+import static org.testng.Assert.assertEquals;
+
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 import org.testng.annotations.Test;
 
@@ -94,4 +97,19 @@ public class CreateExperimentTypeTest extends CreateEntityTypeTest<ExperimentTyp
                 "create-experiment-types  NEW_EXPERIMENT_TYPES('[ExperimentTypeCreation[code=LOG_TEST_1], ExperimentTypeCreation[code=LOG_TEST_2]]')");
     }
 
+    @Test
+    public void testCreateWithMetaData() {
+        String sessionToken = v3api.login(TEST_USER, PASSWORD);
+
+        ExperimentTypeCreation creation = new ExperimentTypeCreation();
+        creation.setCode("META_DATA_CODE_1");
+        creation.setMetaData(Map.of("key", "value"));
+
+        v3api.createExperimentTypes(sessionToken, Arrays.asList(creation));
+
+        ExperimentType type = getType(sessionToken, "META_DATA_CODE_1");
+
+        assertEquals(type.getMetaData(), Map.of("key", "value"));
+    }
+
 }
-- 
GitLab