diff --git a/api-openbis-javascript/src/v3/openbis.js b/api-openbis-javascript/src/v3/openbis.js index 1be2c4762b2bfc0a0eab3b857bd9aa61ac7731a8..fa10067c89bf56c87b42deec2e9d09ca6555fdf3 100644 --- a/api-openbis-javascript/src/v3/openbis.js +++ b/api-openbis-javascript/src/v3/openbis.js @@ -2412,7 +2412,12 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria this.getDataStoreFacade = function() { var dataStoreCodes = []; for (var i = 0; i < arguments.length; i++) { - dataStoreCodes.push(arguments[i]); + var argument = arguments[i] + if(Array.isArray(argument)) { + Array.prototype.push.apply(dataStoreCodes, argument) + } else { + dataStoreCodes.push(argument); + } } return new dataStoreFacade(this, dataStoreCodes); } diff --git a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISExtension.java b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISExtension.java index 2035b9ce79d1433ec3ba340f84fc22528eaeaf20..808cf23d978442ac335676f16c65aab535b6b5cf 100644 --- a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISExtension.java +++ b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISExtension.java @@ -286,14 +286,7 @@ public class OpenBISExtension extends Extension } TsType tsMethodParameterType = resolveType(processingContext, tsBean, methodParameter.getParameterizedType()); - - if (method.isVarArgs() && methodParameterIndex == method.getParameters().length - 1) - { - tsMethodParameters.add(new TsParameterModel("..." + methodParameter.getName(), tsMethodParameterType)); - } else - { - tsMethodParameters.add(new TsParameterModel(methodParameter.getName(), tsMethodParameterType)); - } + tsMethodParameters.add(new TsParameterModel(methodParameter.getName(), tsMethodParameterType)); } TsType tsMethodReturnType = resolveType(processingContext, tsBean, method.getGenericReturnType()); diff --git a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java index 889f87bb7672cc6c02bdfb7352beafffd4062a94..6aacab7c077ffc1880f4037f7ff5b72a87f073af 100644 --- a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java +++ b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java @@ -267,7 +267,7 @@ public class OpenBISJavaScriptFacade implements IApplicationServerApi } @TypeScriptMethod(sessionToken = false, async = false) - public OpenBISJavaScriptDSSFacade getDataStoreFacade(String... dataStoreCodes){ + public OpenBISJavaScriptDSSFacade getDataStoreFacade(String[] dataStoreCodes){ return null; } diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/main.js b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/main.js index 045abf8c386502889b373a9464041dcad20cb825..50d2c7db1721476585b4c4fa36a0e7f66db7b28e 100644 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/main.js +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/main.js @@ -2,7 +2,7 @@ define([ "test-compiled/test-login", "test/test-jsVSjava", "test-compiled/test-create", - "test/test-update", + "test-compiled/test-update", "test-compiled/test-search", "test/test-freezing", diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.ts b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.ts index cb290fd81f20743d20dcb3f7afe0410d4d43600b..969775c2e7400e4b26c1c3c0b0a3605ae3d557a3 100644 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.ts +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.ts @@ -798,7 +798,7 @@ exports.default = new Promise((resolve) => { f2.setFileLength(42) f2.setChecksumCRC32(123456) creation.setFileMetadata([f1, f2]) - return facade.getDataStoreFacade("DSS1", "DSS2").createDataSets([creation]) + return facade.getDataStoreFacade(["DSS1", "DSS2"]).createDataSets([creation]) }) }) } @@ -816,7 +816,7 @@ exports.default = new Promise((resolve) => { var criteria = new dtos.DataSetFileSearchCriteria() criteria.withDataSet().withCode().thatEquals(dataSet.getCode()) facade - .getDataStoreFacade("DSS1") + .getDataStoreFacade(["DSS1"]) .searchFiles(criteria, c.createDataSetFileFetchOptions()) .then(function (result) { var files = result.getObjects() @@ -1530,7 +1530,7 @@ exports.default = new Promise((resolve) => { '------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="file"; filename="filePath/file2.txt"\r\nContent-Type: text/plain\r\n\r\n\r\ncontent2\r\n' + "------WebKitFormBoundary7MA4YWxkTrZu0gW--" - var dataStoreFacade = facade.getDataStoreFacade("DSS1") + var dataStoreFacade = facade.getDataStoreFacade(["DSS1"]) return dataStoreFacade.createDataSetUpload("UNKNOWN").then(function (upload) { return $.ajax({ @@ -1557,7 +1557,7 @@ exports.default = new Promise((resolve) => { var fCheck = function (dataSet: openbis.DataSet, facade: openbis.openbis) { return c.waitUntilIndexed(facade, dataSet.getCode(), 10000).then(function () { - var dataStoreFacade = facade.getDataStoreFacade("DSS1") + var dataStoreFacade = facade.getDataStoreFacade(["DSS1"]) var criteria = new dtos.DataSetFileSearchCriteria() criteria.withDataSet().withCode().thatEquals(dataSet.getCode()) diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.ts b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.ts index 5bdcf28f8e3ff87aaf6ff62903c05a3216b5d490..360be4e5d51d5e214bde956e8454e814e59ff037 100644 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.ts +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.ts @@ -2709,7 +2709,7 @@ exports.default = new Promise((resolve) => { var fSearch = function (facade: openbis.openbis) { return facade - .getDataStoreFacade("I_DONT_EXIST", "ME_NEITHER") + .getDataStoreFacade(["I_DONT_EXIST", "ME_NEITHER"]) .searchFiles(new dtos.DataSetFileSearchCriteria(), c.createDataSetFileFetchOptions()) } @@ -2733,7 +2733,7 @@ exports.default = new Promise((resolve) => { // at DSS2 dataSetCriteria.withCode().thatEquals("20130415093804724-403") - return facade.getDataStoreFacade("DSS1").searchFiles(criteria, c.createDataSetFileFetchOptions()) + return facade.getDataStoreFacade(["DSS1"]).searchFiles(criteria, c.createDataSetFileFetchOptions()) } var fCheck = function (facade: openbis.openbis, files: openbis.DataSetFile[]) { @@ -2761,7 +2761,7 @@ exports.default = new Promise((resolve) => { // at DSS2 dataSetCriteria.withCode().thatEquals("20130415093804724-403") - return facade.getDataStoreFacade("DSS1", "DSS2").searchFiles(criteria, c.createDataSetFileFetchOptions()) + return facade.getDataStoreFacade(["DSS1", "DSS2"]).searchFiles(criteria, c.createDataSetFileFetchOptions()) } var fCheck = function (facade: openbis.openbis, files: openbis.DataSetFile[]) { diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-update.js b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-update.js deleted file mode 100644 index c343c1289891f63f8a4e4abe4e8c1d4c12bbf254..0000000000000000000000000000000000000000 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-update.js +++ /dev/null @@ -1,1791 +0,0 @@ -define([ 'jquery', 'underscore', 'openbis', 'test/openbis-execute-operations', 'test/common', 'test/dtos' ], function($, _, openbis, openbisExecuteOperations, common, dtos) { - var executeModule = function(moduleName, facade, dtos) { - QUnit.module(moduleName); - - var testUpdate = function(c, fCreate, fUpdate, fFind, fCheck, fCheckError) { - c.start(); - - var ctx = { - facade : null, - permIds : null - }; - c.login(facade).then(function() { - ctx.facade = facade; - return fCreate(facade) - }).then(function(permIds) { - ctx.permIds = permIds; - c.assertTrue(permIds != null && permIds.length == 1, "Entity was created"); - return fFind(ctx.facade, permIds[0]) - }).then(function(entity) { - c.assertNotNull(entity, "Entity can be found"); - return fUpdate(ctx.facade, ctx.permIds[0]) - }).then(function() { - c.ok("Entity was updated"); - return fFind(ctx.facade, ctx.permIds[0]) - }).then(function(entity) { - if (fCheck) { - fCheck(entity); - } - c.finish(); - }).fail(function(error) { - if (fCheckError) { - fCheckError(error.message, ctx.permIds[0]); - } else { - c.fail(error.message); - } - c.finish(); - }); - } - - QUnit.test("updateSpaces()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SPACE"); - - var fCreate = function(facade) { - var creation = new dtos.SpaceCreation(); - creation.setCode(code); - creation.setDescription("test description"); - return facade.createSpaces([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SpaceUpdate(); - update.setSpaceId(permId); - update.setDescription("test description 2"); - return facade.updateSpaces([ update ]); - } - - var fCheck = function(space) { - c.assertEqual(space.getCode(), code, "Code"); - c.assertEqual(space.getDescription(), "test description 2", "Description"); - } - - testUpdate(c, fCreate, fUpdate, c.findSpace, fCheck); - }); - - QUnit.test("updateProjects() added attachments", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("PROJECT"); - - var fCreate = function(facade) { - var projectCreation = new dtos.ProjectCreation(); - projectCreation.setSpaceId(new dtos.SpacePermId("TEST")); - projectCreation.setCode(code); - projectCreation.setDescription("JS test project"); - return facade.createProjects([ projectCreation ]); - } - - var fUpdate = function(facade, permId) { - var projectUpdate = new dtos.ProjectUpdate(); - projectUpdate.setProjectId(permId); - projectUpdate.setSpaceId(new dtos.SpacePermId("PLATONIC")); - attachmentCreation = new dtos.AttachmentCreation(); - attachmentCreation.setFileName("test_file"); - attachmentCreation.setTitle("test_title"); - attachmentCreation.setDescription("test_description"); - attachmentCreation.setContent(btoa("hello world")); - projectUpdate.getAttachments().add([ attachmentCreation ]); - return facade.updateProjects([ projectUpdate ]); - } - - var fCheck = function(project) { - c.assertEqual(project.getCode(), code, "Project code"); - c.assertEqual(project.getSpace().getCode(), "PLATONIC", "Space code"); - c.assertEqual(project.getDescription(), "JS test project", "Description"); - var attachments = project.getAttachments(); - c.assertEqual(attachments[0].fileName, "test_file", "Attachment file name"); - c.assertEqual(attachments[0].title, "test_title", "Attachment title"); - c.assertEqual(attachments[0].description, "test_description", "Attachment description"); - c.assertEqual(atob(attachments[0].content), "hello world", "Attachment content"); - c.assertEqual(attachments.length, 1, "Number of attachments"); - } - - testUpdate(c, fCreate, fUpdate, c.findProject, fCheck); - }); - - QUnit.test("updateProjects() changed attributes", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("PROJECT"); - - var fCreate = function(facade) { - var projectCreation = new dtos.ProjectCreation(); - projectCreation.setSpaceId(new dtos.SpacePermId("TEST")); - projectCreation.setCode(code); - projectCreation.setDescription("JS test project"); - return facade.createProjects([ projectCreation ]); - } - - var fUpdate = function(facade, permId) { - var projectUpdate = new dtos.ProjectUpdate(); - projectUpdate.setProjectId(permId); - projectUpdate.setDescription("test_description"); - return facade.updateProjects([ projectUpdate ]); - } - - var fCheck = function(project) { - c.assertEqual(project.getCode(), code, "Project code"); - c.assertEqual(project.getSpace().getCode(), "TEST", "Space code"); - c.assertEqual(project.getDescription(), "test_description", "Description"); - } - - testUpdate(c, fCreate, fUpdate, c.findProject, fCheck); - }); - - QUnit.test("updateProjects() removed space", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("PROJECT"); - - var fCreate = function(facade) { - var projectCreation = new dtos.ProjectCreation(); - projectCreation.setSpaceId(new dtos.SpacePermId("TEST")); - projectCreation.setCode(code); - projectCreation.setDescription("JS test project"); - return facade.createProjects([ projectCreation ]); - } - - var fUpdate = function(facade, permId) { - var projectUpdate = new dtos.ProjectUpdate(); - projectUpdate.setProjectId(permId); - projectUpdate.setSpaceId(null); - return facade.updateProjects([ projectUpdate ]); - } - - var fCheckError = function(error, permId) { - c.assertContains(error, "Space id cannot be null", "Error"); - } - - testUpdate(c, fCreate, fUpdate, c.findProject, null, fCheckError); - }); - - QUnit.test("updateExperimentTypes()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("EXPERIMENT_TYPE"); - - var fCreate = function(facade) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setInitialValueForExistingEntities("initial value"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - - var creation = new dtos.ExperimentTypeCreation(); - creation.setCode(code); - creation.setDescription("a new description"); - creation.setPropertyAssignments([ assignmentCreation ]); - creation.setMetaData({"experiment_type_update":"old_value", "experiment_type_delete":"del_value"}); - - return facade.createExperimentTypes([ creation ]); - } - - var fUpdate = function(facade, permId) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section 2"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("1.0"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - var update = new dtos.ExperimentTypeUpdate(); - update.setTypeId(permId); - update.setDescription("another new description"); - update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - update.getPropertyAssignments().set([ assignmentCreation ]); - update.getMetaData().put("experiment_type_update", "new_value"); - update.getMetaData().add({"experiment_type_add":"add_value"}); - update.getMetaData().remove("experiment_type_delete"); - return facade.updateExperimentTypes([ update ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "another new description", "Description"); - - c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count"); - - var assignment = type.getPropertyAssignments()[0]; - - c.assertEqual(assignment.getSection(), "test section 2", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code"); - c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory"); - c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView"); - c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms"); - - var metaData = type.getMetaData(); - c.assertEqual(metaData["experiment_type_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["experiment_type_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["experiment_type_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findExperimentType, fCheck); - }); - - QUnit.test("updateExperiments() changed attributes + added tag + added attachment", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var experimentCreation = new dtos.ExperimentCreation(); - experimentCreation.setCode(code); - experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")); - experimentCreation.setProperty("EXPERIMENT_DESIGN", "EXPRESSION"); - experimentCreation.setTagIds([ new dtos.TagCode("CREATE_JSON_TAG") ]); - experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - experimentCreation.setMetaData({"experiment_update":"old_value", "experiment_delete":"del_value"}); - return facade.createExperiments([ experimentCreation ]); - } - - var fUpdate = function(facade, permId) { - var experimentUpdate = new dtos.ExperimentUpdate(); - experimentUpdate.setExperimentId(permId); - experimentUpdate.setProjectId(new dtos.ProjectIdentifier("/PLATONIC/SCREENING-EXAMPLES")); - experimentUpdate.getTagIds().add(new dtos.TagCode("CREATE_ANOTHER_JSON_TAG")); - attachmentCreation = new dtos.AttachmentCreation(); - attachmentCreation.setFileName("test_file"); - attachmentCreation.setTitle("test_title"); - attachmentCreation.setDescription("test_description"); - attachmentCreation.setContent(btoa("hello world")); - experimentUpdate.getAttachments().add([ attachmentCreation ]); - experimentUpdate.getMetaData().put("experiment_update", "new_value"); - experimentUpdate.getMetaData().add({"experiment_add":"add_value"}); - experimentUpdate.getMetaData().remove("experiment_delete"); - return facade.updateExperiments([ experimentUpdate ]); - } - - var fCheck = function(experiment) { - c.assertEqual(experiment.getCode(), code, "Experiment code"); - c.assertEqual(experiment.getType().getCode(), "HT_SEQUENCING", "Type code"); - c.assertEqual(experiment.getProject().getCode(), "SCREENING-EXAMPLES", "Project code"); - c.assertEqual(experiment.getProject().getSpace().getCode(), "PLATONIC", "Space code"); - var tags = _.sortBy(experiment.getTags(), "code"); - c.assertEqual(tags[0].code, 'CREATE_ANOTHER_JSON_TAG', "tags"); - c.assertEqual(tags[1].code, 'CREATE_JSON_TAG', "tags"); - c.assertEqual(tags.length, 2, "Number of tags"); - var attachments = experiment.getAttachments(); - c.assertEqual(attachments[0].fileName, "test_file", "Attachment file name"); - c.assertEqual(attachments[0].title, "test_title", "Attachment title"); - c.assertEqual(attachments[0].description, "test_description", "Attachment description"); - c.assertEqual(atob(attachments[0].content), "hello world", "Attachment content"); - c.assertEqual(attachments.length, 1, "Number of attachments"); - - var metaData = experiment.getMetaData(); - c.assertEqual(metaData["experiment_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["experiment_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["experiment_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck); - }); - - QUnit.test("updateExperiments() changed properties + removed tag", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var experimentCreation = new dtos.ExperimentCreation(); - experimentCreation.setCode(code); - experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")); - experimentCreation.setProperty("EXPERIMENT_DESIGN", "EXPRESSION"); - experimentCreation.setTagIds([ new dtos.TagCode("CREATE_JSON_TAG") ]); - experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - return facade.createExperiments([ experimentCreation ]); - } - - var fUpdate = function(facade, permId) { - var experimentUpdate = new dtos.ExperimentUpdate(); - experimentUpdate.setExperimentId(permId); - experimentUpdate.setProperty("EXPERIMENT_DESIGN", "OTHER"); - experimentUpdate.getTagIds().remove([ new dtos.TagCode("UNKNOWN_TAG"), new dtos.TagCode("CREATE_JSON_TAG") ]); - return facade.updateExperiments([ experimentUpdate ]); - } - - var fCheck = function(experiment) { - c.assertEqual(experiment.getCode(), code, "Experiment code"); - c.assertEqual(experiment.getType().getCode(), "HT_SEQUENCING", "Type code"); - c.assertEqual(experiment.getProject().getCode(), "TEST-PROJECT", "Project code"); - c.assertEqual(experiment.getProject().getSpace().getCode(), "TEST", "Space code"); - var properties = experiment.getProperties(); - c.assertEqual(properties["EXPERIMENT_DESIGN"], "OTHER", "Property EXPERIMENT_DESIGN"); - c.assertEqual(Object.keys(properties), "EXPERIMENT_DESIGN", "Properties"); - c.assertEqual(experiment.getTags().length, 0, "Number of tags"); - } - - testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck); - }); - - QUnit.test("updateExperiments() removed project", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var experimentCreation = new dtos.ExperimentCreation(); - experimentCreation.setCode(code); - experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")); - experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - return facade.createExperiments([ experimentCreation ]); - } - - var fUpdate = function(facade, permId) { - var experimentUpdate = new dtos.ExperimentUpdate(); - experimentUpdate.setExperimentId(permId); - experimentUpdate.setProjectId(null); - return facade.updateExperiments([ experimentUpdate ]); - } - - var fCheckError = function(error, permId) { - c.assertContains(error, "Project id cannot be null", "Error"); - } - - testUpdate(c, fCreate, fUpdate, c.findExperiment, null, fCheckError); - }); - - QUnit.test("updateExperiment() change property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var experimentTypeCode = c.generateId("EXPERIMENT_TYPE"); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var experimentTypeCreation = new dtos.ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode); - experimentTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createExperimentTypes([ experimentTypeCreation ]).then(function(results) { - var creation = new dtos.ExperimentCreation(); - creation.setTypeId(new dtos.EntityTypePermId(experimentTypeCode)); - creation.setCode(code); - creation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - creation.setProperty(propertyTypeCode, "20130412140147735-20"); - return facade.createExperiments([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.ExperimentUpdate(); - update.setExperimentId(permId); - update.setProperty(propertyTypeCode, "20130412140147736-21"); - return facade.updateExperiments([ update ]); - } - - var fCheck = function(experiment) { - c.assertEqual(experiment.getCode(), code, "Experiment code"); - c.assertEqual(experiment.getType().getCode(), experimentTypeCode, "Type code"); - c.assertEqual(experiment.getProject().getCode(), "TEST-PROJECT", "Project code"); - c.assertEqual(experiment.getProject().getSpace().getCode(), "TEST", "Space code"); - c.assertEqual(experiment.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", "Sample property"); - c.assertEqual(experiment.getHistory()[0].getPropertyName(), propertyTypeCode, "Previous sample property name"); - c.assertEqual(experiment.getHistory()[0].getPropertyValue(), "20130412140147735-20", "Previous sample property value"); - } - - testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck); - }); - - QUnit.test("updateExperiment() change multi-value property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var experimentTypeCode = c.generateId("EXPERIMENT_TYPE"); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - propertyTypeCreation.setMultiValue(true); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var experimentTypeCreation = new dtos.ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode); - experimentTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createExperimentTypes([ experimentTypeCreation ]).then(function(results) { - var creation = new dtos.ExperimentCreation(); - creation.setTypeId(new dtos.EntityTypePermId(experimentTypeCode)); - creation.setCode(code); - creation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - creation.setProperty(propertyTypeCode, ["20130412140147735-20", "20130424134657597-433"]); - return facade.createExperiments([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.ExperimentUpdate(); - update.setExperimentId(permId); - update.setProperty(propertyTypeCode, "20130412140147736-21"); - return facade.updateExperiments([ update ]); - } - - var fCheck = function(experiment) { - c.assertEqual(experiment.getCode(), code, "Experiment code"); - c.assertEqual(experiment.getType().getCode(), experimentTypeCode, "Type code"); - c.assertEqual(experiment.getProject().getCode(), "TEST-PROJECT", "Project code"); - c.assertEqual(experiment.getProject().getSpace().getCode(), "TEST", "Space code"); - c.assertEqual(experiment.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", "Sample property"); - - var history = experiment.getHistory().filter(x => x.propertyName == propertyTypeCode && x.validTo); - c.assertEqual(history.length, 2, "Previous sample property name"); - c.assertEqual(history.map(x => x.propertyValue).sort().toString(), ["20130412140147735-20", "20130424134657597-433"].toString(), "Previous sample property value"); - - } - - testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck); - }); - - QUnit.test("updateSampleTypes()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE_TYPE"); - - var fCreate = function(facade) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("initial value"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - - var creation = new dtos.SampleTypeCreation(); - creation.setCode(code); - creation.setDescription("a new description"); - creation.setGeneratedCodePrefix("TEST_PREFIX"); - creation.setPropertyAssignments([ assignmentCreation ]); - creation.setMetaData({"sample_type_update":"old_value", "sample_type_delete":"del_value"}); - - return facade.createSampleTypes([ creation ]); - } - - var fUpdate = function(facade, permId) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section 2"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("1.0"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - var update = new dtos.SampleTypeUpdate(); - update.setTypeId(permId); - update.setAutoGeneratedCode(true); - update.setSubcodeUnique(true); - update.setDescription("another new description"); - update.setGeneratedCodePrefix("TEST_PREFIX2"); - update.setListable(true); - update.setShowContainer(true); - update.setShowParents(true); - update.setShowParentMetadata(true); - update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - update.getPropertyAssignments().add([ assignmentCreation ]); - update.getPropertyAssignments().remove([ new dtos.PropertyAssignmentPermId(permId, new dtos.PropertyTypePermId("DESCRIPTION")) ]); - update.getMetaData().put("sample_type_update", "new_value"); - update.getMetaData().add({"sample_type_add":"add_value"}); - update.getMetaData().remove("sample_type_delete"); - return facade.updateSampleTypes([ update ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "another new description", "Description"); - c.assertEqual(type.isAutoGeneratedCode(), true, "AutoGeneratedCode"); - c.assertEqual(type.isSubcodeUnique(), true, "SubcodeUnique"); - c.assertEqual(type.getGeneratedCodePrefix(), "TEST_PREFIX2", "GeneratedCodePrefix"); - c.assertEqual(type.isListable(), true, "Listable"); - c.assertEqual(type.isShowContainer(), true, "ShowContainer"); - c.assertEqual(type.isShowParents(), true, "ShowParents"); - c.assertEqual(type.isShowParentMetadata(), true, "ShowParentMetadata"); - - c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count"); - - var assignment = type.getPropertyAssignments()[0]; - - c.assertEqual(assignment.getSection(), "test section 2", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code"); - c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory"); - c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView"); - c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms"); - - var metaData = type.getMetaData(); - c.assertEqual(metaData["sample_type_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["sample_type_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["sample_type_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findSampleType, fCheck); - }); - - QUnit.test("updateSamples()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - creation.setTagIds([ new dtos.TagCode("CREATE_JSON_TAG") ]); - creation.setMetaData({"sample_update":"old_value", "sample_delete":"del_value"}); - return facade.createSamples([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - update.getTagIds().remove(new dtos.TagCode("CREATE_JSON_TAG")); - update.getTagIds().add(new dtos.TagCode("CREATE_JSON_TAG_2")); - update.getTagIds().add(new dtos.TagCode("CREATE_JSON_TAG_3")); - update.getMetaData().put("sample_update", "new_value"); - update.getMetaData().add({"sample_add":"add_value"}); - update.getMetaData().remove("sample_delete"); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code"); - c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code"); - c.assertObjectsCount(sample.getTags(), 2); - c.assertObjectsWithValues(sample.getTags(), "code", [ "CREATE_JSON_TAG_2", "CREATE_JSON_TAG_3" ]); - - var metaData = sample.getMetaData(); - c.assertEqual(metaData["sample_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["sample_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["sample_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateSamples() turn project sample into a space sample", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - creation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - return facade.createSamples([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - update.setProjectId(null); - update.setSpaceId(new dtos.SpacePermId("PLATONIC")); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code"); - c.assertEqual(sample.getIdentifier(), "/PLATONIC/" + code, "Identifier"); - c.assertEqual(sample.getProject(), null, "Project"); - c.assertEqual(sample.getSpace().getCode(), "PLATONIC", "Space code"); - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateSamples() turn space sample into a project sample", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - return facade.createSamples([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - update.setProjectId(new dtos.ProjectIdentifier("/PLATONIC/SCREENING-EXAMPLES")); - update.setSpaceId(new dtos.SpacePermId("PLATONIC")); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code"); - c.assertEqual(sample.getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/" + code, "Identifier"); - c.assertEqual(sample.getProject().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES", "Project"); - c.assertEqual(sample.getSpace().getCode(), "PLATONIC", "Space code"); - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateSamples() with annotated parent and child", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE"); - var parentId = new dtos.SampleIdentifier("/TEST/TEST-SAMPLE-1"); - var childId = new dtos.SampleIdentifier("/TEST/TEST-PROJECT/TEST-SAMPLE-2"); - - var fCreate = function(facade) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - creation.setParentIds([ parentId ]); - creation.setChildIds([ childId ]); - creation.relationship(parentId).addParentAnnotation("type", "father").addChildAnnotation("type", "daughter"); - creation.relationship(childId).addParentAnnotation("type", "mother").addChildAnnotation("type", "son") - .addParentAnnotation("color", "red"); - return facade.createSamples([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - var parentRelationShip = update.relationship(parentId); - parentRelationShip.removeChildAnnotations("type").addChildAnnotation("color", "blue") - .addParentAnnotation("color", "yellow"); - var childRelationShip = update.relationship(childId); - childRelationShip.addParentAnnotation("color", "green").removeParentAnnotations("type") - .addChildAnnotation("color", "black"); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code"); - c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code"); - var parent = sample.getParents()[0]; - c.assertEqual(parent.getIdentifier().getIdentifier(), parentId.getIdentifier(), "Parent"); - var parentRelationship = sample.getParentRelationship(parent.getPermId()); - c.assertEqualDictionary(parentRelationship.getChildAnnotations(), {"color": "blue"}, "Parent -> child annotations"); - c.assertEqualDictionary(parentRelationship.getParentAnnotations(), {"type": "father", "color": "yellow"}, "Parent -> parent annotations"); - var child = sample.getChildren()[0]; - c.assertEqual(child.getIdentifier().getIdentifier(), childId.getIdentifier(), "Child"); - var childRelationship = sample.getChildRelationship(child.getPermId()); - c.assertEqualDictionary(childRelationship.getChildAnnotations(), {"type": "son", "color": "black"}, "Child -> child annotations"); - c.assertEqualDictionary(childRelationship.getParentAnnotations(), {"color": "green"}, "Child -> parent annotations"); - - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateSamples() change property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var sampleTypeCode = c.generateId("SAMPLE_TYPE"); - var code = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var sampleTypeCreation = new dtos.SampleTypeCreation(); - sampleTypeCreation.setCode(sampleTypeCode); - sampleTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createSampleTypes([ sampleTypeCreation ]).then(function(results) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - creation.setProperty(propertyTypeCode, "20130412140147735-20"); - return facade.createSamples([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - update.setProperty(propertyTypeCode, "20130412140147736-21"); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), sampleTypeCode, "Type code"); - c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code"); - c.assertEqual(sample.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", "Sample property"); - c.assertEqual(sample.getHistory()[0].getPropertyName(), propertyTypeCode, "Previous sample property name"); - c.assertEqual(sample.getHistory()[0].getPropertyValue(), "20130412140147735-20", "Previous sample property value"); - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateSamples() change multi-value property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var sampleTypeCode = c.generateId("SAMPLE_TYPE"); - var code = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - propertyTypeCreation.setMultiValue(true); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var sampleTypeCreation = new dtos.SampleTypeCreation(); - sampleTypeCreation.setCode(sampleTypeCode); - sampleTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createSampleTypes([ sampleTypeCreation ]).then(function(results) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - creation.setProperty(propertyTypeCode, ["20130412140147735-20", "20130424134657597-433"]); - return facade.createSamples([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - update.setProperty(propertyTypeCode, "20130412140147736-21"); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), sampleTypeCode, "Type code"); - c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code"); - c.assertEqual(sample.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", "Sample property"); - var history = sample.getHistory().filter(x => x.propertyName == propertyTypeCode && x.validTo); - c.assertEqual(history.length, 2, "Previous sample property name"); - c.assertEqual(history.map(x => x.propertyValue).sort().toString(), ["20130412140147735-20", "20130424134657597-433"].toString(), "Previous sample property value"); - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateSamples() remove property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var sampleTypeCode = c.generateId("SAMPLE_TYPE"); - var code = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var sampleTypeCreation = new dtos.SampleTypeCreation(); - sampleTypeCreation.setCode(sampleTypeCode); - sampleTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createSampleTypes([ sampleTypeCreation ]).then(function(results) { - var creation = new dtos.SampleCreation(); - creation.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)); - creation.setCode(code); - creation.setSpaceId(new dtos.SpacePermId("TEST")); - creation.setProperty(propertyTypeCode, "20130412140147735-20"); - return facade.createSamples([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SampleUpdate(); - update.setSampleId(permId); - update.setProperty(propertyTypeCode, null); - return facade.updateSamples([ update ]); - } - - var fCheck = function(sample) { - c.assertEqual(sample.getCode(), code, "Sample code"); - c.assertEqual(sample.getType().getCode(), sampleTypeCode, "Type code"); - c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code"); - c.assertObjectsCount(Object.keys(sample.getSampleProperties()), 0); - c.assertEqual(sample.getHistory()[0].getPropertyName(), propertyTypeCode, "Previous sample property name"); - c.assertEqual(sample.getHistory()[0].getPropertyValue(), "20130412140147735-20", "Previous sample property value"); - } - - testUpdate(c, fCreate, fUpdate, c.findSample, fCheck); - }); - - QUnit.test("updateDataSetTypes()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("DATA_SET_TYPE"); - - var fCreate = function(facade) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("initial value"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - - var creation = new dtos.DataSetTypeCreation(); - creation.setCode(code); - creation.setDescription("a new description"); - creation.setPropertyAssignments([ assignmentCreation ]); - creation.setMetaData({"dataset_type_update":"old_value", "dataset_type_delete":"del_value"}); - - return facade.createDataSetTypes([ creation ]); - } - - var fUpdate = function(facade, permId) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section 2"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("1.0"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - var update = new dtos.DataSetTypeUpdate(); - update.setTypeId(permId); - update.setDescription("another new description"); - update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - update.setMainDataSetPattern(".*\\.jpg"); - update.setMainDataSetPath("original/images/"); - update.setDisallowDeletion(true); - update.getPropertyAssignments().set([ assignmentCreation ]); - update.getMetaData().put("dataset_type_update", "new_value"); - update.getMetaData().add({"dataset_type_add":"add_value"}); - update.getMetaData().remove("dataset_type_delete"); - return facade.updateDataSetTypes([ update ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "another new description", "Description"); - c.assertEqual(type.getMainDataSetPattern(), ".*\\.jpg", "Main data set pattern"); - c.assertEqual(type.getMainDataSetPath(), "original/images/", "Main data set path"); - c.assertEqual(type.isDisallowDeletion(), true, "Disallow deletion"); - - c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count"); - - var assignment = type.getPropertyAssignments()[0]; - - c.assertEqual(assignment.getSection(), "test section 2", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code"); - c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory"); - c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView"); - c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms"); - - var metaData = type.getMetaData(); - c.assertEqual(metaData["dataset_type_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["dataset_type_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["dataset_type_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSetType, fCheck); - }); - - QUnit.test("updateDataSets()", function(assert) { - var c = new common(assert, dtos); - var code = null; - - var fCreate = function(facade) { - return c.createDataSet(facade).then(function(permId) { - code = permId.getPermId(); - return [ permId ]; - }); - } - - var fUpdate = function(facade, permId) { - var physicalUpdate = new dtos.PhysicalDataUpdate(); - physicalUpdate.setFileFormatTypeId(new dtos.FileFormatTypePermId("TIFF")); - physicalUpdate.setArchivingRequested(true); - - var update = new dtos.DataSetUpdate(); - update.setDataSetId(permId); - update.setProperty("NOTES", "new 409 description"); - update.setPhysicalData(physicalUpdate); - - return facade.updateDataSets([ update ]); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Code"); - c.assertEqual(dataSet.getProperties()["NOTES"], "new 409 description", "Property NOTES"); - c.assertEqual(dataSet.getPhysicalData().getFileFormatType().getCode(), "TIFF", "File format type"); - c.assertEqual(dataSet.getPhysicalData().isArchivingRequested(), true, "Archiving requested"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck); - }); - - QUnit.test("updateDataSet() change property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var dataSetTypeCode = c.generateId("DATA_SET_TYPE"); - var code = c.generateId("DATA_SET"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var dataSetTypeCreation = new dtos.DataSetTypeCreation(); - dataSetTypeCreation.setCode(dataSetTypeCode); - dataSetTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createDataSetTypes([ dataSetTypeCreation ]).then(function(results) { - var creation = new dtos.DataSetCreation(); - creation.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)); - creation.setCode(code); - creation.setDataSetKind(dtos.DataSetKind.CONTAINER); - creation.setDataStoreId(new dtos.DataStorePermId("DSS1")); - creation.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")); - creation.setProperty(propertyTypeCode, "20130412140147735-20"); - creation.setMetaData({"dataset_update":"old_value", "dataset_delete":"del_value"}); - return facade.createDataSets([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.DataSetUpdate(); - update.setDataSetId(permId); - update.setProperty(propertyTypeCode, "20130412140147736-21"); - update.getMetaData().put("dataset_update", "new_value"); - update.getMetaData().add({"dataset_add":"add_value"}); - update.getMetaData().remove("dataset_delete"); - return facade.updateDataSets([ update ]); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Data set code"); - c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code"); - c.assertEqual(dataSet.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", "Sample property"); - c.assertEqual(dataSet.getHistory()[0].getPropertyName(), propertyTypeCode, "Previous sample property name"); - c.assertEqual(dataSet.getHistory()[0].getPropertyValue(), "20130412140147735-20", "Previous sample property value"); - - var metaData = dataSet.getMetaData(); - c.assertEqual(metaData["dataset_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["dataset_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["dataset_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck); - }); - - QUnit.test("updateDataSet() change multi-value property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var dataSetTypeCode = c.generateId("DATA_SET_TYPE"); - var code = c.generateId("DATA_SET"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - propertyTypeCreation.setMultiValue(true); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var dataSetTypeCreation = new dtos.DataSetTypeCreation(); - dataSetTypeCreation.setCode(dataSetTypeCode); - dataSetTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createDataSetTypes([ dataSetTypeCreation ]).then(function(results) { - var creation = new dtos.DataSetCreation(); - creation.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)); - creation.setCode(code); - creation.setDataSetKind(dtos.DataSetKind.CONTAINER); - creation.setDataStoreId(new dtos.DataStorePermId("DSS1")); - creation.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")); - creation.setProperty(propertyTypeCode, ["20130412140147735-20", "20130424134657597-433"]); - creation.setMetaData({"dataset_update":"old_value", "dataset_delete":"del_value"}); - return facade.createDataSets([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.DataSetUpdate(); - update.setDataSetId(permId); - update.setProperty(propertyTypeCode, "20130412140147736-21"); - update.getMetaData().put("dataset_update", "new_value"); - update.getMetaData().add({"dataset_add":"add_value"}); - update.getMetaData().remove("dataset_delete"); - return facade.updateDataSets([ update ]); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Data set code"); - c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code"); - c.assertEqual(dataSet.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", "Sample property"); - var history = dataSet.getHistory().filter(x => x.propertyName == propertyTypeCode && x.validTo); - c.assertEqual(history.length, 2, "Previous sample property name"); - c.assertEqual(history.map(x => x.propertyValue).sort().toString(), ["20130412140147735-20", "20130424134657597-433"].toString(), "Previous sample property value"); - - var metaData = dataSet.getMetaData(); - c.assertEqual(metaData["dataset_update"], "new_value", "Metadata update"); - c.assertEqual(metaData["dataset_add"], "add_value", "Metadata add"); - c.assertEqual(metaData["dataset_delete"], undefined, "Metadata delete"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck); - }); - - QUnit.test("updateDataSets() link data set", function(assert) { - var c = new common(assert, dtos); - var code = "20160613195437233-437"; - - var fCreate = function(facade) { - return [ new dtos.DataSetPermId(code) ]; - } - - var fUpdate = function(facade, permId) { - var linkUpdate = new dtos.LinkedDataUpdate(); - linkUpdate.setExternalCode("new code"); - - var update = new dtos.DataSetUpdate(); - update.setDataSetId(permId); - update.setLinkedData(linkUpdate); - - return facade.updateDataSets([ update ]); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Code"); - c.assertEqual(dataSet.getLinkedData().getExternalCode(), "new code", "External code"); - c.assertEqual(dataSet.getLinkedData().getExternalDms().getPermId().toString(), "DMS_1", "External DMS"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck); - }); - - QUnit.test("updateDataSets() add content copy to link data set", function(assert) { - var c = new common(assert, dtos); - var edmsId = null; - - var fCreate = function(facade) { - return c.createLinkDataSet(facade, "root/path", "my-hash", "my-repository-id").then(function(permId) { - code = permId.getPermId(); - return [ permId ]; - }); - } - - var fUpdate = function(facade, permId) { - return c.findDataSet(facade, permId).then(function(dataSet) { - var contentCopy = dataSet.getLinkedData().getContentCopies()[0]; - edmsId = contentCopy.getExternalDms().getPermId(); - var contentCopyListUpdateValue = new dtos.ContentCopyListUpdateValue(); - var contentCopyCreation = new dtos.ContentCopyCreation(); - contentCopyCreation.setExternalDmsId(edmsId); - contentCopyCreation.setPath("my/data/path"); - contentCopyCreation.setGitCommitHash("my-git-hash"); - contentCopyCreation.setGitRepositoryId("my-git-repository-id"); - contentCopyListUpdateValue.add([ contentCopyCreation ]); - contentCopyListUpdateValue.remove([ contentCopy.getId() ]); - - var linkUpdate = new dtos.LinkedDataUpdate(); - linkUpdate.setContentCopyActions(contentCopyListUpdateValue.getActions()); - - var update = new dtos.DataSetUpdate(); - update.setDataSetId(permId); - update.setLinkedData(linkUpdate); - - return facade.updateDataSets([ update ]); - }); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Code"); - var contentCopies = dataSet.getLinkedData().getContentCopies(); - c.assertEqual(contentCopies.length, 1, "Number of content copies"); - c.assertEqual(contentCopies[0].getExternalDms().getPermId().toString(), edmsId.toString(), "External DMS"); - c.assertEqual(contentCopies[0].getExternalCode(), null, "External code"); - c.assertEqual(contentCopies[0].getPath(), "/my/data/path", "Path"); - c.assertEqual(contentCopies[0].getGitCommitHash(), "my-git-hash", "Git commit hash"); - c.assertEqual(contentCopies[0].getGitRepositoryId(), "my-git-repository-id", "Git repository id"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck); - }); - - QUnit.test("updateMaterialTypes()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("MATERIAL_TYPE"); - - var fCreate = function(facade) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("initial value"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - - var creation = new dtos.MaterialTypeCreation(); - creation.setCode(code); - creation.setDescription("a new description"); - creation.setPropertyAssignments([ assignmentCreation ]); - - return facade.createMaterialTypes([ creation ]); - } - - var fUpdate = function(facade, permId) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setSection("test section 2"); - assignmentCreation.setOrdinal(10); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")); - assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")); - assignmentCreation.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("1.0"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - var update = new dtos.MaterialTypeUpdate(); - update.setTypeId(permId); - update.setDescription("another new description"); - update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - update.getPropertyAssignments().add([ assignmentCreation ]); - update.getPropertyAssignments().remove([ new dtos.PropertyAssignmentPermId(permId, new dtos.PropertyTypePermId("DESCRIPTION")) ]); - return facade.updateMaterialTypes([ update ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "another new description", "Description"); - - c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count"); - - var assignment = type.getPropertyAssignments()[0]; - - c.assertEqual(assignment.getSection(), "test section 2", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code"); - c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory"); - c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView"); - c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms"); - } - - testUpdate(c, fCreate, fUpdate, c.findMaterialType, fCheck); - }); - - QUnit.test("updateMaterials()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("MATERIAL"); - - var fCreate = function(facade) { - var materialCreation = new dtos.MaterialCreation(); - materialCreation.setTypeId(new dtos.EntityTypePermId("COMPOUND")); - materialCreation.setCode(code); - materialCreation.setProperty("DESCRIPTION", "Metal"); - return facade.createMaterials([ materialCreation ]); - } - - var fUpdate = function(facade, permId) { - var materialUpdate = new dtos.MaterialUpdate(); - materialUpdate.setMaterialId(permId); - materialUpdate.setProperty("DESCRIPTION", "Alloy"); - return facade.updateMaterials([ materialUpdate ]); - } - - var fCheck = function(material) { - c.assertEqual(material.getCode(), code, "Material code"); - c.assertEqual(material.getType().getCode(), "COMPOUND", "Type code"); - var properties = material.getProperties(); - c.assertEqual(properties["DESCRIPTION"], "Alloy", "Property DESCRIPTION"); - } - - testUpdate(c, fCreate, fUpdate, c.findMaterial, fCheck); - }); - - QUnit.test("updatePropertyTypes()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("PROPERTY_TYPE"); - var description = "Description of " + code; - var label = "Label of " + code; - var metaData1 = {"greetings" : "hello test"}; - - var fCreate = function(facade) { - var creation = new dtos.PropertyTypeCreation(); - creation.setCode(code); - creation.setLabel("Testing"); - creation.setDescription("testing"); - creation.setDataType(dtos.DataType.VARCHAR); - creation.setMetaData(metaData1); - return facade.createPropertyTypes([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.PropertyTypeUpdate(); - update.setTypeId(new dtos.PropertyTypePermId(code)); - update.setDescription(description); - update.setLabel(label); - var metaData = update.getMetaData(); - metaData.remove("greetings"); - metaData.put("valid", "true"); - return facade.updatePropertyTypes([ update ]); - } - - var fCheck = function(propertyType) { - c.assertEqual(propertyType.getCode(), code, "Code"); - c.assertEqual(propertyType.getDescription(), description, "Description"); - c.assertEqual(propertyType.getLabel(), label, "Label"); - c.assertEqualDictionary(propertyType.getMetaData(), {"valid" : "true"}, "Meta data"); - } - - testUpdate(c, fCreate, fUpdate, c.findPropertyType, fCheck); - }); - - QUnit.test("updatePropertyTypes() convert data type ", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCode = c.generateId("PROPERTY_TYPE"); - var dataSetTypeCode = c.generateId("DATA_SET_TYPE"); - var code = c.generateId("DATA_SET"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - var dataSetTypeCreation = new dtos.DataSetTypeCreation(); - dataSetTypeCreation.setCode(dataSetTypeCode); - dataSetTypeCreation.setPropertyAssignments([ assignmentCreation ]); - return facade.createDataSetTypes([ dataSetTypeCreation ]).then(function(results) { - var creation = new dtos.DataSetCreation(); - creation.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)); - creation.setCode(code); - creation.setDataSetKind(dtos.DataSetKind.CONTAINER); - creation.setDataStoreId(new dtos.DataStorePermId("DSS1")); - creation.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")); - creation.setProperty(propertyTypeCode, "20130412140147735-20"); - return facade.createDataSets([ creation ]); - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.PropertyTypeUpdate(); - update.setTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - update.convertToDataType(dtos.DataType.VARCHAR); - return facade.updatePropertyTypes([ update ]); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Data set code"); - c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code"); - c.assertObjectsCount(Object.keys(dataSet.getSampleProperties()), 0); - c.assertEqual(dataSet.getProperties()[propertyTypeCode], "20130412140147735-20", "Property"); - } - - testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck); - }); - - QUnit.test("updatePlugins()", function(assert) { - var c = new common(assert, dtos); - var name = c.generateId("PLUGIN"); - var description = "Description of " + name; - var script = "print 'hello'"; - - var fCreate = function(facade) { - var creation = new dtos.PluginCreation(); - creation.setName(name); - creation.setScript("pass"); - creation.setDescription("old description"); - creation.setAvailable(false); - creation.setPluginType(dtos.PluginType.MANAGED_PROPERTY); - return facade.createPlugins([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.PluginUpdate(); - update.setPluginId(new dtos.PluginPermId(name)); - update.setDescription(description); - update.setScript(script); - return facade.updatePlugins([ update ]); - } - - var fCheck = function(plugin) { - c.assertEqual(plugin.getName(), name, "Name"); - c.assertEqual(plugin.getDescription(), description, "Description"); - c.assertEqual(plugin.getScript(), script, "Script"); - } - - testUpdate(c, fCreate, fUpdate, c.findPlugin, fCheck); - }); - - QUnit.test("updateVocabularies()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("VOCABULARY"); - var description = "Description of " + code; - - var fCreate = function(facade) { - var creation = new dtos.VocabularyCreation(); - creation.setCode(code); - return facade.createVocabularies([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.VocabularyUpdate(); - update.setVocabularyId(permId); - update.setDescription(description); - update.setChosenFromList(true); - update.setUrlTemplate("https://www.ethz.ch") - return facade.updateVocabularies([ update ]); - } - - var fCheck = function(vocabulary) { - c.assertEqual(vocabulary.getCode(), code, "Code"); - c.assertEqual(vocabulary.getPermId().getPermId(), code, "Perm id"); - c.assertEqual(vocabulary.getDescription(), description, "Description"); - c.assertEqual(vocabulary.getUrlTemplate(), "https://www.ethz.ch", "URL template"); - } - - testUpdate(c, fCreate, fUpdate, c.findVocabulary, fCheck); - }); - - QUnit.test("updateVocabularyTerms()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("VOCABULARY_TERM"); - var description = "Description of " + code; - - var fCreate = function(facade) { - var termCreation = new dtos.VocabularyTermCreation(); - termCreation.setVocabularyId(new dtos.VocabularyPermId("TEST-VOCABULARY")); - termCreation.setCode(code); - return facade.createVocabularyTerms([ termCreation ]); - } - - var fUpdate = function(facade, permId) { - var termUpdate = new dtos.VocabularyTermUpdate(); - termUpdate.setVocabularyTermId(permId); - termUpdate.setDescription(description); - return facade.updateVocabularyTerms([ termUpdate ]); - } - - var fCheck = function(term) { - c.assertEqual(term.getCode(), code, "Term code"); - c.assertEqual(term.getVocabulary().getCode(), "TEST-VOCABULARY", "Term vocabulary code"); - c.assertEqual(term.getDescription(), description, "Term description"); - } - - testUpdate(c, fCreate, fUpdate, c.findVocabularyTerm, fCheck); - }); - - QUnit.test("updateExternalDms()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("EDMS"); - - var fCreate = function(facade) { - var edmsCreation = new dtos.ExternalDmsCreation(); - edmsCreation.setCode(code); - edmsCreation.setLabel("Test EDMS"); - edmsCreation.setAddressType(dtos.ExternalDmsAddressType.OPENBIS); - edmsCreation.setAddress("https://my-site/q=${term}") - return facade.createExternalDms([ edmsCreation ]); - } - - var fUpdate = function(facade, permId) { - var edmsUpdate = new dtos.ExternalDmsUpdate(); - edmsUpdate.setExternalDmsId(permId); - edmsUpdate.setLabel("Test EDMS 2"); - edmsUpdate.setAddress("https://my-second-site/q=${term}"); - return facade.updateExternalDataManagementSystems([ edmsUpdate ]); - } - - var fCheck = function(edms) { - c.assertEqual(edms.getCode(), code, "EDMS code"); - c.assertEqual(edms.getLabel(), "Test EDMS 2", "EDMS label"); - c.assertEqual(edms.getAddress(), "https://my-second-site/q=${term}", "EDMS address"); - c.assertEqual(edms.getUrlTemplate(), "https://my-second-site/q=${term}", "EDMS URL template"); - c.assertEqual(edms.getAddressType(), "OPENBIS", "EDMS address type"); - c.assertEqual(edms.isOpenbis(), true, "EDMS is openBIS"); - } - - testUpdate(c, fCreate, fUpdate, c.findExternalDms, fCheck); - }); - - QUnit.test("updateTags()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("TAG"); - var description = "Description of " + code; - - var fCreate = function(facade) { - var tagCreation = new dtos.TagCreation(); - tagCreation.setCode(code); - return facade.createTags([ tagCreation ]); - } - - var fUpdate = function(facade, permId) { - var tagUpdate = new dtos.TagUpdate(); - tagUpdate.setTagId(permId); - tagUpdate.setDescription(description); - return facade.updateTags([ tagUpdate ]); - } - - var fCheck = function(tag) { - c.assertEqual(tag.getCode(), code, "Tag code"); - c.assertEqual(tag.getDescription(), description, "Tag description"); - } - - testUpdate(c, fCreate, fUpdate, c.findTag, fCheck); - }); - - QUnit.test("updateAuthorizationGroups()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("AUTHORIZATION_GROUP"); - var description = "Description of " + code; - - var fCreate = function(facade) { - var creation = new dtos.AuthorizationGroupCreation(); - creation.setCode(code); - creation.setUserIds([ new dtos.PersonPermId("power_user") ]); - return facade.createAuthorizationGroups([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.AuthorizationGroupUpdate(); - update.setAuthorizationGroupId(permId); - update.setDescription(description); - update.getUserIds().remove([ new dtos.PersonPermId("power_user") ]); - update.getUserIds().add([ new dtos.PersonPermId("admin"), new dtos.Me() ]); - return facade.updateAuthorizationGroups([ update ]); - } - - var fCheck = function(group) { - c.assertEqual(group.getCode(), code, "Code"); - c.assertEqual(group.getDescription(), description, "Description"); - var users = $.map(group.getUsers(), function(user) { - return user.getUserId(); - }); - users.sort(); - c.assertEqual(users.toString(), "admin,openbis_test_js", "Users"); - } - - testUpdate(c, fCreate, fUpdate, c.findAuthorizationGroup, fCheck); - }); - - QUnit.test("updatePersons()", function(assert) { - var c = new common(assert, dtos); - var userId = c.generateId("USER"); - - var fCreate = function(facade) { - var creation = new dtos.PersonCreation(); - creation.setUserId(userId); - return facade.createPersons([ creation ]).then(function(permIds) { - var creation = new dtos.RoleAssignmentCreation(); - creation.setUserId(permIds[0]); - creation.setRole(dtos.Role.ADMIN); - return facade.createRoleAssignments([ creation ]).then(function(assignmentId) { - return permIds; - }); - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.PersonUpdate(); - update.setUserId(permId); - update.setSpaceId(new dtos.SpacePermId("TEST")) - return facade.updatePersons([ update ]); - } - - var fCheck = function(person) { - c.assertEqual(person.getUserId(), userId, "User id"); - c.assertEqual(person.getSpace().getCode(), "TEST", "Home space"); - c.assertEqual(person.isActive(), true, "Active"); - } - - testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck); - }); - - QUnit.test("updatePersons() deactivate", function(assert) { - var c = new common(assert, dtos); - var userId = c.generateId("USER"); - - var fCreate = function(facade) { - var creation = new dtos.PersonCreation(); - creation.setUserId(userId); - return facade.createPersons([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.PersonUpdate(); - update.setUserId(permId); - update.deactivate(); - return facade.updatePersons([ update ]); - } - - var fCheck = function(person) { - c.assertEqual(person.getUserId(), userId, "User id"); - c.assertEqual(person.isActive(), false, "Active"); - } - - testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck); - }); - - QUnit.test("updatePersons() deactivate and activate", function(assert) { - var c = new common(assert, dtos); - var userId = c.generateId("USER"); - - var fCreate = function(facade) { - var creation = new dtos.PersonCreation(); - creation.setUserId(userId); - return facade.createPersons([ creation ]); - } - - var fUpdate = function(facade, permId) { - var deactivateUpdate = new dtos.PersonUpdate(); - deactivateUpdate.setUserId(permId); - deactivateUpdate.deactivate(); - return facade.updatePersons([ deactivateUpdate ]).then(function(){ - var activateUpdate = new dtos.PersonUpdate(); - activateUpdate.setUserId(permId); - activateUpdate.activate(); - return facade.updatePersons([ activateUpdate ]); - }) - } - - var fCheck = function(person) { - c.assertEqual(person.getUserId(), userId, "User id"); - c.assertEqual(person.isActive(), true, "Active"); - } - - testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck); - }); - - QUnit.test("updatePersons() webAppSettings", function(assert) { - var c = new common(assert, dtos); - var userId = c.generateId("USER"); - - var WEB_APP_1 = "webApp1"; - var WEB_APP_2 = "webApp2"; - var WEB_APP_3 = "webApp3"; - var WEB_APP_4 = "webApp4"; - - var fCreate = function(facade) { - var creation = new dtos.PersonCreation(); - creation.setUserId(userId); - return facade.createPersons([ creation ]); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.PersonUpdate(); - update.setUserId(permId); - - var webApp1Update = update.getWebAppSettings(WEB_APP_1); - webApp1Update.add(new dtos.WebAppSettingCreation("n1a", "v1a")); - webApp1Update.add(new dtos.WebAppSettingCreation("n1b", "v1b")); - - var webApp2Update = update.getWebAppSettings(WEB_APP_2); - webApp2Update.add(new dtos.WebAppSettingCreation("n2a", "v2a")); - - var webApp3Update = update.getWebAppSettings(WEB_APP_3); - webApp3Update.add(new dtos.WebAppSettingCreation("n3a", "v3a")); - - var webApp4Update = update.getWebAppSettings(WEB_APP_4); - webApp4Update.add(new dtos.WebAppSettingCreation("n4a", "v4a")); - - return facade.updatePersons([ update ]).then(function() { - var update = new dtos.PersonUpdate(); - update.setUserId(permId); - - var webApp1Update = update.getWebAppSettings(WEB_APP_1); - webApp1Update.add(new dtos.WebAppSettingCreation("n1c", "v1c")); - webApp1Update.remove("n1b"); - - var webApp2Update = update.getWebAppSettings(WEB_APP_2); - webApp2Update.set([ new dtos.WebAppSettingCreation("n2a", "v2a updated"), new dtos.WebAppSettingCreation("n2c", "v2c") ]); - - var webApp3Update = update.getWebAppSettings(WEB_APP_3); - webApp3Update.set(); - - var webApp4Update = update.getWebAppSettings(WEB_APP_4); - webApp4Update.remove("n4a"); - - return facade.updatePersons([ update ]); - }); - } - - var fCheck = function(person) { - c.assertEqual(person.getUserId(), userId, "User id"); - c.assertEqual(Object.keys(person.getWebAppSettings()).length, 2, "Web apps"); - - var webApp1 = person.getWebAppSettings(WEB_APP_1).getSettings(); - c.assertEqual(Object.keys(webApp1).length, 2); - c.assertEqual(webApp1["n1a"].getValue(), "v1a"); - c.assertEqual(webApp1["n1c"].getValue(), "v1c"); - - var webApp2 = person.getWebAppSettings(WEB_APP_2).getSettings(); - c.assertEqual(Object.keys(webApp2).length, 2); - c.assertEqual(webApp2["n2a"].getValue(), "v2a updated"); - c.assertEqual(webApp2["n2c"].getValue(), "v2c"); - } - - testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck); - }); - - QUnit.test("updateOperationExecutions()", function(assert) { - var c = new common(assert, dtos); - var permId = null; - - var fCreate = function(facade) { - return c.createOperationExecution(facade).then(function(id) { - permId = id; - return [ id ]; - }); - } - - var fUpdate = function(facade, permId) { - var executionUpdate = new dtos.OperationExecutionUpdate(); - executionUpdate.setExecutionId(permId); - executionUpdate.setDescription("Description " + permId.getPermId()); - return facade.updateOperationExecutions([ executionUpdate ]); - } - - var fCheck = function(execution) { - c.assertEqual(execution.getPermId().getPermId(), permId.getPermId(), "PermId"); - c.assertEqual(execution.getDescription(), "Description " + permId.getPermId(), "Execution description"); - } - - testUpdate(c, fCreate, fUpdate, c.findOperationExecution, fCheck); - }); - - QUnit.test("updateSemanticAnnotations()", function(assert) { - var c = new common(assert, dtos); - - var fCreate = function(facade) { - return c.createSemanticAnnotation(facade).then(function(permId) { - return [ permId ]; - }); - } - - var fUpdate = function(facade, permId) { - var update = new dtos.SemanticAnnotationUpdate(); - update.setSemanticAnnotationId(permId); - update.setPredicateOntologyId("updatedPredicateOntologyId"); - update.setPredicateOntologyVersion("updatedPredicateOntologyVersion"); - update.setPredicateAccessionId("updatedPredicateAccessionId"); - update.setDescriptorOntologyId("updatedDescriptorOntologyId"); - update.setDescriptorOntologyVersion("updatedDescriptorOntologyVersion"); - update.setDescriptorAccessionId("updatedDescriptorAccessionId"); - return facade.updateSemanticAnnotations([ update ]); - } - - var fCheck = function(annotation) { - c.assertEqual(annotation.getPredicateOntologyId(), "updatedPredicateOntologyId", "Predicate Ontology Id"); - c.assertEqual(annotation.getPredicateOntologyVersion(), "updatedPredicateOntologyVersion", "Predicate Ontology Version"); - c.assertEqual(annotation.getPredicateAccessionId(), "updatedPredicateAccessionId", "Predicate Accession Id"); - c.assertEqual(annotation.getDescriptorOntologyId(), "updatedDescriptorOntologyId", "Descriptor Ontology Id"); - c.assertEqual(annotation.getDescriptorOntologyVersion(), "updatedDescriptorOntologyVersion", "Descriptor Ontology Version"); - c.assertEqual(annotation.getDescriptorAccessionId(), "updatedDescriptorAccessionId", "Descriptor Accession Id"); - } - - testUpdate(c, fCreate, fUpdate, c.findSemanticAnnotation, fCheck); - }); - - QUnit.test("updateQueries()", function(assert) { - var c = new common(assert, dtos); - - var update = new dtos.QueryUpdate(); - update.setName(c.generateId("query")); - update.setDescription("updated description"); - update.setDatabaseId(new dtos.QueryDatabaseName("openbisDB2")); - update.setQueryType(dtos.QueryType.SAMPLE); - update.setEntityTypeCodePattern("sample type pattern"); - update.setSql("select * from samples where perm_id = ${key};"); - update.setPublic(true); - - var fCreate = function(facade) { - return c.createQuery(facade).then(function(techId) { - return [ techId ]; - }); - } - - var fUpdate = function(facade, techId) { - update.setQueryId(techId); - return facade.updateQueries([ update ]); - } - - var fCheck = function(query) { - c.assertEqual(query.getName(), update.getName().getValue(), "Name"); - c.assertEqual(query.getDescription(), update.getDescription().getValue(), "Description"); - c.assertEqual(query.getDatabaseId().getName(), update.getDatabaseId().getValue().getName(), "Database"); - c.assertEqual(query.getQueryType(), update.getQueryType().getValue(), "Query type"); - c.assertEqual(query.getEntityTypeCodePattern(), update.getEntityTypeCodePattern().getValue(), "Entity type code pattern"); - c.assertEqual(query.getSql(), update.getSql().getValue(), "Sql"); - c.assertEqual(query.isPublic(), update.isPublic().getValue(), "Is public"); - } - - testUpdate(c, fCreate, fUpdate, c.findQuery, fCheck); - }); - - QUnit.test("updatePersonalAccessTokens()", function(assert) { - var c = new common(assert, dtos); - - var update = new dtos.PersonalAccessTokenUpdate(); - update.setAccessDate(new Date().getTime()); - - var fCreate = function(facade) { - return c.createPersonalAccessToken(facade).then(function(permId) { - return [ permId ]; - }); - } - - var fUpdate = function(facade, permId) { - update.setPersonalAccessTokenId(permId); - return facade.updatePersonalAccessTokens([ update ]); - } - - var fCheck = function(pat) { - c.assertEqual(pat.getAccessDate(), update.getAccessDate().getValue(), "Access date"); - } - - testUpdate(c, fCreate, fUpdate, c.findPersonalAccessToken, fCheck); - }); - } - - return function() { - executeModule("Update tests (RequireJS)", new openbis(), dtos); - executeModule("Update tests (RequireJS - executeOperations)", new openbisExecuteOperations(new openbis(), dtos), dtos); - executeModule("Update tests (module VAR)", new window.openbis.openbis(), window.openbis); - executeModule("Update tests (module VAR - executeOperations)", new openbisExecuteOperations(new window.openbis.openbis(), window.openbis), window.openbis); - executeModule("Update tests (module ESM)", new window.openbisESM.openbis(), window.openbisESM); - executeModule("Update tests (module ESM - executeOperations)", new openbisExecuteOperations(new window.openbisESM.openbis(), window.openbisESM), window.openbisESM); - } -}); diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-update.ts b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..738756b7c6e3099a7f32c53c780113fc97d0a812 --- /dev/null +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-update.ts @@ -0,0 +1,1901 @@ +import openbis from "./lib/openbis/openbis.esm" + +exports.default = new Promise((resolve) => { + require(["jquery", "underscore", "openbis", "test/openbis-execute-operations", "test/common", "test/dtos"], function ( + $, + _, + openbis, + openbisExecuteOperations, + common, + dtos + ) { + var executeModule = function (moduleName: string, facade: openbis.openbis, dtos: openbis.bundle) { + QUnit.module(moduleName) + + var testUpdate = function (c, fCreate, fUpdate, fFind, fCheck, fCheckError?) { + c.start() + + var ctx = { + facade: null, + permIds: null, + } + c.login(facade) + .then(function () { + ctx.facade = facade + return fCreate(facade) + }) + .then(function (permIds) { + ctx.permIds = permIds + c.assertTrue(permIds != null && permIds.length == 1, "Entity was created") + return fFind(ctx.facade, permIds[0]) + }) + .then(function (entity) { + c.assertNotNull(entity, "Entity can be found") + return fUpdate(ctx.facade, ctx.permIds[0]) + }) + .then(function () { + c.ok("Entity was updated") + return fFind(ctx.facade, ctx.permIds[0]) + }) + .then(function (entity) { + if (fCheck) { + fCheck(entity) + } + c.finish() + }) + .fail(function (error) { + if (fCheckError) { + fCheckError(error.message, ctx.permIds[0]) + } else { + c.fail(error.message) + } + c.finish() + }) + } + + QUnit.test("updateSpaces()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SPACE") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.SpaceCreation() + creation.setCode(code) + creation.setDescription("test description") + return facade.createSpaces([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SpaceUpdate() + update.setSpaceId(permId) + update.setDescription("test description 2") + return facade.updateSpaces([update]) + } + + var fCheck = function (space: openbis.Space) { + c.assertEqual(space.getCode(), code, "Code") + c.assertEqual(space.getDescription(), "test description 2", "Description") + } + + testUpdate(c, fCreate, fUpdate, c.findSpace, fCheck) + }) + + QUnit.test("updateProjects() added attachments", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("PROJECT") + + var fCreate = function (facade: openbis.openbis) { + var projectCreation = new dtos.ProjectCreation() + projectCreation.setSpaceId(new dtos.SpacePermId("TEST")) + projectCreation.setCode(code) + projectCreation.setDescription("JS test project") + return facade.createProjects([projectCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var projectUpdate = new dtos.ProjectUpdate() + projectUpdate.setProjectId(permId) + projectUpdate.setSpaceId(new dtos.SpacePermId("PLATONIC")) + var attachmentCreation = new dtos.AttachmentCreation() + attachmentCreation.setFileName("test_file") + attachmentCreation.setTitle("test_title") + attachmentCreation.setDescription("test_description") + attachmentCreation.setContent(btoa("hello world")) + projectUpdate.getAttachments().add([attachmentCreation]) + return facade.updateProjects([projectUpdate]) + } + + var fCheck = function (project: openbis.Project) { + c.assertEqual(project.getCode(), code, "Project code") + c.assertEqual(project.getSpace().getCode(), "PLATONIC", "Space code") + c.assertEqual(project.getDescription(), "JS test project", "Description") + var attachments = project.getAttachments() + c.assertEqual(attachments[0].getFileName(), "test_file", "Attachment file name") + c.assertEqual(attachments[0].getTitle(), "test_title", "Attachment title") + c.assertEqual(attachments[0].getDescription(), "test_description", "Attachment description") + c.assertEqual(atob(attachments[0].getContent()), "hello world", "Attachment content") + c.assertEqual(attachments.length, 1, "Number of attachments") + } + + testUpdate(c, fCreate, fUpdate, c.findProject, fCheck) + }) + + QUnit.test("updateProjects() changed attributes", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("PROJECT") + + var fCreate = function (facade: openbis.openbis) { + var projectCreation = new dtos.ProjectCreation() + projectCreation.setSpaceId(new dtos.SpacePermId("TEST")) + projectCreation.setCode(code) + projectCreation.setDescription("JS test project") + return facade.createProjects([projectCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var projectUpdate = new dtos.ProjectUpdate() + projectUpdate.setProjectId(permId) + projectUpdate.setDescription("test_description") + return facade.updateProjects([projectUpdate]) + } + + var fCheck = function (project: openbis.Project) { + c.assertEqual(project.getCode(), code, "Project code") + c.assertEqual(project.getSpace().getCode(), "TEST", "Space code") + c.assertEqual(project.getDescription(), "test_description", "Description") + } + + testUpdate(c, fCreate, fUpdate, c.findProject, fCheck) + }) + + QUnit.test("updateProjects() removed space", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("PROJECT") + + var fCreate = function (facade: openbis.openbis) { + var projectCreation = new dtos.ProjectCreation() + projectCreation.setSpaceId(new dtos.SpacePermId("TEST")) + projectCreation.setCode(code) + projectCreation.setDescription("JS test project") + return facade.createProjects([projectCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var projectUpdate = new dtos.ProjectUpdate() + projectUpdate.setProjectId(permId) + projectUpdate.setSpaceId(null) + return facade.updateProjects([projectUpdate]) + } + + var fCheckError = function (error, permId) { + c.assertContains(error, "Space id cannot be null", "Error") + } + + testUpdate(c, fCreate, fUpdate, c.findProject, null, fCheckError) + }) + + QUnit.test("updateExperimentTypes()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("EXPERIMENT_TYPE") + + var fCreate = function (facade: openbis.openbis) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setInitialValueForExistingEntities("initial value") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + + var creation = new dtos.ExperimentTypeCreation() + creation.setCode(code) + creation.setDescription("a new description") + creation.setPropertyAssignments([assignmentCreation]) + creation.setMetaData({ experiment_type_update: "old_value", experiment_type_delete: "del_value" }) + + return facade.createExperimentTypes([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section 2") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("1.0") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + var update = new dtos.ExperimentTypeUpdate() + update.setTypeId(permId) + update.setDescription("another new description") + update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + update.getPropertyAssignments().set([assignmentCreation]) + update.getMetaData().put("experiment_type_update", "new_value") + update.getMetaData().add([{ experiment_type_add: "add_value" }]) + update.getMetaData().remove(["experiment_type_delete"]) + return facade.updateExperimentTypes([update]) + } + + var fCheck = function (type: openbis.ExperimentType) { + c.assertEqual(type.getCode(), code, "Type code") + c.assertEqual(type.getPermId().getPermId(), code, "Type perm id") + c.assertEqual(type.getDescription(), "another new description", "Description") + + c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count") + + var assignment = type.getPropertyAssignments()[0] + + c.assertEqual(assignment.getSection(), "test section 2", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code") + c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory") + c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView") + c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms") + + var metaData = type.getMetaData() + c.assertEqual(metaData["experiment_type_update"], "new_value", "Metadata update") + c.assertEqual(metaData["experiment_type_add"], "add_value", "Metadata add") + c.assertEqual(metaData["experiment_type_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findExperimentType, fCheck) + }) + + QUnit.test("updateExperiments() changed attributes + added tag + added attachment", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var experimentCreation = new dtos.ExperimentCreation() + experimentCreation.setCode(code) + experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")) + experimentCreation.setProperty("EXPERIMENT_DESIGN", "EXPRESSION") + experimentCreation.setTagIds([new dtos.TagCode("CREATE_JSON_TAG")]) + experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + experimentCreation.setMetaData({ experiment_update: "old_value", experiment_delete: "del_value" }) + return facade.createExperiments([experimentCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var experimentUpdate = new dtos.ExperimentUpdate() + experimentUpdate.setExperimentId(permId) + experimentUpdate.setProjectId(new dtos.ProjectIdentifier("/PLATONIC/SCREENING-EXAMPLES")) + experimentUpdate.getTagIds().add([new dtos.TagCode("CREATE_ANOTHER_JSON_TAG")]) + var attachmentCreation = new dtos.AttachmentCreation() + attachmentCreation.setFileName("test_file") + attachmentCreation.setTitle("test_title") + attachmentCreation.setDescription("test_description") + attachmentCreation.setContent(btoa("hello world")) + experimentUpdate.getAttachments().add([attachmentCreation]) + experimentUpdate.getMetaData().put("experiment_update", "new_value") + experimentUpdate.getMetaData().add([{ experiment_add: "add_value" }]) + experimentUpdate.getMetaData().remove(["experiment_delete"]) + return facade.updateExperiments([experimentUpdate]) + } + + var fCheck = function (experiment: openbis.Experiment) { + c.assertEqual(experiment.getCode(), code, "Experiment code") + c.assertEqual(experiment.getType().getCode(), "HT_SEQUENCING", "Type code") + c.assertEqual(experiment.getProject().getCode(), "SCREENING-EXAMPLES", "Project code") + c.assertEqual(experiment.getProject().getSpace().getCode(), "PLATONIC", "Space code") + var tags = _.sortBy(experiment.getTags(), "code") + c.assertEqual(tags[0].code, "CREATE_ANOTHER_JSON_TAG", "tags") + c.assertEqual(tags[1].code, "CREATE_JSON_TAG", "tags") + c.assertEqual(tags.length, 2, "Number of tags") + var attachments = experiment.getAttachments() + c.assertEqual(attachments[0].getFileName(), "test_file", "Attachment file name") + c.assertEqual(attachments[0].getTitle(), "test_title", "Attachment title") + c.assertEqual(attachments[0].getDescription(), "test_description", "Attachment description") + c.assertEqual(atob(attachments[0].getContent()), "hello world", "Attachment content") + c.assertEqual(attachments.length, 1, "Number of attachments") + + var metaData = experiment.getMetaData() + c.assertEqual(metaData["experiment_update"], "new_value", "Metadata update") + c.assertEqual(metaData["experiment_add"], "add_value", "Metadata add") + c.assertEqual(metaData["experiment_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck) + }) + + QUnit.test("updateExperiments() changed properties + removed tag", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var experimentCreation = new dtos.ExperimentCreation() + experimentCreation.setCode(code) + experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")) + experimentCreation.setProperty("EXPERIMENT_DESIGN", "EXPRESSION") + experimentCreation.setTagIds([new dtos.TagCode("CREATE_JSON_TAG")]) + experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + return facade.createExperiments([experimentCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var experimentUpdate = new dtos.ExperimentUpdate() + experimentUpdate.setExperimentId(permId) + experimentUpdate.setProperty("EXPERIMENT_DESIGN", "OTHER") + experimentUpdate.getTagIds().remove([new dtos.TagCode("UNKNOWN_TAG"), new dtos.TagCode("CREATE_JSON_TAG")]) + return facade.updateExperiments([experimentUpdate]) + } + + var fCheck = function (experiment: openbis.Experiment) { + c.assertEqual(experiment.getCode(), code, "Experiment code") + c.assertEqual(experiment.getType().getCode(), "HT_SEQUENCING", "Type code") + c.assertEqual(experiment.getProject().getCode(), "TEST-PROJECT", "Project code") + c.assertEqual(experiment.getProject().getSpace().getCode(), "TEST", "Space code") + var properties = experiment.getProperties() + c.assertEqual(properties["EXPERIMENT_DESIGN"], "OTHER", "Property EXPERIMENT_DESIGN") + c.assertEqual(Object.keys(properties), "EXPERIMENT_DESIGN", "Properties") + c.assertEqual(experiment.getTags().length, 0, "Number of tags") + } + + testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck) + }) + + QUnit.test("updateExperiments() removed project", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var experimentCreation = new dtos.ExperimentCreation() + experimentCreation.setCode(code) + experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")) + experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + return facade.createExperiments([experimentCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var experimentUpdate = new dtos.ExperimentUpdate() + experimentUpdate.setExperimentId(permId) + experimentUpdate.setProjectId(null) + return facade.updateExperiments([experimentUpdate]) + } + + var fCheckError = function (error, permId) { + c.assertContains(error, "Project id cannot be null", "Error") + } + + testUpdate(c, fCreate, fUpdate, c.findExperiment, null, fCheckError) + }) + + QUnit.test("updateExperiment() change property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var experimentTypeCode = c.generateId("EXPERIMENT_TYPE") + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var experimentTypeCreation = new dtos.ExperimentTypeCreation() + experimentTypeCreation.setCode(experimentTypeCode) + experimentTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createExperimentTypes([experimentTypeCreation]).then(function (results) { + var creation = new dtos.ExperimentCreation() + creation.setTypeId(new dtos.EntityTypePermId(experimentTypeCode)) + creation.setCode(code) + creation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + creation.setProperty(propertyTypeCode, "20130412140147735-20") + return facade.createExperiments([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.ExperimentUpdate() + update.setExperimentId(permId) + update.setProperty(propertyTypeCode, "20130412140147736-21") + return facade.updateExperiments([update]) + } + + var fCheck = function (experiment: openbis.Experiment) { + c.assertEqual(experiment.getCode(), code, "Experiment code") + c.assertEqual(experiment.getType().getCode(), experimentTypeCode, "Type code") + c.assertEqual(experiment.getProject().getCode(), "TEST-PROJECT", "Project code") + c.assertEqual(experiment.getProject().getSpace().getCode(), "TEST", "Space code") + c.assertEqual( + experiment.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", + "Sample property" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>experiment.getHistory()[0]).getPropertyName(), + propertyTypeCode, + "Previous sample property name" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>experiment.getHistory()[0]).getPropertyValue(), + "20130412140147735-20", + "Previous sample property value" + ) + } + + testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck) + }) + + QUnit.test("updateExperiment() change multi-value property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var experimentTypeCode = c.generateId("EXPERIMENT_TYPE") + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + propertyTypeCreation.setMultiValue(true) + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var experimentTypeCreation = new dtos.ExperimentTypeCreation() + experimentTypeCreation.setCode(experimentTypeCode) + experimentTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createExperimentTypes([experimentTypeCreation]).then(function (results) { + var creation = new dtos.ExperimentCreation() + creation.setTypeId(new dtos.EntityTypePermId(experimentTypeCode)) + creation.setCode(code) + creation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + creation.setProperty(propertyTypeCode, ["20130412140147735-20", "20130424134657597-433"]) + return facade.createExperiments([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.ExperimentUpdate() + update.setExperimentId(permId) + update.setProperty(propertyTypeCode, "20130412140147736-21") + return facade.updateExperiments([update]) + } + + var fCheck = function (experiment: openbis.Experiment) { + c.assertEqual(experiment.getCode(), code, "Experiment code") + c.assertEqual(experiment.getType().getCode(), experimentTypeCode, "Type code") + c.assertEqual(experiment.getProject().getCode(), "TEST-PROJECT", "Project code") + c.assertEqual(experiment.getProject().getSpace().getCode(), "TEST", "Space code") + c.assertEqual( + experiment.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", + "Sample property" + ) + + var history = experiment.getHistory().filter((x: any) => x.propertyName == propertyTypeCode && x.validTo) + c.assertEqual(history.length, 2, "Previous sample property name") + c.assertEqual( + history + .map((x: any) => x.propertyValue) + .sort() + .toString(), + ["20130412140147735-20", "20130424134657597-433"].toString(), + "Previous sample property value" + ) + } + + testUpdate(c, fCreate, fUpdate, c.findExperiment, fCheck) + }) + + QUnit.test("updateSampleTypes()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE_TYPE") + + var fCreate = function (facade: openbis.openbis) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("initial value") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + + var creation = new dtos.SampleTypeCreation() + creation.setCode(code) + creation.setDescription("a new description") + creation.setGeneratedCodePrefix("TEST_PREFIX") + creation.setPropertyAssignments([assignmentCreation]) + creation.setMetaData({ sample_type_update: "old_value", sample_type_delete: "del_value" }) + + return facade.createSampleTypes([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section 2") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("1.0") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + var update = new dtos.SampleTypeUpdate() + update.setTypeId(permId) + update.setAutoGeneratedCode(true) + update.setSubcodeUnique(true) + update.setDescription("another new description") + update.setGeneratedCodePrefix("TEST_PREFIX2") + update.setListable(true) + update.setShowContainer(true) + update.setShowParents(true) + update.setShowParentMetadata(true) + update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + update.getPropertyAssignments().add([assignmentCreation]) + update.getPropertyAssignments().remove([new dtos.PropertyAssignmentPermId(permId, new dtos.PropertyTypePermId("DESCRIPTION"))]) + update.getMetaData().put("sample_type_update", "new_value") + update.getMetaData().add([{ sample_type_add: "add_value" }]) + update.getMetaData().remove(["sample_type_delete"]) + return facade.updateSampleTypes([update]) + } + + var fCheck = function (type: openbis.SampleType) { + c.assertEqual(type.getCode(), code, "Type code") + c.assertEqual(type.getPermId().getPermId(), code, "Type perm id") + c.assertEqual(type.getDescription(), "another new description", "Description") + c.assertEqual(type.isAutoGeneratedCode(), true, "AutoGeneratedCode") + c.assertEqual(type.isSubcodeUnique(), true, "SubcodeUnique") + c.assertEqual(type.getGeneratedCodePrefix(), "TEST_PREFIX2", "GeneratedCodePrefix") + c.assertEqual(type.isListable(), true, "Listable") + c.assertEqual(type.isShowContainer(), true, "ShowContainer") + c.assertEqual(type.isShowParents(), true, "ShowParents") + c.assertEqual(type.isShowParentMetadata(), true, "ShowParentMetadata") + + c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count") + + var assignment = type.getPropertyAssignments()[0] + + c.assertEqual(assignment.getSection(), "test section 2", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code") + c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory") + c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView") + c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms") + + var metaData = type.getMetaData() + c.assertEqual(metaData["sample_type_update"], "new_value", "Metadata update") + c.assertEqual(metaData["sample_type_add"], "add_value", "Metadata add") + c.assertEqual(metaData["sample_type_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findSampleType, fCheck) + }) + + QUnit.test("updateSamples()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + creation.setTagIds([new dtos.TagCode("CREATE_JSON_TAG")]) + creation.setMetaData({ sample_update: "old_value", sample_delete: "del_value" }) + return facade.createSamples([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + update.getTagIds().remove([new dtos.TagCode("CREATE_JSON_TAG")]) + update.getTagIds().add([new dtos.TagCode("CREATE_JSON_TAG_2")]) + update.getTagIds().add([new dtos.TagCode("CREATE_JSON_TAG_3")]) + update.getMetaData().put("sample_update", "new_value") + update.getMetaData().add([{ sample_add: "add_value" }]) + update.getMetaData().remove(["sample_delete"]) + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code") + c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code") + c.assertObjectsCount(sample.getTags(), 2) + c.assertObjectsWithValues(sample.getTags(), "code", ["CREATE_JSON_TAG_2", "CREATE_JSON_TAG_3"]) + + var metaData = sample.getMetaData() + c.assertEqual(metaData["sample_update"], "new_value", "Metadata update") + c.assertEqual(metaData["sample_add"], "add_value", "Metadata add") + c.assertEqual(metaData["sample_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateSamples() turn project sample into a space sample", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + creation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + return facade.createSamples([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + update.setProjectId(null) + update.setSpaceId(new dtos.SpacePermId("PLATONIC")) + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code") + c.assertEqual(sample.getIdentifier(), "/PLATONIC/" + code, "Identifier") + c.assertEqual(sample.getProject(), null, "Project") + c.assertEqual(sample.getSpace().getCode(), "PLATONIC", "Space code") + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateSamples() turn space sample into a project sample", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + return facade.createSamples([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + update.setProjectId(new dtos.ProjectIdentifier("/PLATONIC/SCREENING-EXAMPLES")) + update.setSpaceId(new dtos.SpacePermId("PLATONIC")) + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code") + c.assertEqual(sample.getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/" + code, "Identifier") + c.assertEqual(sample.getProject().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES", "Project") + c.assertEqual(sample.getSpace().getCode(), "PLATONIC", "Space code") + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateSamples() with annotated parent and child", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE") + var parentId = new dtos.SampleIdentifier("/TEST/TEST-SAMPLE-1") + var childId = new dtos.SampleIdentifier("/TEST/TEST-PROJECT/TEST-SAMPLE-2") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId("UNKNOWN")) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + creation.setParentIds([parentId]) + creation.setChildIds([childId]) + creation.relationship(parentId).addParentAnnotation("type", "father").addChildAnnotation("type", "daughter") + creation + .relationship(childId) + .addParentAnnotation("type", "mother") + .addChildAnnotation("type", "son") + .addParentAnnotation("color", "red") + return facade.createSamples([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + var parentRelationShip = update.relationship(parentId) + parentRelationShip.removeChildAnnotations(["type"]).addChildAnnotation("color", "blue").addParentAnnotation("color", "yellow") + var childRelationShip = update.relationship(childId) + childRelationShip.addParentAnnotation("color", "green").removeParentAnnotations(["type"]).addChildAnnotation("color", "black") + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), "UNKNOWN", "Type code") + c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code") + var parent = sample.getParents()[0] + c.assertEqual(parent.getIdentifier().getIdentifier(), parentId.getIdentifier(), "Parent") + var parentRelationship = sample.getParentRelationship(parent.getPermId()) + c.assertEqualDictionary(parentRelationship.getChildAnnotations(), { color: "blue" }, "Parent -> child annotations") + c.assertEqualDictionary( + parentRelationship.getParentAnnotations(), + { type: "father", color: "yellow" }, + "Parent -> parent annotations" + ) + var child = sample.getChildren()[0] + c.assertEqual(child.getIdentifier().getIdentifier(), childId.getIdentifier(), "Child") + var childRelationship = sample.getChildRelationship(child.getPermId()) + c.assertEqualDictionary(childRelationship.getChildAnnotations(), { type: "son", color: "black" }, "Child -> child annotations") + c.assertEqualDictionary(childRelationship.getParentAnnotations(), { color: "green" }, "Child -> parent annotations") + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateSamples() change property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var sampleTypeCode = c.generateId("SAMPLE_TYPE") + var code = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var sampleTypeCreation = new dtos.SampleTypeCreation() + sampleTypeCreation.setCode(sampleTypeCode) + sampleTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createSampleTypes([sampleTypeCreation]).then(function (results) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + creation.setProperty(propertyTypeCode, "20130412140147735-20") + return facade.createSamples([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + update.setProperty(propertyTypeCode, "20130412140147736-21") + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), sampleTypeCode, "Type code") + c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code") + c.assertEqual( + sample.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", + "Sample property" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>sample.getHistory()[0]).getPropertyName(), + propertyTypeCode, + "Previous sample property name" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>sample.getHistory()[0]).getPropertyValue(), + "20130412140147735-20", + "Previous sample property value" + ) + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateSamples() change multi-value property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var sampleTypeCode = c.generateId("SAMPLE_TYPE") + var code = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + propertyTypeCreation.setMultiValue(true) + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var sampleTypeCreation = new dtos.SampleTypeCreation() + sampleTypeCreation.setCode(sampleTypeCode) + sampleTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createSampleTypes([sampleTypeCreation]).then(function (results) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + creation.setProperty(propertyTypeCode, ["20130412140147735-20", "20130424134657597-433"]) + return facade.createSamples([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + update.setProperty(propertyTypeCode, "20130412140147736-21") + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), sampleTypeCode, "Type code") + c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code") + c.assertEqual( + sample.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", + "Sample property" + ) + var history = sample.getHistory().filter((x: any) => x.propertyName == propertyTypeCode && x.validTo) + c.assertEqual(history.length, 2, "Previous sample property name") + c.assertEqual( + history + .map((x: any) => x.propertyValue) + .sort() + .toString(), + ["20130412140147735-20", "20130424134657597-433"].toString(), + "Previous sample property value" + ) + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateSamples() remove property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var sampleTypeCode = c.generateId("SAMPLE_TYPE") + var code = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var sampleTypeCreation = new dtos.SampleTypeCreation() + sampleTypeCreation.setCode(sampleTypeCode) + sampleTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createSampleTypes([sampleTypeCreation]).then(function (results) { + var creation = new dtos.SampleCreation() + creation.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)) + creation.setCode(code) + creation.setSpaceId(new dtos.SpacePermId("TEST")) + creation.setProperty(propertyTypeCode, "20130412140147735-20") + return facade.createSamples([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SampleUpdate() + update.setSampleId(permId) + update.setProperty(propertyTypeCode, null) + return facade.updateSamples([update]) + } + + var fCheck = function (sample: openbis.Sample) { + c.assertEqual(sample.getCode(), code, "Sample code") + c.assertEqual(sample.getType().getCode(), sampleTypeCode, "Type code") + c.assertEqual(sample.getSpace().getCode(), "TEST", "Space code") + c.assertObjectsCount(Object.keys(sample.getSampleProperties()), 0) + c.assertEqual( + (<openbis.PropertyHistoryEntry>sample.getHistory()[0]).getPropertyName(), + propertyTypeCode, + "Previous sample property name" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>sample.getHistory()[0]).getPropertyValue(), + "20130412140147735-20", + "Previous sample property value" + ) + } + + testUpdate(c, fCreate, fUpdate, c.findSample, fCheck) + }) + + QUnit.test("updateDataSetTypes()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("DATA_SET_TYPE") + + var fCreate = function (facade: openbis.openbis) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("initial value") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + + var creation = new dtos.DataSetTypeCreation() + creation.setCode(code) + creation.setDescription("a new description") + creation.setPropertyAssignments([assignmentCreation]) + creation.setMetaData({ dataset_type_update: "old_value", dataset_type_delete: "del_value" }) + + return facade.createDataSetTypes([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section 2") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("1.0") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + var update = new dtos.DataSetTypeUpdate() + update.setTypeId(permId) + update.setDescription("another new description") + update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + update.setMainDataSetPattern(".*\\.jpg") + update.setMainDataSetPath("original/images/") + update.setDisallowDeletion(true) + update.getPropertyAssignments().set([assignmentCreation]) + update.getMetaData().put("dataset_type_update", "new_value") + update.getMetaData().add([{ dataset_type_add: "add_value" }]) + update.getMetaData().remove(["dataset_type_delete"]) + return facade.updateDataSetTypes([update]) + } + + var fCheck = function (type: openbis.DataSetType) { + c.assertEqual(type.getCode(), code, "Type code") + c.assertEqual(type.getPermId().getPermId(), code, "Type perm id") + c.assertEqual(type.getDescription(), "another new description", "Description") + c.assertEqual(type.getMainDataSetPattern(), ".*\\.jpg", "Main data set pattern") + c.assertEqual(type.getMainDataSetPath(), "original/images/", "Main data set path") + c.assertEqual(type.isDisallowDeletion(), true, "Disallow deletion") + + c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count") + + var assignment = type.getPropertyAssignments()[0] + + c.assertEqual(assignment.getSection(), "test section 2", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code") + c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory") + c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView") + c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms") + + var metaData = type.getMetaData() + c.assertEqual(metaData["dataset_type_update"], "new_value", "Metadata update") + c.assertEqual(metaData["dataset_type_add"], "add_value", "Metadata add") + c.assertEqual(metaData["dataset_type_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSetType, fCheck) + }) + + QUnit.test("updateDataSets()", function (assert) { + var c = new common(assert, dtos) + var code = null + + var fCreate = function (facade: openbis.openbis) { + return c.createDataSet(facade).then(function (permId) { + code = permId.getPermId() + return [permId] + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var physicalUpdate = new dtos.PhysicalDataUpdate() + physicalUpdate.setFileFormatTypeId(new dtos.FileFormatTypePermId("TIFF")) + physicalUpdate.setArchivingRequested(true) + + var update = new dtos.DataSetUpdate() + update.setDataSetId(permId) + update.setProperty("NOTES", "new 409 description") + update.setPhysicalData(physicalUpdate) + + return facade.updateDataSets([update]) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Code") + c.assertEqual(dataSet.getProperties()["NOTES"], "new 409 description", "Property NOTES") + c.assertEqual(dataSet.getPhysicalData().getFileFormatType().getCode(), "TIFF", "File format type") + c.assertEqual(dataSet.getPhysicalData().isArchivingRequested(), true, "Archiving requested") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck) + }) + + QUnit.test("updateDataSet() change property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var dataSetTypeCode = c.generateId("DATA_SET_TYPE") + var code = c.generateId("DATA_SET") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var dataSetTypeCreation = new dtos.DataSetTypeCreation() + dataSetTypeCreation.setCode(dataSetTypeCode) + dataSetTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createDataSetTypes([dataSetTypeCreation]).then(function (results) { + var creation = new dtos.DataSetCreation() + creation.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)) + creation.setCode(code) + creation.setDataSetKind(dtos.DataSetKind.CONTAINER) + creation.setDataStoreId(new dtos.DataStorePermId("DSS1")) + creation.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")) + creation.setProperty(propertyTypeCode, "20130412140147735-20") + creation.setMetaData({ dataset_update: "old_value", dataset_delete: "del_value" }) + return facade.createDataSets([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.DataSetUpdate() + update.setDataSetId(permId) + update.setProperty(propertyTypeCode, "20130412140147736-21") + update.getMetaData().put("dataset_update", "new_value") + update.getMetaData().add([{ dataset_add: "add_value" }]) + update.getMetaData().remove(["dataset_delete"]) + return facade.updateDataSets([update]) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Data set code") + c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code") + c.assertEqual( + dataSet.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", + "Sample property" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>dataSet.getHistory()[0]).getPropertyName(), + propertyTypeCode, + "Previous sample property name" + ) + c.assertEqual( + (<openbis.PropertyHistoryEntry>dataSet.getHistory()[0]).getPropertyValue(), + "20130412140147735-20", + "Previous sample property value" + ) + + var metaData = dataSet.getMetaData() + c.assertEqual(metaData["dataset_update"], "new_value", "Metadata update") + c.assertEqual(metaData["dataset_add"], "add_value", "Metadata add") + c.assertEqual(metaData["dataset_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck) + }) + + QUnit.test("updateDataSet() change multi-value property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var dataSetTypeCode = c.generateId("DATA_SET_TYPE") + var code = c.generateId("DATA_SET") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + propertyTypeCreation.setMultiValue(true) + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var dataSetTypeCreation = new dtos.DataSetTypeCreation() + dataSetTypeCreation.setCode(dataSetTypeCode) + dataSetTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createDataSetTypes([dataSetTypeCreation]).then(function (results) { + var creation = new dtos.DataSetCreation() + creation.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)) + creation.setCode(code) + creation.setDataSetKind(dtos.DataSetKind.CONTAINER) + creation.setDataStoreId(new dtos.DataStorePermId("DSS1")) + creation.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")) + creation.setProperty(propertyTypeCode, ["20130412140147735-20", "20130424134657597-433"]) + creation.setMetaData({ dataset_update: "old_value", dataset_delete: "del_value" }) + return facade.createDataSets([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.DataSetUpdate() + update.setDataSetId(permId) + update.setProperty(propertyTypeCode, "20130412140147736-21") + update.getMetaData().put("dataset_update", "new_value") + update.getMetaData().add([{ dataset_add: "add_value" }]) + update.getMetaData().remove(["dataset_delete"]) + return facade.updateDataSets([update]) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Data set code") + c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code") + c.assertEqual( + dataSet.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-2", + "Sample property" + ) + var history = dataSet.getHistory().filter((x: any) => x.propertyName == propertyTypeCode && x.validTo) + c.assertEqual(history.length, 2, "Previous sample property name") + c.assertEqual( + history + .map((x: any) => x.propertyValue) + .sort() + .toString(), + ["20130412140147735-20", "20130424134657597-433"].toString(), + "Previous sample property value" + ) + + var metaData = dataSet.getMetaData() + c.assertEqual(metaData["dataset_update"], "new_value", "Metadata update") + c.assertEqual(metaData["dataset_add"], "add_value", "Metadata add") + c.assertEqual(metaData["dataset_delete"], undefined, "Metadata delete") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck) + }) + + QUnit.test("updateDataSets() link data set", function (assert) { + var c = new common(assert, dtos) + var code = "20160613195437233-437" + + var fCreate = function (facade: openbis.openbis) { + return [new dtos.DataSetPermId(code)] + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var linkUpdate = new dtos.LinkedDataUpdate() + linkUpdate.setExternalCode("new code") + + var update = new dtos.DataSetUpdate() + update.setDataSetId(permId) + update.setLinkedData(linkUpdate) + + return facade.updateDataSets([update]) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Code") + c.assertEqual(dataSet.getLinkedData().getExternalCode(), "new code", "External code") + c.assertEqual(dataSet.getLinkedData().getExternalDms().getPermId().toString(), "DMS_1", "External DMS") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck) + }) + + QUnit.test("updateDataSets() add content copy to link data set", function (assert) { + var c = new common(assert, dtos) + var edmsId = null + var code = null + + var fCreate = function (facade: openbis.openbis) { + return c.createLinkDataSet(facade, "root/path", "my-hash", "my-repository-id").then(function (permId) { + code = permId.getPermId() + return [permId] + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + return c.findDataSet(facade, permId).then(function (dataSet) { + var contentCopy = dataSet.getLinkedData().getContentCopies()[0] + edmsId = contentCopy.getExternalDms().getPermId() + var contentCopyListUpdateValue = new dtos.ContentCopyListUpdateValue() + var contentCopyCreation = new dtos.ContentCopyCreation() + contentCopyCreation.setExternalDmsId(edmsId) + contentCopyCreation.setPath("my/data/path") + contentCopyCreation.setGitCommitHash("my-git-hash") + contentCopyCreation.setGitRepositoryId("my-git-repository-id") + contentCopyListUpdateValue.add([contentCopyCreation]) + contentCopyListUpdateValue.remove([contentCopy.getId()]) + + var linkUpdate = new dtos.LinkedDataUpdate() + linkUpdate.setContentCopyActions(contentCopyListUpdateValue.getActions()) + + var update = new dtos.DataSetUpdate() + update.setDataSetId(permId) + update.setLinkedData(linkUpdate) + + return facade.updateDataSets([update]) + }) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Code") + var contentCopies = dataSet.getLinkedData().getContentCopies() + c.assertEqual(contentCopies.length, 1, "Number of content copies") + c.assertEqual(contentCopies[0].getExternalDms().getPermId().toString(), edmsId.toString(), "External DMS") + c.assertEqual(contentCopies[0].getExternalCode(), null, "External code") + c.assertEqual(contentCopies[0].getPath(), "/my/data/path", "Path") + c.assertEqual(contentCopies[0].getGitCommitHash(), "my-git-hash", "Git commit hash") + c.assertEqual(contentCopies[0].getGitRepositoryId(), "my-git-repository-id", "Git repository id") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck) + }) + + QUnit.test("updateMaterialTypes()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("MATERIAL_TYPE") + + var fCreate = function (facade: openbis.openbis) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("DESCRIPTION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("initial value") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + + var creation = new dtos.MaterialTypeCreation() + creation.setCode(code) + creation.setDescription("a new description") + creation.setPropertyAssignments([assignmentCreation]) + + return facade.createMaterialTypes([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setSection("test section 2") + assignmentCreation.setOrdinal(10) + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId("VERSION")) + assignmentCreation.setPluginId(new dtos.PluginPermId("Diff_time")) + assignmentCreation.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("1.0") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + var update = new dtos.MaterialTypeUpdate() + update.setTypeId(permId) + update.setDescription("another new description") + update.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + update.getPropertyAssignments().add([assignmentCreation]) + update.getPropertyAssignments().remove([new dtos.PropertyAssignmentPermId(permId, new dtos.PropertyTypePermId("DESCRIPTION"))]) + return facade.updateMaterialTypes([update]) + } + + var fCheck = function (type: openbis.MaterialType) { + c.assertEqual(type.getCode(), code, "Type code") + c.assertEqual(type.getPermId().getPermId(), code, "Type perm id") + c.assertEqual(type.getDescription(), "another new description", "Description") + + c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count") + + var assignment = type.getPropertyAssignments()[0] + + c.assertEqual(assignment.getSection(), "test section 2", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual(assignment.getPropertyType().getCode(), "VERSION", "Assignment property type code") + c.assertEqual(assignment.isMandatory(), true, "Assignment mandatory") + c.assertEqual(assignment.isShowInEditView(), true, "Assignment ShowInEditView") + c.assertEqual(assignment.isShowRawValueInForms(), true, "Assignment ShowRawValueInForms") + } + + testUpdate(c, fCreate, fUpdate, c.findMaterialType, fCheck) + }) + + QUnit.test("updateMaterials()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("MATERIAL") + + var fCreate = function (facade: openbis.openbis) { + var materialCreation = new dtos.MaterialCreation() + materialCreation.setTypeId(new dtos.EntityTypePermId("COMPOUND")) + materialCreation.setCode(code) + materialCreation.setProperty("DESCRIPTION", "Metal") + return facade.createMaterials([materialCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var materialUpdate = new dtos.MaterialUpdate() + materialUpdate.setMaterialId(permId) + materialUpdate.setProperty("DESCRIPTION", "Alloy") + return facade.updateMaterials([materialUpdate]) + } + + var fCheck = function (material: openbis.Material) { + c.assertEqual(material.getCode(), code, "Material code") + c.assertEqual(material.getType().getCode(), "COMPOUND", "Type code") + var properties = material.getProperties() + c.assertEqual(properties["DESCRIPTION"], "Alloy", "Property DESCRIPTION") + } + + testUpdate(c, fCreate, fUpdate, c.findMaterial, fCheck) + }) + + QUnit.test("updatePropertyTypes()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("PROPERTY_TYPE") + var description = "Description of " + code + var label = "Label of " + code + var metaData1 = { greetings: "hello test" } + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PropertyTypeCreation() + creation.setCode(code) + creation.setLabel("Testing") + creation.setDescription("testing") + creation.setDataType(dtos.DataType.VARCHAR) + creation.setMetaData(metaData1) + return facade.createPropertyTypes([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.PropertyTypeUpdate() + update.setTypeId(new dtos.PropertyTypePermId(code)) + update.setDescription(description) + update.setLabel(label) + var metaData = update.getMetaData() + metaData.remove(["greetings"]) + metaData.put("valid", "true") + return facade.updatePropertyTypes([update]) + } + + var fCheck = function (propertyType: openbis.PropertyType) { + c.assertEqual(propertyType.getCode(), code, "Code") + c.assertEqual(propertyType.getDescription(), description, "Description") + c.assertEqual(propertyType.getLabel(), label, "Label") + c.assertEqualDictionary(propertyType.getMetaData(), { valid: "true" }, "Meta data") + } + + testUpdate(c, fCreate, fUpdate, c.findPropertyType, fCheck) + }) + + QUnit.test("updatePropertyTypes() convert data type ", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCode = c.generateId("PROPERTY_TYPE") + var dataSetTypeCode = c.generateId("DATA_SET_TYPE") + var code = c.generateId("DATA_SET") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + var dataSetTypeCreation = new dtos.DataSetTypeCreation() + dataSetTypeCreation.setCode(dataSetTypeCode) + dataSetTypeCreation.setPropertyAssignments([assignmentCreation]) + return facade.createDataSetTypes([dataSetTypeCreation]).then(function (results) { + var creation = new dtos.DataSetCreation() + creation.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)) + creation.setCode(code) + creation.setDataSetKind(dtos.DataSetKind.CONTAINER) + creation.setDataStoreId(new dtos.DataStorePermId("DSS1")) + creation.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")) + creation.setProperty(propertyTypeCode, "20130412140147735-20") + return facade.createDataSets([creation]) + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.PropertyTypeUpdate() + update.setTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + update.convertToDataType(dtos.DataType.VARCHAR) + return facade.updatePropertyTypes([update]) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Data set code") + c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code") + c.assertObjectsCount(Object.keys(dataSet.getSampleProperties()), 0) + c.assertEqual(dataSet.getProperties()[propertyTypeCode], "20130412140147735-20", "Property") + } + + testUpdate(c, fCreate, fUpdate, c.findDataSet, fCheck) + }) + + QUnit.test("updatePlugins()", function (assert) { + var c = new common(assert, dtos) + var name = c.generateId("PLUGIN") + var description = "Description of " + name + var script = "print 'hello'" + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PluginCreation() + creation.setName(name) + creation.setScript("pass") + creation.setDescription("old description") + creation.setAvailable(false) + creation.setPluginType(dtos.PluginType.MANAGED_PROPERTY) + return facade.createPlugins([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.PluginUpdate() + update.setPluginId(new dtos.PluginPermId(name)) + update.setDescription(description) + update.setScript(script) + return facade.updatePlugins([update]) + } + + var fCheck = function (plugin: openbis.Plugin) { + c.assertEqual(plugin.getName(), name, "Name") + c.assertEqual(plugin.getDescription(), description, "Description") + c.assertEqual(plugin.getScript(), script, "Script") + } + + testUpdate(c, fCreate, fUpdate, c.findPlugin, fCheck) + }) + + QUnit.test("updateVocabularies()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("VOCABULARY") + var description = "Description of " + code + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.VocabularyCreation() + creation.setCode(code) + return facade.createVocabularies([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.VocabularyUpdate() + update.setVocabularyId(permId) + update.setDescription(description) + update.setChosenFromList(true) + update.setUrlTemplate("https://www.ethz.ch") + return facade.updateVocabularies([update]) + } + + var fCheck = function (vocabulary: openbis.Vocabulary) { + c.assertEqual(vocabulary.getCode(), code, "Code") + c.assertEqual(vocabulary.getPermId().getPermId(), code, "Perm id") + c.assertEqual(vocabulary.getDescription(), description, "Description") + c.assertEqual(vocabulary.getUrlTemplate(), "https://www.ethz.ch", "URL template") + } + + testUpdate(c, fCreate, fUpdate, c.findVocabulary, fCheck) + }) + + QUnit.test("updateVocabularyTerms()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("VOCABULARY_TERM") + var description = "Description of " + code + + var fCreate = function (facade: openbis.openbis) { + var termCreation = new dtos.VocabularyTermCreation() + termCreation.setVocabularyId(new dtos.VocabularyPermId("TEST-VOCABULARY")) + termCreation.setCode(code) + return facade.createVocabularyTerms([termCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var termUpdate = new dtos.VocabularyTermUpdate() + termUpdate.setVocabularyTermId(permId) + termUpdate.setDescription(description) + return facade.updateVocabularyTerms([termUpdate]) + } + + var fCheck = function (term: openbis.VocabularyTerm) { + c.assertEqual(term.getCode(), code, "Term code") + c.assertEqual(term.getVocabulary().getCode(), "TEST-VOCABULARY", "Term vocabulary code") + c.assertEqual(term.getDescription(), description, "Term description") + } + + testUpdate(c, fCreate, fUpdate, c.findVocabularyTerm, fCheck) + }) + + QUnit.test("updateExternalDms()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("EDMS") + + var fCreate = function (facade: openbis.openbis) { + var edmsCreation = new dtos.ExternalDmsCreation() + edmsCreation.setCode(code) + edmsCreation.setLabel("Test EDMS") + edmsCreation.setAddressType(dtos.ExternalDmsAddressType.OPENBIS) + edmsCreation.setAddress("https://my-site/q=${term}") + return facade.createExternalDataManagementSystems([edmsCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var edmsUpdate = new dtos.ExternalDmsUpdate() + edmsUpdate.setExternalDmsId(permId) + edmsUpdate.setLabel("Test EDMS 2") + edmsUpdate.setAddress("https://my-second-site/q=${term}") + return facade.updateExternalDataManagementSystems([edmsUpdate]) + } + + var fCheck = function (edms: openbis.ExternalDms) { + c.assertEqual(edms.getCode(), code, "EDMS code") + c.assertEqual(edms.getLabel(), "Test EDMS 2", "EDMS label") + c.assertEqual(edms.getAddress(), "https://my-second-site/q=${term}", "EDMS address") + c.assertEqual(edms.getUrlTemplate(), "https://my-second-site/q=${term}", "EDMS URL template") + c.assertEqual(edms.getAddressType(), "OPENBIS", "EDMS address type") + c.assertEqual(edms.isOpenbis(), true, "EDMS is openBIS") + } + + testUpdate(c, fCreate, fUpdate, c.findExternalDms, fCheck) + }) + + QUnit.test("updateTags()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("TAG") + var description = "Description of " + code + + var fCreate = function (facade: openbis.openbis) { + var tagCreation = new dtos.TagCreation() + tagCreation.setCode(code) + return facade.createTags([tagCreation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var tagUpdate = new dtos.TagUpdate() + tagUpdate.setTagId(permId) + tagUpdate.setDescription(description) + return facade.updateTags([tagUpdate]) + } + + var fCheck = function (tag: openbis.Tag) { + c.assertEqual(tag.getCode(), code, "Tag code") + c.assertEqual(tag.getDescription(), description, "Tag description") + } + + testUpdate(c, fCreate, fUpdate, c.findTag, fCheck) + }) + + QUnit.test("updateAuthorizationGroups()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("AUTHORIZATION_GROUP") + var description = "Description of " + code + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.AuthorizationGroupCreation() + creation.setCode(code) + creation.setUserIds([new dtos.PersonPermId("power_user")]) + return facade.createAuthorizationGroups([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.AuthorizationGroupUpdate() + update.setAuthorizationGroupId(permId) + update.setDescription(description) + update.getUserIds().remove([new dtos.PersonPermId("power_user")]) + update.getUserIds().add([new dtos.PersonPermId("admin"), new dtos.Me()]) + return facade.updateAuthorizationGroups([update]) + } + + var fCheck = function (group: openbis.AuthorizationGroup) { + c.assertEqual(group.getCode(), code, "Code") + c.assertEqual(group.getDescription(), description, "Description") + var users = $.map(group.getUsers(), function (user) { + return user.getUserId() + }) + users.sort() + c.assertEqual(users.toString(), "admin,openbis_test_js", "Users") + } + + testUpdate(c, fCreate, fUpdate, c.findAuthorizationGroup, fCheck) + }) + + QUnit.test("updatePersons()", function (assert) { + var c = new common(assert, dtos) + var userId = c.generateId("USER") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PersonCreation() + creation.setUserId(userId) + return facade.createPersons([creation]).then(function (permIds) { + var creation = new dtos.RoleAssignmentCreation() + creation.setUserId(permIds[0]) + creation.setRole(dtos.Role.ADMIN) + return facade.createRoleAssignments([creation]).then(function (assignmentId) { + return permIds + }) + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.PersonUpdate() + update.setUserId(permId) + update.setSpaceId(new dtos.SpacePermId("TEST")) + return facade.updatePersons([update]) + } + + var fCheck = function (person: openbis.Person) { + c.assertEqual(person.getUserId(), userId, "User id") + c.assertEqual(person.getSpace().getCode(), "TEST", "Home space") + c.assertEqual(person.isActive(), true, "Active") + } + + testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck) + }) + + QUnit.test("updatePersons() deactivate", function (assert) { + var c = new common(assert, dtos) + var userId = c.generateId("USER") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PersonCreation() + creation.setUserId(userId) + return facade.createPersons([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.PersonUpdate() + update.setUserId(permId) + update.deactivate() + return facade.updatePersons([update]) + } + + var fCheck = function (person: openbis.Person) { + c.assertEqual(person.getUserId(), userId, "User id") + c.assertEqual(person.isActive(), false, "Active") + } + + testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck) + }) + + QUnit.test("updatePersons() deactivate and activate", function (assert) { + var c = new common(assert, dtos) + var userId = c.generateId("USER") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PersonCreation() + creation.setUserId(userId) + return facade.createPersons([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var deactivateUpdate = new dtos.PersonUpdate() + deactivateUpdate.setUserId(permId) + deactivateUpdate.deactivate() + return facade.updatePersons([deactivateUpdate]).then(function () { + var activateUpdate = new dtos.PersonUpdate() + activateUpdate.setUserId(permId) + activateUpdate.activate() + return facade.updatePersons([activateUpdate]) + }) + } + + var fCheck = function (person: openbis.Person) { + c.assertEqual(person.getUserId(), userId, "User id") + c.assertEqual(person.isActive(), true, "Active") + } + + testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck) + }) + + QUnit.test("updatePersons() webAppSettings", function (assert) { + var c = new common(assert, dtos) + var userId = c.generateId("USER") + + var WEB_APP_1 = "webApp1" + var WEB_APP_2 = "webApp2" + var WEB_APP_3 = "webApp3" + var WEB_APP_4 = "webApp4" + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PersonCreation() + creation.setUserId(userId) + return facade.createPersons([creation]) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.PersonUpdate() + update.setUserId(permId) + + var webApp1Update = update.getWebAppSettings(WEB_APP_1) + webApp1Update.add([new dtos.WebAppSettingCreation("n1a", "v1a")]) + webApp1Update.add([new dtos.WebAppSettingCreation("n1b", "v1b")]) + + var webApp2Update = update.getWebAppSettings(WEB_APP_2) + webApp2Update.add([new dtos.WebAppSettingCreation("n2a", "v2a")]) + + var webApp3Update = update.getWebAppSettings(WEB_APP_3) + webApp3Update.add([new dtos.WebAppSettingCreation("n3a", "v3a")]) + + var webApp4Update = update.getWebAppSettings(WEB_APP_4) + webApp4Update.add([new dtos.WebAppSettingCreation("n4a", "v4a")]) + + return facade.updatePersons([update]).then(function () { + var update = new dtos.PersonUpdate() + update.setUserId(permId) + + var webApp1Update = update.getWebAppSettings(WEB_APP_1) + webApp1Update.add([new dtos.WebAppSettingCreation("n1c", "v1c")]) + webApp1Update.remove(["n1b"]) + + var webApp2Update = update.getWebAppSettings(WEB_APP_2) + webApp2Update.set([new dtos.WebAppSettingCreation("n2a", "v2a updated"), new dtos.WebAppSettingCreation("n2c", "v2c")]) + + var webApp3Update = update.getWebAppSettings(WEB_APP_3) + webApp3Update.set([]) + + var webApp4Update = update.getWebAppSettings(WEB_APP_4) + webApp4Update.remove(["n4a"]) + + return facade.updatePersons([update]) + }) + } + + var fCheck = function (person: openbis.Person) { + c.assertEqual(person.getUserId(), userId, "User id") + c.assertEqual(Object.keys(person.getWebAppSettings()).length, 2, "Web apps") + + var webApp1 = person.getWebAppSettings(WEB_APP_1).getSettings() + c.assertEqual(Object.keys(webApp1).length, 2) + c.assertEqual(webApp1["n1a"].getValue(), "v1a") + c.assertEqual(webApp1["n1c"].getValue(), "v1c") + + var webApp2 = person.getWebAppSettings(WEB_APP_2).getSettings() + c.assertEqual(Object.keys(webApp2).length, 2) + c.assertEqual(webApp2["n2a"].getValue(), "v2a updated") + c.assertEqual(webApp2["n2c"].getValue(), "v2c") + } + + testUpdate(c, fCreate, fUpdate, c.findPerson, fCheck) + }) + + QUnit.test("updateOperationExecutions()", function (assert) { + var c = new common(assert, dtos) + var permId = null + + var fCreate = function (facade: openbis.openbis) { + return c.createOperationExecution(facade).then(function (id) { + permId = id + return [id] + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var executionUpdate = new dtos.OperationExecutionUpdate() + executionUpdate.setExecutionId(permId) + executionUpdate.setDescription("Description " + permId.getPermId()) + return facade.updateOperationExecutions([executionUpdate]) + } + + var fCheck = function (execution: openbis.OperationExecution) { + c.assertEqual(execution.getPermId().getPermId(), permId.getPermId(), "PermId") + c.assertEqual(execution.getDescription(), "Description " + permId.getPermId(), "Execution description") + } + + testUpdate(c, fCreate, fUpdate, c.findOperationExecution, fCheck) + }) + + QUnit.test("updateSemanticAnnotations()", function (assert) { + var c = new common(assert, dtos) + + var fCreate = function (facade: openbis.openbis) { + return c.createSemanticAnnotation(facade).then(function (permId) { + return [permId] + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + var update = new dtos.SemanticAnnotationUpdate() + update.setSemanticAnnotationId(permId) + update.setPredicateOntologyId("updatedPredicateOntologyId") + update.setPredicateOntologyVersion("updatedPredicateOntologyVersion") + update.setPredicateAccessionId("updatedPredicateAccessionId") + update.setDescriptorOntologyId("updatedDescriptorOntologyId") + update.setDescriptorOntologyVersion("updatedDescriptorOntologyVersion") + update.setDescriptorAccessionId("updatedDescriptorAccessionId") + return facade.updateSemanticAnnotations([update]) + } + + var fCheck = function (annotation: openbis.SemanticAnnotation) { + c.assertEqual(annotation.getPredicateOntologyId(), "updatedPredicateOntologyId", "Predicate Ontology Id") + c.assertEqual(annotation.getPredicateOntologyVersion(), "updatedPredicateOntologyVersion", "Predicate Ontology Version") + c.assertEqual(annotation.getPredicateAccessionId(), "updatedPredicateAccessionId", "Predicate Accession Id") + c.assertEqual(annotation.getDescriptorOntologyId(), "updatedDescriptorOntologyId", "Descriptor Ontology Id") + c.assertEqual(annotation.getDescriptorOntologyVersion(), "updatedDescriptorOntologyVersion", "Descriptor Ontology Version") + c.assertEqual(annotation.getDescriptorAccessionId(), "updatedDescriptorAccessionId", "Descriptor Accession Id") + } + + testUpdate(c, fCreate, fUpdate, c.findSemanticAnnotation, fCheck) + }) + + QUnit.test("updateQueries()", function (assert) { + var c = new common(assert, dtos) + + var update = new dtos.QueryUpdate() + update.setName(c.generateId("query")) + update.setDescription("updated description") + update.setDatabaseId(new dtos.QueryDatabaseName("openbisDB2")) + update.setQueryType(dtos.QueryType.SAMPLE) + update.setEntityTypeCodePattern("sample type pattern") + update.setSql("select * from samples where perm_id = ${key};") + update.setPublic(true) + + var fCreate = function (facade: openbis.openbis) { + return c.createQuery(facade).then(function (techId) { + return [techId] + }) + } + + var fUpdate = function (facade: openbis.openbis, techId) { + update.setQueryId(techId) + return facade.updateQueries([update]) + } + + var fCheck = function (query: openbis.Query) { + c.assertEqual(query.getName(), update.getName().getValue(), "Name") + c.assertEqual(query.getDescription(), update.getDescription().getValue(), "Description") + c.assertEqual( + (<openbis.QueryDatabaseName>query.getDatabaseId()).getName(), + (<openbis.QueryDatabaseName>update.getDatabaseId().getValue()).getName(), + "Database" + ) + c.assertEqual(query.getQueryType(), update.getQueryType().getValue(), "Query type") + c.assertEqual(query.getEntityTypeCodePattern(), update.getEntityTypeCodePattern().getValue(), "Entity type code pattern") + c.assertEqual(query.getSql(), update.getSql().getValue(), "Sql") + c.assertEqual(query.isPublic(), update.isPublic().getValue(), "Is public") + } + + testUpdate(c, fCreate, fUpdate, c.findQuery, fCheck) + }) + + QUnit.test("updatePersonalAccessTokens()", function (assert) { + var c = new common(assert, dtos) + + var update = new dtos.PersonalAccessTokenUpdate() + update.setAccessDate(new Date().getTime()) + + var fCreate = function (facade: openbis.openbis) { + return c.createPersonalAccessToken(facade).then(function (permId) { + return [permId] + }) + } + + var fUpdate = function (facade: openbis.openbis, permId) { + update.setPersonalAccessTokenId(permId) + return facade.updatePersonalAccessTokens([update]) + } + + var fCheck = function (pat: openbis.PersonalAccessToken) { + c.assertEqual(pat.getAccessDate(), update.getAccessDate().getValue(), "Access date") + } + + testUpdate(c, fCreate, fUpdate, c.findPersonalAccessToken, fCheck) + }) + } + + resolve(function () { + executeModule("Update tests (RequireJS)", new openbis(), dtos) + executeModule("Update tests (RequireJS - executeOperations)", new openbisExecuteOperations(new openbis(), dtos), dtos) + executeModule("Update tests (module VAR)", new window.openbis.openbis(), window.openbis) + executeModule( + "Update tests (module VAR - executeOperations)", + new openbisExecuteOperations(new window.openbis.openbis(), window.openbis), + window.openbis + ) + executeModule("Update tests (module ESM)", new window.openbisESM.openbis(), window.openbisESM) + executeModule( + "Update tests (module ESM - executeOperations)", + new openbisExecuteOperations(new window.openbisESM.openbis(), window.openbisESM), + window.openbisESM + ) + }) + }) +})