From f834fec5a04481987d9cf61ca49d7f142ca27ee6 Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Tue, 22 Dec 2020 16:46:29 +0100
Subject: [PATCH] NG_UI : plugins evaluation : SSDM-10431 - automated tests

---
 .../common/form/EntityAutocompleterField.jsx  |   2 +-
 .../form/plugin/PluginFormEvaluateResults.jsx |   8 +-
 .../PluginFormComponentEvaluate.test.js       | 408 ++++++++++++++++++
 .../plugin/PluginFormComponentLoad.test.js    |  73 +++-
 .../wrapper/PluginFormButtonsWrapper.js       |  17 +-
 .../PluginFormEvaluateParametersWrapper.js    |  27 ++
 .../PluginFormEvaluateResultsWrapper.js       |  18 +
 .../form/plugin/wrapper/PluginFormWrapper.js  |  18 +
 .../srcTest/js/services/openbis/dto.js        |   4 +
 9 files changed, 563 insertions(+), 12 deletions(-)
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentEvaluate.test.js
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateParametersWrapper.js
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateResultsWrapper.js

diff --git a/openbis_ng_ui/src/js/components/common/form/EntityAutocompleterField.jsx b/openbis_ng_ui/src/js/components/common/form/EntityAutocompleterField.jsx
index 7a7133b4f21..d60a73f1658 100644
--- a/openbis_ng_ui/src/js/components/common/form/EntityAutocompleterField.jsx
+++ b/openbis_ng_ui/src/js/components/common/form/EntityAutocompleterField.jsx
@@ -347,7 +347,7 @@ class EntityAutocompleterField extends React.PureComponent {
 
   getOptionLabel(option) {
     if (option) {
-      return option.label
+      return option.label || ''
     } else {
       return ''
     }
diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormEvaluateResults.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormEvaluateResults.jsx
index 0e90a0e3404..70d86559a40 100644
--- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormEvaluateResults.jsx
+++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormEvaluateResults.jsx
@@ -50,11 +50,15 @@ class PluginFormEvaluateResults extends React.PureComponent {
     if (result) {
       if (plugin.pluginType === openbis.PluginType.DYNAMIC_PROPERTY) {
         return (
-          <Typography className={classes.result}>{result.value}</Typography>
+          <Typography className={classes.result} data-part='result'>
+            {result.value}
+          </Typography>
         )
       } else if (plugin.pluginType === openbis.PluginType.ENTITY_VALIDATION) {
         return (
-          <Typography className={classes.result}>{result.error}</Typography>
+          <Typography className={classes.result} data-part='result'>
+            {result.error}
+          </Typography>
         )
       } else {
         throw new Error('Unsupported pluginType: ' + plugin.pluginType)
diff --git a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentEvaluate.test.js b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentEvaluate.test.js
new file mode 100644
index 00000000000..5f73245a230
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentEvaluate.test.js
@@ -0,0 +1,408 @@
+import PluginFormComponentTest from '@srcTest/js/components/tools/form/plugin/PluginFormComponentTest.js'
+import PluginFormTestData from '@srcTest/js/components/tools/form/plugin/PluginFormTestData.js'
+import openbis from '@srcTest/js/services/openbis.js'
+
+let common = null
+
+beforeEach(() => {
+  common = new PluginFormComponentTest()
+  common.beforeEach()
+})
+
+describe(PluginFormComponentTest.SUITE, () => {
+  test('evaluate new DYNAMIC_PROPERTY', async () => {
+    await testEvaluateNew(openbis.PluginType.DYNAMIC_PROPERTY)
+  })
+  test('evaluate new ENTITY_VALIDATION', async () => {
+    await testEvaluateNew(openbis.PluginType.ENTITY_VALIDATION)
+  })
+  test('evaluate existing DYNAMIC_PROPERTY', async () => {
+    const { testDynamicPropertyJythonPlugin } = PluginFormTestData
+    await testEvaluateExisting(testDynamicPropertyJythonPlugin)
+  })
+  test('evaluate existing ENTITY_VALIDATION', async () => {
+    const { testEntityValidationJythonPlugin } = PluginFormTestData
+    await testEvaluateExisting(testEntityValidationJythonPlugin)
+  })
+})
+
+async function testEvaluateNew(pluginType) {
+  let result = null
+  let resultObject = null
+
+  if (pluginType === openbis.PluginType.DYNAMIC_PROPERTY) {
+    result = 'test value'
+    resultObject = new openbis.DynamicPropertyPluginEvaluationResult(result)
+  } else if (pluginType === openbis.PluginType.ENTITY_VALIDATION) {
+    result = 'test error'
+    resultObject = new openbis.EntityValidationPluginEvaluationResult(result)
+  }
+
+  common.facade.evaluatePlugin.mockReturnValue(Promise.resolve(resultObject))
+
+  const form = await common.mountNew(pluginType)
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: null
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: null,
+        enabled: true
+      },
+      entity: {
+        value: null,
+        enabled: false
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    }
+  })
+
+  form.getParameters().getEntityKind().change(openbis.EntityKind.SAMPLE)
+  await form.update()
+
+  form.getEvaluateParameters().getEntity().change({
+    entityKind: openbis.EntityKind.SAMPLE,
+    entityId: '/TEST_SPACE/TEST_SAMPLE'
+  })
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: openbis.EntityKind.SAMPLE
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: openbis.EntityKind.SAMPLE,
+        enabled: false
+      },
+      entity: {
+        value: {
+          entityKind: openbis.EntityKind.SAMPLE,
+          entityId: '/TEST_SPACE/TEST_SAMPLE'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    }
+  })
+
+  form.getParameters().getEntityKind().change(null)
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: null
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: openbis.EntityKind.SAMPLE,
+        enabled: true
+      },
+      entity: {
+        value: {
+          entityKind: openbis.EntityKind.SAMPLE,
+          entityId: '/TEST_SPACE/TEST_SAMPLE'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    }
+  })
+
+  form.getParameters().getEntityKind().change(openbis.EntityKind.EXPERIMENT)
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: openbis.EntityKind.EXPERIMENT
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: openbis.EntityKind.EXPERIMENT,
+        enabled: false
+      },
+      entity: {
+        value: null,
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    }
+  })
+
+  form.getEvaluateParameters().getEntity().change({
+    entityKind: openbis.EntityKind.EXPERIMENT,
+    entityId: '/TEST_SPACE/TEST_PROJECT/TEST_EXPERIMENT'
+  })
+  await form.update()
+
+  form.getButtons().getEvaluate().click()
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: openbis.EntityKind.EXPERIMENT
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: openbis.EntityKind.EXPERIMENT,
+        enabled: false
+      },
+      entity: {
+        value: {
+          entityKind: openbis.EntityKind.EXPERIMENT,
+          entityId: '/TEST_SPACE/TEST_PROJECT/TEST_EXPERIMENT'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: 'Result',
+      result: result
+    }
+  })
+}
+
+async function testEvaluateExisting(plugin) {
+  let result = null
+  let resultObject = null
+
+  if (plugin.pluginType === openbis.PluginType.DYNAMIC_PROPERTY) {
+    result = 'test value'
+    resultObject = new openbis.DynamicPropertyPluginEvaluationResult(result)
+  } else if (plugin.pluginType === openbis.PluginType.ENTITY_VALIDATION) {
+    result = 'test error'
+    resultObject = new openbis.EntityValidationPluginEvaluationResult(result)
+  }
+
+  common.facade.evaluatePlugin.mockReturnValue(Promise.resolve(resultObject))
+
+  const form = await common.mountExisting(plugin)
+
+  form.getEvaluateParameters().getEntity().change({
+    entityKind: plugin.getEntityKinds()[0],
+    entityId: 'TEST_ENTITY_ID'
+  })
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0]
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0],
+        enabled: false
+      },
+      entity: {
+        value: {
+          entityKind: plugin.getEntityKinds()[0],
+          entityId: 'TEST_ENTITY_ID'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    },
+    buttons: {
+      edit: {
+        enabled: true
+      },
+      evaluate: {
+        enabled: true
+      },
+      save: null,
+      cancel: null,
+      message: null
+    }
+  })
+
+  form.getButtons().getEvaluate().click()
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0]
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0],
+        enabled: false
+      },
+      entity: {
+        value: {
+          entityKind: plugin.getEntityKinds()[0],
+          entityId: 'TEST_ENTITY_ID'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: 'Result',
+      result: result
+    },
+    buttons: {
+      edit: {
+        enabled: true
+      },
+      evaluate: {
+        enabled: true
+      },
+      save: null,
+      cancel: null,
+      message: null
+    }
+  })
+
+  form.getButtons().getEdit().click()
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0]
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0],
+        enabled: false
+      },
+      entity: {
+        value: null,
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    },
+    buttons: {
+      save: {
+        enabled: true
+      },
+      cancel: {
+        enabled: true
+      },
+      evaluate: {
+        enabled: true
+      },
+      edit: null,
+      message: null
+    }
+  })
+
+  form.getEvaluateParameters().getEntity().change({
+    entityKind: plugin.getEntityKinds()[0],
+    entityId: 'TEST_ENTITY_ID_2'
+  })
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0]
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0],
+        enabled: false
+      },
+      entity: {
+        value: {
+          entityKind: plugin.getEntityKinds()[0],
+          entityId: 'TEST_ENTITY_ID_2'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    },
+    buttons: {
+      save: {
+        enabled: true
+      },
+      cancel: {
+        enabled: true
+      },
+      evaluate: {
+        enabled: true
+      },
+      edit: null,
+      message: null
+    }
+  })
+
+  form.getButtons().getEvaluate().click()
+  await form.update()
+
+  form.expectJSON({
+    parameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0]
+      }
+    },
+    evaluateParameters: {
+      entityKind: {
+        value: plugin.getEntityKinds()[0],
+        enabled: false
+      },
+      entity: {
+        value: {
+          entityKind: plugin.getEntityKinds()[0],
+          entityId: 'TEST_ENTITY_ID_2'
+        },
+        enabled: true
+      }
+    },
+    evaluateResults: {
+      title: 'Result',
+      result: result
+    },
+    buttons: {
+      save: {
+        enabled: true
+      },
+      cancel: {
+        enabled: true
+      },
+      evaluate: {
+        enabled: true
+      },
+      edit: null,
+      message: null
+    }
+  })
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentLoad.test.js b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentLoad.test.js
index c8ce4424214..16577a1b680 100644
--- a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentLoad.test.js
+++ b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/PluginFormComponentLoad.test.js
@@ -74,6 +74,31 @@ async function testLoadNew(pluginType) {
         mode: 'edit'
       }
     },
