From 051caac2a9851af1e40c80afa25b4089b9a4c4aa Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Thu, 12 Nov 2020 18:00:03 +0100
Subject: [PATCH] NG_UI : plugins : SSDM-10401 - tools browser tests

---
 .../ToolBrowserComponentFilter.test.js        | 63 +++++++++++++
 .../browser/ToolBrowserComponentLoad.test.js  | 29 ++++++
 .../ToolBrowserComponentOpenClose.test.js     | 90 +++++++++++++++++++
 .../tools/browser/ToolBrowserComponentTest.js | 15 ++++
 .../tools/browser/ToolBrowserTestData.js      | 40 +++++++++
 5 files changed, 237 insertions(+)
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentFilter.test.js
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentLoad.test.js
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentOpenClose.test.js
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentTest.js
 create mode 100644 openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserTestData.js

diff --git a/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentFilter.test.js b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentFilter.test.js
new file mode 100644
index 00000000000..5c413609eb1
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentFilter.test.js
@@ -0,0 +1,63 @@
+import ToolBrowserComponentTest from '@srcTest/js/components/tools/browser/ToolBrowserComponentTest.js'
+import ToolBrowserTestData from '@srcTest/js/components/tools/browser/ToolBrowserTestData.js'
+import openbis from '@srcTest/js/services/openbis.js'
+
+let common = null
+
+beforeEach(() => {
+  common = new ToolBrowserComponentTest()
+  common.beforeEach()
+})
+
+describe(ToolBrowserComponentTest.SUITE, () => {
+  test('filter', testFilter)
+})
+
+async function testFilter() {
+  const {
+    testDynamicPropertyJythonPlugin,
+    testDynamicPropertyPredeployedPlugin,
+    testManagedPropertyJythonPlugin,
+    testEntityValidationJythonPlugin
+  } = ToolBrowserTestData
+
+  openbis.mockSearchPlugins([
+    testDynamicPropertyJythonPlugin,
+    testDynamicPropertyPredeployedPlugin,
+    testManagedPropertyJythonPlugin,
+    testEntityValidationJythonPlugin
+  ])
+
+  const browser = await common.mount()
+
+  browser
+    .getFilter()
+    .change(testEntityValidationJythonPlugin.name.toUpperCase())
+  await browser.update()
+
+  browser.expectJSON({
+    filter: {
+      value: testEntityValidationJythonPlugin.name.toUpperCase()
+    },
+    nodes: [
+      { level: 0, text: 'Entity Validation Plugins' },
+      { level: 1, text: testEntityValidationJythonPlugin.name }
+    ]
+  })
+
+  browser.getFilter().getClearIcon().click()
+  await browser.update()
+
+  browser.expectJSON({
+    filter: {
+      value: null
+    },
+    nodes: [
+      { level: 0, text: 'Dynamic Property Plugins' },
+      { level: 1, text: testDynamicPropertyJythonPlugin.name },
+      { level: 1, text: testDynamicPropertyPredeployedPlugin.name },
+      { level: 0, text: 'Entity Validation Plugins' },
+      { level: 1, text: testEntityValidationJythonPlugin.name }
+    ]
+  })
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentLoad.test.js b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentLoad.test.js
new file mode 100644
index 00000000000..ada84839f76
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentLoad.test.js
@@ -0,0 +1,29 @@
+import ToolBrowserComponentTest from '@srcTest/js/components/tools/browser/ToolBrowserComponentTest.js'
+import openbis from '@srcTest/js/services/openbis.js'
+
+let common = null
+
+beforeEach(() => {
+  common = new ToolBrowserComponentTest()
+  common.beforeEach()
+})
+
+describe(ToolBrowserComponentTest.SUITE, () => {
+  test('load', testLoad)
+})
+
+async function testLoad() {
+  openbis.mockSearchPlugins([])
+
+  const browser = await common.mount()
+
+  browser.expectJSON({
+    filter: {
+      value: null
+    },
+    nodes: [
+      { level: 0, text: 'Dynamic Property Plugins' },
+      { level: 0, text: 'Entity Validation Plugins' }
+    ]
+  })
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentOpenClose.test.js b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentOpenClose.test.js
new file mode 100644
index 00000000000..ead4b607a7f
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentOpenClose.test.js
@@ -0,0 +1,90 @@
+import ToolBrowserComponentTest from '@srcTest/js/components/tools/browser/ToolBrowserComponentTest.js'
+import ToolBrowserTestData from '@srcTest/js/components/tools/browser/ToolBrowserTestData.js'
+import openbis from '@srcTest/js/services/openbis.js'
+
+let common = null
+
+beforeEach(() => {
+  common = new ToolBrowserComponentTest()
+  common.beforeEach()
+})
+
+describe(ToolBrowserComponentTest.SUITE, () => {
+  test('open/close', testOpenClose)
+})
+
+async function testOpenClose() {
+  const {
+    testDynamicPropertyJythonPlugin,
+    testDynamicPropertyPredeployedPlugin,
+    testManagedPropertyJythonPlugin,
+    testEntityValidationJythonPlugin
+  } = ToolBrowserTestData
+
+  openbis.mockSearchPlugins([
+    testDynamicPropertyJythonPlugin,
+    testDynamicPropertyPredeployedPlugin,
+    testManagedPropertyJythonPlugin,
+    testEntityValidationJythonPlugin
+  ])
+
+  const browser = await common.mount()
+
+  browser.getNodes()[0].getIcon().click()
+  await browser.update()
+
+  browser.expectJSON({
+    filter: {
+      value: null
+    },
+    nodes: [
+      { level: 0, text: 'Dynamic Property Plugins' },
+      { level: 1, text: testDynamicPropertyJythonPlugin.name },
+      { level: 1, text: testDynamicPropertyPredeployedPlugin.name },
+      { level: 0, text: 'Entity Validation Plugins' }
+    ]
+  })
+
+  browser.getNodes()[3].getIcon().click()
+  await browser.update()
+
+  browser.expectJSON({
+    filter: {
+      value: null
+    },
+    nodes: [
+      { level: 0, text: 'Dynamic Property Plugins' },
+      { level: 1, text: testDynamicPropertyJythonPlugin.name },
+      { level: 1, text: testDynamicPropertyPredeployedPlugin.name },
+      { level: 0, text: 'Entity Validation Plugins' },
+      { level: 1, text: testEntityValidationJythonPlugin.name }
+    ]
+  })
+
+  browser.getNodes()[0].getIcon().click()
+  await browser.update()
+
+  browser.expectJSON({
+    filter: {
+      value: null
+    },
+    nodes: [
+      { level: 0, text: 'Dynamic Property Plugins' },
+      { level: 0, text: 'Entity Validation Plugins' },
+      { level: 1, text: testEntityValidationJythonPlugin.name }
+    ]
+  })
+
+  browser.getNodes()[1].getIcon().click()
+  await browser.update()
+
+  browser.expectJSON({
+    filter: {
+      value: null
+    },
+    nodes: [
+      { level: 0, text: 'Dynamic Property Plugins' },
+      { level: 0, text: 'Entity Validation Plugins' }
+    ]
+  })
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentTest.js b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentTest.js
new file mode 100644
index 00000000000..9ed62735c5f
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserComponentTest.js
@@ -0,0 +1,15 @@
+import React from 'react'
+import ComponentTest from '@srcTest/js/components/common/ComponentTest.js'
+import BrowserWrapper from '@srcTest/js/components/common/browser/wrapper/BrowserWrapper.js'
+import ToolBrowser from '@src/js/components/tools/browser/ToolBrowser.jsx'
+
+export default class ToolBrowserComponentTest extends ComponentTest {
+  static SUITE = 'ToolBrowserComponent'
+
+  constructor() {
+    super(
+      () => <ToolBrowser />,
+      wrapper => new BrowserWrapper(wrapper)
+    )
+  }
+}
diff --git a/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserTestData.js b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserTestData.js
new file mode 100644
index 00000000000..9d477ad6d80
--- /dev/null
+++ b/openbis_ng_ui/srcTest/js/components/tools/browser/ToolBrowserTestData.js
@@ -0,0 +1,40 @@
+import openbis from '@srcTest/js/services/openbis.js'
+
+const testDynamicPropertyJythonPlugin = new openbis.Plugin()
+testDynamicPropertyJythonPlugin.setName('TEST_DYNAMIC_PROPERTY_JYTHON')
+testDynamicPropertyJythonPlugin.setPluginKind(openbis.PluginKind.JYTHON)
+testDynamicPropertyJythonPlugin.setPluginType(
+  openbis.PluginType.DYNAMIC_PROPERTY
+)
+
+const testDynamicPropertyPredeployedPlugin = new openbis.Plugin()
+testDynamicPropertyPredeployedPlugin.setName(
+  'TEST_DYNAMIC_PROPERTY_PREDEPLOYED'
+)
+testDynamicPropertyPredeployedPlugin.setPluginKind(
+  openbis.PluginKind.PREDEPLOYED
+)
+testDynamicPropertyPredeployedPlugin.setPluginType(
+  openbis.PluginType.DYNAMIC_PROPERTY
+)
+
+const testManagedPropertyJythonPlugin = new openbis.Plugin()
+testManagedPropertyJythonPlugin.setName('TEST_MANAGED_PROPERTY_JYTHON')
+testManagedPropertyJythonPlugin.setPluginKind(openbis.PluginKind.JYTHON)
+testManagedPropertyJythonPlugin.setPluginType(
+  openbis.PluginType.MANAGED_PROPERTY
+)
+
+const testEntityValidationJythonPlugin = new openbis.Plugin()
+testEntityValidationJythonPlugin.setName('TEST_ENTITY_VALIDATION_JYTHON')
+testEntityValidationJythonPlugin.setPluginKind(openbis.PluginKind.JYTHON)
+testEntityValidationJythonPlugin.setPluginType(
+  openbis.PluginType.ENTITY_VALIDATION
+)
+
+export default {
+  testDynamicPropertyJythonPlugin,
+  testDynamicPropertyPredeployedPlugin,
+  testManagedPropertyJythonPlugin,
+  testEntityValidationJythonPlugin
+}
-- 
GitLab