+    evaluateParameters: {
+      title: 'Tester',
+      entityKind: {
+        label: 'Entity Kind',
+        value: null,
+        options: [
+          { value: 'MATERIAL' },
+          { value: 'EXPERIMENT' },
+          { value: 'SAMPLE' },
+          { value: 'DATA_SET' }
+        ],
+        enabled: true,
+        mode: 'edit'
+      },
+      entity: {
+        label: 'Entity',
+        value: null,
+        enabled: false,
+        mode: 'edit'
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    },
     buttons: {
       save: {
         enabled: true
@@ -106,10 +131,7 @@ async function testLoadExistingJython(plugin) {
       },
       entityKind: {
         label: 'Entity Kind',
-        value:
-          plugin.getEntityKinds().length === 1
-            ? plugin.getEntityKinds()[0]
-            : null,
+        value: plugin.getEntityKinds()[0],
         options: [
           { value: 'MATERIAL' },
           { value: 'EXPERIMENT' },
@@ -124,6 +146,25 @@ async function testLoadExistingJython(plugin) {
         mode: 'view'
       }
     },
+    evaluateParameters: {
+      title: 'Tester',
+      entityKind: {
+        label: 'Entity Kind',
+        value: plugin.getEntityKinds()[0],
+        enabled: false,
+        mode: 'edit'
+      },
+      entity: {
+        label: 'Entity',
+        value: null,
+        enabled: true,
+        mode: 'edit'
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    },
     buttons: {
       edit: {
         enabled: true
@@ -157,10 +198,7 @@ async function testLoadExistingJython(plugin) {
       },
       entityKind: {
         label: 'Entity Kind',
-        value:
-          plugin.getEntityKinds().length === 1
-            ? plugin.getEntityKinds()[0]
-            : null,
+        value: plugin.getEntityKinds()[0],
         options: [
           { value: 'MATERIAL' },
           { value: 'EXPERIMENT' },
@@ -177,6 +215,25 @@ async function testLoadExistingJython(plugin) {
         mode: 'edit'
       }
     },
+    evaluateParameters: {
+      title: 'Tester',
+      entityKind: {
+        label: 'Entity Kind',
+        value: plugin.getEntityKinds()[0],
+        enabled: false,
+        mode: 'edit'
+      },
+      entity: {
+        label: 'Entity',
+        value: null,
+        enabled: true,
+        mode: 'edit'
+      }
+    },
+    evaluateResults: {
+      title: null,
+      result: null
+    },
     buttons: {
       save: {
         enabled: true
diff --git a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormButtonsWrapper.js b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormButtonsWrapper.js
index 6c87b077849..46457e29930 100644
--- a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormButtonsWrapper.js
+++ b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormButtonsWrapper.js
@@ -1,3 +1,18 @@
+import Button from '@src/js/components/common/form/Button.jsx'
+import ButtonWrapper from '@srcTest/js/components/common/form/wrapper/ButtonWrapper.js'
 import PageButtonsWrapper from '@srcTest/js/components/common/page/wrapper/PageButtonsWrapper.js'
 
-export default class PluginFormButtonsWrapper extends PageButtonsWrapper {}
+export default class PluginFormButtonsWrapper extends PageButtonsWrapper {
+  getEvaluate() {
+    return new ButtonWrapper(
+      this.findComponent(Button).filter({ name: 'evaluate' })
+    )
+  }
+
+  toJSON() {
+    return {
+      ...super.toJSON(),
+      evaluate: this.getEvaluate().toJSON()
+    }
+  }
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateParametersWrapper.js b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateParametersWrapper.js
new file mode 100644
index 00000000000..e53eb16fe71
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateParametersWrapper.js
@@ -0,0 +1,27 @@
+import SelectField from '@src/js/components/common/form/SelectField.jsx'
+import SelectFieldWrapper from '@srcTest/js/components/common/form/wrapper/SelectFieldWrapper.js'
+import AutocompleterField from '@src/js/components/common/form/AutocompleterField.jsx'
+import AutocompleterFieldWrapper from '@srcTest/js/components/common/form/wrapper/AutocompleterFieldWrapper.js'
+import PageParametersPanelWrapper from '@srcTest/js/components/common/page/wrapper/PageParametersPanelWrapper.js'
+
+export default class PluginFormEvaluateParametersWrapper extends PageParametersPanelWrapper {
+  getEntityKind() {
+    return new SelectFieldWrapper(
+      this.findComponent(SelectField).filter({ name: 'entityKind' })
+    )
+  }
+
+  getEntity() {
+    return new AutocompleterFieldWrapper(
+      this.findComponent(AutocompleterField).filter({ name: 'entity' })
+    )
+  }
+
+  toJSON() {
+    return {
+      ...super.toJSON(),
+      entityKind: this.getEntityKind().toJSON(),
+      entity: this.getEntity().toJSON()
+    }
+  }
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateResultsWrapper.js b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateResultsWrapper.js
new file mode 100644
index 00000000000..22e7ab4803b
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateResultsWrapper.js
@@ -0,0 +1,18 @@
+import Typography from '@material-ui/core/Typography'
+import PageParametersPanelWrapper from '@srcTest/js/components/common/page/wrapper/PageParametersPanelWrapper.js'
+
+export default class QueryFormExecuteResultsWrapper extends PageParametersPanelWrapper {
+  getResult() {
+    const result = this.findComponent(Typography).filter({
+      'data-part': 'result'
+    })
+    return result.exists() ? result.text() : null
+  }
+
+  toJSON() {
+    return {
+      ...super.toJSON(),
+      result: this.getResult()
+    }
+  }
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormWrapper.js b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormWrapper.js
index 74f2dc9e7ee..1d5010372cd 100644
--- a/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormWrapper.js
+++ b/openbis_ng_ui/srcTest/js/components/tools/form/plugin/wrapper/PluginFormWrapper.js
@@ -5,6 +5,10 @@ import PluginFormParameters from '@src/js/components/tools/form/plugin/PluginFor
 import PluginFormParametersWrapper from '@srcTest/js/components/tools/form/plugin/wrapper/PluginFormParametersWrapper.js'
 import PluginFormButtons from '@src/js/components/tools/form/plugin/PluginFormButtons.jsx'
 import PluginFormButtonsWrapper from '@srcTest/js/components/tools/form/plugin/wrapper/PluginFormButtonsWrapper.js'
+import PluginFormEvaluateParameters from '@src/js/components/tools/form/plugin/PluginFormEvaluateParameters.jsx'
+import PluginFormEvaluateParametersWrapper from '@srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateParametersWrapper.js'
+import PluginFormEvaluateResults from '@src/js/components/tools/form/plugin/PluginFormEvaluateResults.jsx'
+import PluginFormEvaluateResultsWrapper from '@srcTest/js/components/tools/form/plugin/wrapper/PluginFormEvaluateResultsWrapper.js'
 
 export default class PluginFormWrapper extends BaseWrapper {
   getScript() {
@@ -17,6 +21,18 @@ export default class PluginFormWrapper extends BaseWrapper {
     )
   }
 
+  getEvaluateParameters() {
+    return new PluginFormEvaluateParametersWrapper(
+      this.findComponent(PluginFormEvaluateParameters)
+    )
+  }
+
+  getEvaluateResults() {
+    return new PluginFormEvaluateResultsWrapper(
+      this.findComponent(PluginFormEvaluateResults)
+    )
+  }
+
   getButtons() {
     return new PluginFormButtonsWrapper(this.findComponent(PluginFormButtons))
   }
@@ -25,6 +41,8 @@ export default class PluginFormWrapper extends BaseWrapper {
     return {
       script: this.getScript().toJSON(),
       parameters: this.getParameters().toJSON(),
+      evaluateParameters: this.getEvaluateParameters().toJSON(),
+      evaluateResults: this.getEvaluateResults().toJSON(),
       buttons: this.getButtons().toJSON()
     }
   }
diff --git a/openbis_ng_ui/srcTest/js/services/openbis/dto.js b/openbis_ng_ui/srcTest/js/services/openbis/dto.js
index 4292a981a5b..f516b9c772d 100644
--- a/openbis_ng_ui/srcTest/js/services/openbis/dto.js
+++ b/openbis_ng_ui/srcTest/js/services/openbis/dto.js
@@ -40,6 +40,8 @@ import DeleteRoleAssignmentsOperation from 'as/dto/roleassignment/delete/DeleteR
 import DeleteSampleTypesOperation from 'as/dto/sample/delete/DeleteSampleTypesOperation'
 import DeleteVocabulariesOperation from 'as/dto/vocabulary/delete/DeleteVocabulariesOperation'
 import DeleteVocabularyTermsOperation from 'as/dto/vocabulary/delete/DeleteVocabularyTermsOperation'
+import DynamicPropertyPluginEvaluationResult from 'as/dto/plugin/evaluate/DynamicPropertyPluginEvaluationResult'
+import EntityValidationPluginEvaluationResult from 'as/dto/plugin/evaluate/EntityValidationPluginEvaluationResult'
 import EntityKind from 'as/dto/entitytype/EntityKind'
 import EntityTypePermId from 'as/dto/entitytype/id/EntityTypePermId'
 import ExperimentFetchOptions from 'as/dto/experiment/fetchoptions/ExperimentFetchOptions'
@@ -206,6 +208,8 @@ const dto = {
   DeleteSampleTypesOperation,
   DeleteVocabulariesOperation,
   DeleteVocabularyTermsOperation,
+  DynamicPropertyPluginEvaluationResult,
+  EntityValidationPluginEvaluationResult,
   EntityKind,
   EntityTypePermId,
   ExperimentFetchOptions,
-- 
GitLab