diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/dataset/create/UploadedDataSetCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/dataset/create/UploadedDataSetCreation.java index e9833b851857e8b4f63833b46a15748300353699..1d530520aa73e7b7cd9540d144e0daf98116a0b1 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/dataset/create/UploadedDataSetCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/dataset/create/UploadedDataSetCreation.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; + import com.fasterxml.jackson.annotation.JsonProperty; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString; @@ -30,6 +31,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.systemsx.cisd.base.annotation.JsonObject; + import com.fasterxml.jackson.databind.annotation.JsonDeserialize; /** @@ -50,7 +52,7 @@ public class UploadedDataSetCreation implements ICreation private ISampleId sampleId; @JsonProperty - @JsonDeserialize(contentUsing = PropertiesDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<String, Serializable>(); @JsonProperty @@ -99,6 +101,16 @@ public class UploadedDataSetCreation implements ICreation this.properties = properties; } + public Serializable getProperty(String propertyName) + { + return this.properties.get(propertyName); + } + + public void setProperty(String propertyName, Serializable propertyValue) + { + this.properties.put(propertyName, propertyValue); + } + public List<? extends IDataSetId> getParentIds() { return parentIds; diff --git a/api-openbis-javascript/src/v3/openbis.js b/api-openbis-javascript/src/v3/openbis.js index 020529fb0658d3533f1dc74697473a67138c70f6..1be2c4762b2bfc0a0eab3b857bd9aa61ac7731a8 100644 --- a/api-openbis-javascript/src/v3/openbis.js +++ b/api-openbis-javascript/src/v3/openbis.js @@ -565,6 +565,9 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria }); } + /** + * @deprecated Use "createExternalDataManagementSystems" method instead. + */ this.createExternalDms = function(creations) { var thisFacade = this; return thisFacade._private.ajaxRequest({ @@ -580,6 +583,21 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria }); } + this.createExternalDataManagementSystems = function(creations) { + var thisFacade = this; + return thisFacade._private.ajaxRequest({ + url : openbisUrl, + data : { + "method" : "createExternalDataManagementSystems", + "params" : [ thisFacade._private.sessionToken, creations ] + }, + returnType : { + name : "List", + arguments : [ "ExternalDmsPermId" ] + } + }); + } + this.createSamples = function(creations) { var thisFacade = this; return thisFacade._private.ajaxRequest({ diff --git a/api-openbis-typescript/build.gradle b/api-openbis-typescript/build.gradle index ea9d67608b978d8a0cc88830fe97640f6bd171e1..05dbf637d69f5bbd6d4b8105b2ffea45d5d9ccde 100644 --- a/api-openbis-typescript/build.gradle +++ b/api-openbis-typescript/build.gradle @@ -27,8 +27,7 @@ generateTypeScript { classPatterns = [ 'ch.ethz.sis.openbis.generic.asapi.v3.dto.**', 'ch.ethz.sis.openbis.generic.dssapi.v3.dto.**', - 'ch.ethz.sis.openbis.generic.typescript.OpenBISJavaScriptFacade', - 'ch.ethz.sis.openbis.generic.typescript.OpenBISJavaScriptDSSFacade' + 'ch.ethz.sis.openbis.generic.typescript.dto.**' ] excludeClassPatterns = [ "ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi", @@ -39,8 +38,10 @@ generateTypeScript { outputKind = 'module' outputFileType = 'declarationFile' namespace = 'openbis' + customTypeMappings = [ + "java.util.Date:number" + ] customTypeNaming = [ - "ch.ethz.sis.openbis.generic.typescript.OpenBISJavaScriptFacade:openbis", "ch.ethz.sis.openbis.generic.asapi.v3.dto.pat.search.PersonalAccessTokenSessionNameSearchCriteria:as_dto_pat_search_PersonalAccessTokenSessionNameSearchCriteria", "ch.ethz.sis.openbis.generic.asapi.v3.dto.session.search.PersonalAccessTokenSessionNameSearchCriteria:as_dto_session_search_PersonalAccessTokenSessionNameSearchCriteria", "ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria:as_dto_externaldms_search_ExternalDmsSearchCriteria", 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 7eab516c92ee1ed2b9faa332c46f5f272eaec789..2035b9ce79d1433ec3ba340f84fc22528eaeaf20 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 @@ -32,6 +32,7 @@ import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; +import com.google.common.base.Strings; import com.google.common.reflect.TypeToken; import ch.systemsx.cisd.base.annotation.JsonObject; @@ -73,6 +74,8 @@ public class OpenBISExtension extends Extension private static TsType resolveType(ProcessingContext processingContext, TsBeanModel bean, Type type) { + type = convertByteArrayToString(type); + TypeToken<?> typeToken = TypeToken.of(bean.getOrigin()).resolveType(type); TypeProcessor.Context context = new TypeProcessor.Context(processingContext.getSymbolTable(), processingContext.getLocalProcessor(), null); TsType tsType = context.processType(typeToken.getType()).getTsType(); @@ -85,7 +88,7 @@ public class OpenBISExtension extends Extension } } - return tsType; + return convertDateToNumber(tsType); } private static List<TsType.GenericVariableType> resolveTypeParameters(ProcessingContext processingContext, TsBeanModel bean, @@ -122,6 +125,49 @@ public class OpenBISExtension extends Extension return tsTypeParameters; } + private static Type convertByteArrayToString(Type type) + { + if (type instanceof Class<?>) + { + Class<?> clazz = (Class<?>) type; + if (clazz.isArray() && clazz.getComponentType().equals(byte.class)) + { + return String.class; + } + } + return type; + } + + private static TsType convertDateToNumber(TsType tsType) + { + if (TsType.Date.equals(tsType)) + { + return TsType.Number; + } + + if (tsType instanceof TsType.BasicArrayType) + { + TsType elementType = ((TsType.BasicArrayType) tsType).elementType; + return new TsType.BasicArrayType(convertDateToNumber(elementType)); + } + + if (tsType instanceof TsType.GenericReferenceType) + { + List<TsType> typeArguments = ((TsType.GenericReferenceType) tsType).typeArguments; + if (typeArguments != null && !typeArguments.isEmpty()) + { + List<TsType> newTypeArguments = new ArrayList<>(); + for (TsType typeArgument : typeArguments) + { + newTypeArguments.add(convertDateToNumber(typeArgument)); + } + return new TsType.GenericReferenceType(((TsType.GenericReferenceType) tsType).symbol, newTypeArguments); + } + } + + return tsType; + } + @Override public EmitterExtensionFeatures getFeatures() { @@ -200,12 +246,12 @@ public class OpenBISExtension extends Extension for (TsBeanModel tsBean : model.getBeans()) { JsonObject tsBeanJsonObject = tsBean.getOrigin().getAnnotation(JsonObject.class); + TypeScriptObject tsBeanTypeScriptObject = tsBean.getOrigin().getAnnotation(TypeScriptObject.class); - if (tsBeanJsonObject == null && !tsBean.getOrigin().equals(OpenBISJavaScriptFacade.class) && !tsBean.getOrigin() - .equals(OpenBISJavaScriptDSSFacade.class)) + if (tsBeanJsonObject == null && tsBeanTypeScriptObject == null) { - logger.info("Skipping bean " + tsBean.getOrigin().getName() + " as it is missing " + JsonObject.class.getSimpleName() - + " annotation."); + logger.info("Skipping bean " + tsBean.getOrigin().getName() + " as it is missing both " + JsonObject.class.getSimpleName() + + " and " + TypeScriptObject.class + " annotations."); continue; } @@ -240,7 +286,14 @@ public class OpenBISExtension extends Extension } TsType tsMethodParameterType = resolveType(processingContext, tsBean, methodParameter.getParameterizedType()); - tsMethodParameters.add(new TsParameterModel(methodParameter.getName(), tsMethodParameterType)); + + if (method.isVarArgs() && methodParameterIndex == method.getParameters().length - 1) + { + tsMethodParameters.add(new TsParameterModel("..." + methodParameter.getName(), tsMethodParameterType)); + } else + { + tsMethodParameters.add(new TsParameterModel(methodParameter.getName(), tsMethodParameterType)); + } } TsType tsMethodReturnType = resolveType(processingContext, tsBean, method.getGenericReturnType()); @@ -322,32 +375,37 @@ public class OpenBISExtension extends Extension new TsHelper( Collections.singletonList("export const " + tsBean.getName().getSimpleName() + ":" + tsConstructorBeanName))); + String tsBeanName = null; + if (tsBeanJsonObject != null) { - String tsBeanJsonName = tsBeanJsonObject.value().replaceAll("\\.", "_"); + tsBeanName = tsBeanJsonObject.value().replaceAll("\\.", "_"); + } else + { + tsBeanName = tsBeanTypeScriptObject.value(); + } - if (!tsBeanJsonName.equals(tsBean.getName().getSimpleName())) - { - tsBundleProperties.add(new TsPropertyModel(tsBeanJsonName, - new TsType.ReferenceType(new Symbol(tsConstructorBeanName)), null, true, null)); + if (!Strings.isNullOrEmpty(tsBeanName) && !tsBeanName.equals(tsBean.getName().getSimpleName())) + { + tsBundleProperties.add(new TsPropertyModel(tsBeanName, + new TsType.ReferenceType(new Symbol(tsConstructorBeanName)), null, true, null)); - tsHelpers.add(new TsHelper(Collections.singletonList("export const " + tsBeanJsonName + ":" + tsConstructorBeanName))); + tsHelpers.add(new TsHelper(Collections.singletonList("export const " + tsBeanName + ":" + tsConstructorBeanName))); - if (tsBeanTypeParametersWithBounds.isEmpty()) - { - tsHelpers.add( - new TsHelper(Collections.singletonList("type " + tsBeanJsonName + " = " + tsBean.getName().getSimpleName()))); - } else - { - String tsBeanTypeParametersWithBoundsString = - tsBeanTypeParametersWithBounds.stream().map(TsType::toString).collect(Collectors.joining(",")); - String tsBeanTypeParametersWithoutBoundsString = - tsBeanTypeParametersWithoutBounds.stream().map(TsType::toString).collect(Collectors.joining(",")); - - tsHelpers.add(new TsHelper(Collections.singletonList( - "type " + tsBeanJsonName + "<" + tsBeanTypeParametersWithBoundsString + "> = " + tsBean.getName() - .getSimpleName() + "<" + tsBeanTypeParametersWithoutBoundsString + ">"))); - } + if (tsBeanTypeParametersWithBounds.isEmpty()) + { + tsHelpers.add( + new TsHelper(Collections.singletonList("type " + tsBeanName + " = " + tsBean.getName().getSimpleName()))); + } else + { + String tsBeanTypeParametersWithBoundsString = + tsBeanTypeParametersWithBounds.stream().map(TsType::toString).collect(Collectors.joining(",")); + String tsBeanTypeParametersWithoutBoundsString = + tsBeanTypeParametersWithoutBounds.stream().map(TsType::toString).collect(Collectors.joining(",")); + + tsHelpers.add(new TsHelper(Collections.singletonList( + "type " + tsBeanName + "<" + tsBeanTypeParametersWithBoundsString + "> = " + tsBean.getName() + .getSimpleName() + "<" + tsBeanTypeParametersWithoutBoundsString + ">"))); } } } @@ -427,11 +485,12 @@ public class OpenBISExtension extends Extension for (TsEnumModel tsEnum : model.getOriginalStringEnums()) { JsonObject tsEnumJsonObject = tsEnum.getOrigin().getAnnotation(JsonObject.class); + TypeScriptObject tsEnumTypeScriptObject = tsEnum.getOrigin().getAnnotation(TypeScriptObject.class); - if (tsEnumJsonObject == null) + if (tsEnumJsonObject == null && tsEnumTypeScriptObject == null) { - logger.info("Skipping enum " + tsEnum.getOrigin().getName() + " as it is missing " + JsonObject.class.getSimpleName() - + " annotation."); + logger.info("Skipping enum " + tsEnum.getOrigin().getName() + " as it is missing both " + JsonObject.class.getSimpleName() + + " and " + TypeScriptObject.class + " annotations."); continue; } @@ -460,7 +519,8 @@ public class OpenBISExtension extends Extension new TsType.ReferenceType(new Symbol(tsEnumObjectBeanName)), null, true, null)); tsHelpers.add(new TsHelper( - Collections.singletonList("const " + tsEnum.getName().getSimpleName() + " = {\n" + String.join(",\n", tsEnumConstProperties) + "} as const"))); + Collections.singletonList( + "const " + tsEnum.getName().getSimpleName() + " = {\n" + String.join(",\n", tsEnumConstProperties) + "} as const"))); tsHelpers.add(new TsHelper(Collections.singletonList( "type " + tsEnum.getName().getSimpleName() + " = typeof " + tsEnum.getName().getSimpleName() + "[keyof typeof " + tsEnum.getName().getSimpleName() + "]"))); @@ -473,7 +533,8 @@ public class OpenBISExtension extends Extension new TsType.ReferenceType(new Symbol(tsEnumObjectBeanName)), null, true, null)); tsHelpers.add( - new TsHelper(Collections.singletonList("const " + tsEnumJsonName + " = {\n" + String.join(",\n", tsEnumConstProperties) + "} as const"))); + new TsHelper(Collections.singletonList( + "const " + tsEnumJsonName + " = {\n" + String.join(",\n", tsEnumConstProperties) + "} as const"))); tsHelpers.add(new TsHelper(Collections.singletonList( "type " + tsEnumJsonName + " = typeof " + tsEnumJsonName + "[keyof typeof " + tsEnumJsonName + "]"))); diff --git a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/TypeScriptObject.java b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/TypeScriptObject.java new file mode 100644 index 0000000000000000000000000000000000000000..719239bdbdb345217e53f466f619442b6ce30ab5 --- /dev/null +++ b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/TypeScriptObject.java @@ -0,0 +1,13 @@ +package ch.ethz.sis.openbis.generic.typescript; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ ElementType.TYPE }) +@Retention(RetentionPolicy.RUNTIME) +public @interface TypeScriptObject +{ + public String value() default ""; +} diff --git a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISJavaScriptDSSFacade.java b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptDSSFacade.java similarity index 78% rename from api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISJavaScriptDSSFacade.java rename to api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptDSSFacade.java index ba49b42d3f5a9ad471602c62fa6a1398b7537d24..4c398ac9b6989ab610e19b2fa776b4b2e5d3bc65 100644 --- a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISJavaScriptDSSFacade.java +++ b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptDSSFacade.java @@ -1,4 +1,4 @@ -package ch.ethz.sis.openbis.generic.typescript; +package ch.ethz.sis.openbis.generic.typescript.dto; import java.io.InputStream; import java.util.List; @@ -17,11 +17,16 @@ import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.id.IDataSetFileId; import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.search.DataSetFileSearchCriteria; import ch.ethz.sis.openbis.generic.dssapi.v3.dto.service.CustomDSSServiceExecutionOptions; import ch.ethz.sis.openbis.generic.dssapi.v3.dto.service.id.ICustomDSSServiceId; +import ch.ethz.sis.openbis.generic.typescript.TypeScriptMethod; +import ch.ethz.sis.openbis.generic.typescript.TypeScriptObject; +@TypeScriptObject public class OpenBISJavaScriptDSSFacade implements IDataStoreServerApi { - private OpenBISJavaScriptDSSFacade(){} + private OpenBISJavaScriptDSSFacade() + { + } @TypeScriptMethod @Override public SearchResult<DataSetFile> searchFiles(final String sessionToken, final DataSetFileSearchCriteria searchCriteria, @@ -64,7 +69,14 @@ public class OpenBISJavaScriptDSSFacade implements IDataStoreServerApi } @TypeScriptMethod(sessionToken = false) - public String uploadFilesWorkspaceDSS(List<Object> files){ + public String uploadFilesWorkspaceDSS(List<Object> files) + { + return null; + } + + @TypeScriptMethod(sessionToken = false) + public CreateDataSetUploadResult createDataSetUpload(String dataSetType) + { return null; } @@ -79,4 +91,23 @@ public class OpenBISJavaScriptDSSFacade implements IDataStoreServerApi { return 0; } + + @TypeScriptObject + public static class CreateDataSetUploadResult + { + public String getId() + { + return null; + } + + public String getUrl(String folderPath, boolean ignoreFilePath) + { + return null; + } + + public String getDataSetType() + { + return null; + } + } } diff --git a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISJavaScriptFacade.java b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java similarity index 99% rename from api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISJavaScriptFacade.java rename to api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java index 171da9168c268587169ec2fd116c6dcdd75f6e13..889f87bb7672cc6c02bdfb7352beafffd4062a94 100644 --- a/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/OpenBISJavaScriptFacade.java +++ b/api-openbis-typescript/source/java/ch/ethz/sis/openbis/generic/typescript/dto/OpenBISJavaScriptFacade.java @@ -1,4 +1,4 @@ -package ch.ethz.sis.openbis.generic.typescript; +package ch.ethz.sis.openbis.generic.typescript.dto; import java.util.List; import java.util.Map; @@ -250,7 +250,10 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.VocabularySear import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.VocabularyTermSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.update.VocabularyTermUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.update.VocabularyUpdate; +import ch.ethz.sis.openbis.generic.typescript.TypeScriptMethod; +import ch.ethz.sis.openbis.generic.typescript.TypeScriptObject; +@TypeScriptObject("openbis") public class OpenBISJavaScriptFacade implements IApplicationServerApi { @@ -264,7 +267,7 @@ public class OpenBISJavaScriptFacade implements IApplicationServerApi } @TypeScriptMethod(sessionToken = false, async = false) - public OpenBISJavaScriptDSSFacade getDataStoreFacade(String dataStoreCode){ + 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 d3e1ed7914f88eaa857509c8e25617adb2ca9733..c611c1e25597ce4e6754cb4c10470761b7ff8529 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 @@ -1,7 +1,7 @@ define([ "test-compiled/test-login", "test/test-jsVSjava", - "test/test-create", + "test-compiled/test-create", "test/test-update", "test/test-search", diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/openbis-execute-operations.js b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/openbis-execute-operations.js index 047649ffbf93068bbcd28ba9779e376d4c081f84..f7f5a3c0f8cc7fd8f545d9963d13c2c84f2991bf 100644 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/openbis-execute-operations.js +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/openbis-execute-operations.js @@ -119,6 +119,10 @@ define([], function() { return this._executeCreateOperation(new dtos.CreateExternalDmsOperation(creations)); } + this.createExternalDataManagementSystems = function(creations) { + return this._executeCreateOperation(new dtos.CreateExternalDmsOperation(creations)); + } + this.createSamples = function(creations) { return this._executeCreateOperation(new dtos.CreateSamplesOperation(creations)); } diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.js b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.js deleted file mode 100644 index 4b20907a3cee421ff039dc2f6a2dcc4005af46fd..0000000000000000000000000000000000000000 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.js +++ /dev/null @@ -1,1581 +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 testCreate = function(c, fCreate, fFind, fCheck) { - c.start(); - - c.login(facade).then(function() { - return fCreate(facade).then(function(permIds) { - c.assertTrue(permIds != null && permIds.length == 1, "Entity was created"); - return fFind(facade, permIds[0]).then(function(entity) { - c.assertNotNull(entity, "Entity can be found"); - var token = fCheck(entity, facade); - if (token) { - token.then(function() { - c.finish() - }); - } else { - c.finish(); - } - }); - }); - }).fail(function(error) { - c.fail(error.message); - c.finish(); - }); - } - - QUnit.test("createPermIdStrings", function(assert) { - var c = new common(assert, dtos); - c.start(); - c.login(facade).then(function() { - return facade.createPermIdStrings(7).then(function(permIds) { - c.assertEqual(permIds.length, 7, "Number of perm ids"); - c.finish(); - }); - }).fail(function(error) { - c.fail(error.message); - c.finish(); - }); - }); - - QUnit.test("createCodes", function(assert) { - var c = new common(assert, dtos); - c.start(); - c.login(facade).then(function() { - return facade.createCodes("ABC-", dtos.EntityKind.SAMPLE, 7).then(function(codes) { - c.assertEqual(codes.length, 7, "Number of codes"); - c.finish(); - }); - }).fail(function(error) { - c.fail(error.message); - c.finish(); - }); - }); - - QUnit.test("createSpaces()", 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 fCheck = function(space) { - c.assertEqual(space.getCode(), code, "Code"); - c.assertEqual(space.getDescription(), "test description", "Description"); - } - - testCreate(c, fCreate, c.findSpace, fCheck); - }); - - QUnit.test("createProjects()", 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"); - attachmentCreation = new dtos.AttachmentCreation(); - attachmentCreation.setFileName("test_file"); - attachmentCreation.setTitle("test_title"); - attachmentCreation.setDescription("test_description"); - attachmentCreation.setContent(btoa("hello world!")); - projectCreation.setAttachments([ attachmentCreation ]); - return facade.createProjects([ projectCreation ]); - } - - var fCheck = function(project) { - c.assertEqual(project.getCode(), code, "Project code"); - c.assertEqual(project.getSpace().getCode(), "TEST", "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"); - } - - testCreate(c, fCreate, c.findProject, fCheck); - }); - - QUnit.test("createExperiments()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var experimentCreation = new dtos.ExperimentCreation(); - experimentCreation.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")); - experimentCreation.setCode(code); - experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - experimentCreation.setTagIds([ new dtos.TagCode("CREATE_JSON_TAG") ]); - attachmentCreation = new dtos.AttachmentCreation(); - attachmentCreation.setFileName("test_file"); - attachmentCreation.setTitle("test_title"); - attachmentCreation.setDescription("test_description"); - attachmentCreation.setContent(btoa("hello world!")); - experimentCreation.setAttachments([ attachmentCreation ]); - experimentCreation.setProperty("EXPERIMENT_DESIGN", "SEQUENCE_ENRICHMENT"); - experimentCreation.setMetaData({"meta_key":"meta_value"}) - return facade.createExperiments([ experimentCreation ]); - } - - 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"); - c.assertEqual(experiment.getTags()[0].code, "CREATE_JSON_TAG", "Tag code"); - var tags = experiment.getTags(); - c.assertEqual(tags[0].code, 'CREATE_JSON_TAG', "tags"); - c.assertEqual(tags.length, 1, "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 properties = experiment.getProperties(); - c.assertEqual(properties["EXPERIMENT_DESIGN"], "SEQUENCE_ENRICHMENT", "Property EXPERIMENT_DESIGN"); - c.assertEqual(Object.keys(properties), "EXPERIMENT_DESIGN", "Properties"); - var metaData = experiment.getMetaData(); - c.assertEqual(metaData["meta_key"], "meta_value", "metadata meta_key"); - } - - testCreate(c, fCreate, c.findExperiment, fCheck); - }); - - QUnit.test("createExperiment() with properties of type SAMPLE and DATE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCodeSample = c.generateId("PROPERTY_TYPE"); - var propertyTypeCodeDate = c.generateId("PROPERTY_TYPE"); - var experimentTypeCode = c.generateId("EXPERIMENT_TYPE"); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var propertyTypeCreation1 = new dtos.PropertyTypeCreation(); - propertyTypeCreation1.setCode(propertyTypeCodeSample); - propertyTypeCreation1.setDescription("hello"); - propertyTypeCreation1.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation1.setLabel("Test Property Type"); - var propertyTypeCreation2 = new dtos.PropertyTypeCreation(); - propertyTypeCreation2.setCode(propertyTypeCodeDate); - propertyTypeCreation2.setDescription("hello"); - propertyTypeCreation2.setDataType(dtos.DataType.DATE); - propertyTypeCreation2.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation1, propertyTypeCreation2 ]).then(function(results) { - var assignmentCreation1 = new dtos.PropertyAssignmentCreation(); - assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeSample)); - var assignmentCreation2 = new dtos.PropertyAssignmentCreation(); - assignmentCreation2.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeDate)); - var experimentTypeCreation = new dtos.ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode); - experimentTypeCreation.setPropertyAssignments([ assignmentCreation1, assignmentCreation2 ]); - 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(propertyTypeCodeSample, "20130412140147735-20"); - creation.setProperty(propertyTypeCodeDate, "2013-04-12"); - return facade.createExperiments([ creation ]); - }); - }); - } - - 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.getProperties()[propertyTypeCodeSample], "20130412140147735-20", "Sample property id"); - c.assertEqual(experiment.getProperties()[propertyTypeCodeDate], "2013-04-12", "Date property"); - c.assertEqual(experiment.getSampleProperties()[propertyTypeCodeSample][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-1", "Sample property"); - } - - testCreate(c, fCreate, c.findExperiment, fCheck); - }); - - QUnit.test("createExperiment() with unique property", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCodeUnique = c.generateId("PROPERTY_TYPE"); - var experimentTypeCode = c.generateId("EXPERIMENT_TYPE"); - var code = c.generateId("EXPERIMENT"); - var code2 = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var propertyTypeCreation1 = new dtos.PropertyTypeCreation(); - propertyTypeCreation1.setCode(propertyTypeCodeUnique); - propertyTypeCreation1.setDescription("unique text property"); - propertyTypeCreation1.setDataType(dtos.DataType.VARCHAR); - propertyTypeCreation1.setLabel("Test Unique Property Type"); - - return facade.createPropertyTypes([ propertyTypeCreation1 ]).then(function(results) { - var assignmentCreation1 = new dtos.PropertyAssignmentCreation(); - assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeUnique)); - assignmentCreation1.setUnique(true); - var experimentTypeCreation = new dtos.ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode); - experimentTypeCreation.setPropertyAssignments([ assignmentCreation1 ]); - 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(propertyTypeCodeUnique, "my_unique_value"); - return facade.createExperiments([ creation ]).then(function(results) { - var creation2 = new dtos.ExperimentCreation(); - creation2.setTypeId(new dtos.EntityTypePermId(experimentTypeCode)); - creation2.setCode(code2); - creation2.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")); - creation2.setProperty(propertyTypeCodeUnique, "my_unique_value"); - return facade.createExperiments([ creation2 ]); - });; - }); - - }); - } - - c.start(); - c.login(facade).then(function() { - return fCreate(facade) - .fail(function(error) { - c.assertEqual("Insert/Update of experiment failed because property contains value that is not unique! (value: my_unique_value) (Context: [])", error.message, "Uniqueness error message"); - c.finish(); - }); - }); - - }); - - QUnit.test("createExperiment() with multi-value property of type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCodeSample = c.generateId("PROPERTY_TYPE"); - - var experimentTypeCode = c.generateId("EXPERIMENT_TYPE"); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var propertyTypeCreation1 = new dtos.PropertyTypeCreation(); - propertyTypeCreation1.setCode(propertyTypeCodeSample); - propertyTypeCreation1.setDescription("hello"); - propertyTypeCreation1.setDataType(dtos.DataType.SAMPLE); - propertyTypeCreation1.setLabel("Test Property Type"); - propertyTypeCreation1.setMultiValue(true); - return facade.createPropertyTypes([ propertyTypeCreation1 ]).then(function(results) { - var assignmentCreation1 = new dtos.PropertyAssignmentCreation(); - assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeSample)); - var experimentTypeCreation = new dtos.ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode); - experimentTypeCreation.setPropertyAssignments([ assignmentCreation1 ]); - 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(propertyTypeCodeSample, ["20130412140147735-20", "20130424134657597-433"]); - return facade.createExperiments([ creation ]); - }); - }); - } - - 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"); - - var identifiers = experiment.getSampleProperties()[propertyTypeCodeSample].map(x => x.getIdentifier().getIdentifier()).sort(); - c.assertEqual(identifiers.toString(), ['/PLATONIC/SCREENING-EXAMPLES/PLATE-1', '/TEST/TEST-SAMPLE-1'].toString(), "Sample properties"); - c.assertEqual(experiment.getProperties()[propertyTypeCodeSample].sort().toString(), ["20130412140147735-20", "20130424134657597-433"].toString(), "Sample property ids"); - } - - testCreate(c, fCreate, c.findExperiment, fCheck); - }); - - QUnit.test("createExperiment() with multi-value property of type CONTROLLEDVOCABULARY", function(assert) { - var c = new common(assert, dtos); - var propertyTypeCodeVocab = c.generateId("PROPERTY_TYPE"); - - var experimentTypeCode = c.generateId("EXPERIMENT_TYPE"); - var code = c.generateId("EXPERIMENT"); - - var fCreate = function(facade) { - var propertyTypeCreation1 = new dtos.PropertyTypeCreation(); - propertyTypeCreation1.setCode(propertyTypeCodeVocab); - propertyTypeCreation1.setDescription("hello"); - propertyTypeCreation1.setDataType(dtos.DataType.CONTROLLEDVOCABULARY); - propertyTypeCreation1.setLabel("Test Property Type"); - propertyTypeCreation1.setMultiValue(true); - propertyTypeCreation1.setVocabularyId(new dtos.VocabularyPermId("$SUPPLIER.LANGUAGE")); - return facade.createPropertyTypes([ propertyTypeCreation1 ]).then(function(results) { - var assignmentCreation1 = new dtos.PropertyAssignmentCreation(); - assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeVocab)); - var experimentTypeCreation = new dtos.ExperimentTypeCreation(); - experimentTypeCreation.setCode(experimentTypeCode); - experimentTypeCreation.setPropertyAssignments([ assignmentCreation1 ]); - 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(propertyTypeCodeVocab, ["ENGLISH", "GERMAN"]); - return facade.createExperiments([ creation ]); - }); - }); - } - - 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.getProperties()[propertyTypeCodeVocab].sort().toString(), ["ENGLISH", "GERMAN"].toString(), "Vocabulary property ids"); - } - - testCreate(c, fCreate, c.findExperiment, fCheck); - }); - - QUnit.test("createExperimentTypes()", 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.setMandatory(true); - assignmentCreation.setInitialValueForExistingEntities("initial value"); - assignmentCreation.setShowInEditView(true); - assignmentCreation.setShowRawValueInForms(true); - - var creation = new dtos.ExperimentTypeCreation(); - creation.setCode(code); - creation.setDescription("a new description"); - creation.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - creation.setPropertyAssignments([ assignmentCreation ]); - creation.setMetaData({"type_key":"type_value"}); - - return facade.createExperimentTypes([ creation ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getPermId().toString(), code + " (EXPERIMENT)", "Full type perm id"); - c.assertEqual(type.getDescription(), "a new description", "Description"); - - c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count"); - - var assignment = type.getPropertyAssignments()[0]; - - c.assertEqual(assignment.getSection(), "test section", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "DESCRIPTION", "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"); - c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin"); - - var metaData = type.getMetaData(); - c.assertEqual(metaData["type_key"], "type_value", "Metadata"); - } - - testCreate(c, fCreate, c.findExperimentType, fCheck); - }); - - QUnit.test("createSamples()", 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_key":"sample_value"}); - return facade.createSamples([ creation ]); - } - - 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.assertEqual(sample.getTags()[0].getCode(), "CREATE_JSON_TAG", "Tag code"); - - var metaData = sample.getMetaData(); - c.assertEqual(metaData["sample_key"], "sample_value", "Metadata"); - } - - testCreate(c, fCreate, c.findSample, fCheck); - }); - - QUnit.test("createSamples() with annotated child", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE"); - var childId = new dtos.SampleIdentifier("/TEST/TEST-SAMPLE-1"); - - 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.setChildIds([ childId ]); - creation.relationship(childId) - .addParentAnnotation("type", "mother").addChildAnnotation("type", "daughter"); - return facade.createSamples([ creation ]); - } - - 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 child = sample.getChildren()[0]; - c.assertEqual(child.getIdentifier().getIdentifier(), childId.getIdentifier(), "Child"); - var relationship = sample.getChildRelationship(child.getPermId()); - c.assertEqualDictionary(relationship.getChildAnnotations(), {"type": "daughter"}, "Child annotations"); - c.assertEqualDictionary(relationship.getParentAnnotations(), {"type": "mother"}, "Parent annotations"); - } - - testCreate(c, fCreate, c.findSample, fCheck); - }); - - QUnit.test("createSamples() with annotated parent", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("SAMPLE"); - var parentId = new dtos.SampleIdentifier("/TEST/TEST-SAMPLE-1"); - - 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.relationship(parentId) - .addParentAnnotation("type", "mother").addChildAnnotation("type", "daughter"); - return facade.createSamples([ creation ]); - } - - 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 relationship = sample.getParentRelationship(parent.getPermId()); - c.assertEqualDictionary(relationship.getChildAnnotations(), {"type": "daughter"}, "Child annotations"); - c.assertEqualDictionary(relationship.getParentAnnotations(), {"type": "mother"}, "Parent annotations"); - } - - testCreate(c, fCreate, c.findSample, fCheck); - }); - - QUnit.test("createSamples() with 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 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-1", "Sample property"); - c.assertEqual(sample.getProperties()[propertyTypeCode], "20130412140147735-20", "Sample property id"); - } - - testCreate(c, fCreate, c.findSample, fCheck); - }); - - - QUnit.test("createSamples() with a unique property", 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 code2 = c.generateId("SAMPLE"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.VARCHAR); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - assignmentCreation.setUnique(true); - 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, "my_unique_value"); - return facade.createSamples([ creation ]).then(function(results) { - var creation2 = new dtos.SampleCreation(); - creation2.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)); - creation2.setCode(code2); - creation2.setSpaceId(new dtos.SpacePermId("TEST")); - creation2.setProperty(propertyTypeCode, "my_unique_value"); - return facade.createSamples([ creation2 ]); - });; - }); - }); - } - - c.start(); - c.login(facade).then(function() { - return fCreate(facade) - .fail(function(error) { - c.assertEqual("Insert/Update of object failed because property contains value that is not unique! (value: my_unique_value) (Context: [])", error.message, "Uniqueness error message"); - c.finish(); - }); - }); - }); - - - QUnit.test("createSamples() with 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 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"); - var identifiers = sample.getSampleProperties()[propertyTypeCode].map(x => x.getIdentifier().getIdentifier()).sort(); - c.assertEqual(identifiers.toString(), ['/PLATONIC/SCREENING-EXAMPLES/PLATE-1', '/TEST/TEST-SAMPLE-1'].toString(), "Sample properties"); - c.assertEqual(sample.getProperties()[propertyTypeCode].sort().toString(), ["20130412140147735-20", "20130424134657597-433"].toString(), "Sample property ids"); - } - testCreate(c, fCreate, c.findSample, fCheck); - }); - - QUnit.test("createSamples() with multi-value property of type CONTROLLEDVOCABULARY", 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.CONTROLLEDVOCABULARY); - propertyTypeCreation.setLabel("Test Property Type"); - propertyTypeCreation.setMultiValue(true); - propertyTypeCreation.setVocabularyId(new dtos.VocabularyPermId("$SUPPLIER.LANGUAGE")); - 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, ["ENGLISH", "GERMAN"]); - return facade.createSamples([ creation ]); - }); - }); - } - - 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.getProperties()[propertyTypeCode].sort().toString(), ["ENGLISH", "GERMAN"].toString(), "Vocabulary property ids"); - } - testCreate(c, fCreate, c.findSample, fCheck); - }); - - QUnit.test("createSampleTypes()", 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.setAutoGeneratedCode(true); - creation.setSubcodeUnique(true); - creation.setGeneratedCodePrefix("TEST_PREFIX"); - creation.setListable(true); - creation.setShowContainer(true); - creation.setShowParents(true); - creation.setShowParentMetadata(true); - creation.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - creation.setPropertyAssignments([ assignmentCreation ]); - creation.setMetaData({"sample_type_key":"type_value"}); - - return facade.createSampleTypes([ creation ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "a new description", "Description"); - c.assertEqual(type.isAutoGeneratedCode(), true, "AutoGeneratedCode"); - c.assertEqual(type.isSubcodeUnique(), true, "SubcodeUnique"); - c.assertEqual(type.getGeneratedCodePrefix(), "TEST_PREFIX", "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", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "DESCRIPTION", "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"); - c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin"); - - var metaData = type.getMetaData(); - c.assertEqual(metaData["sample_type_key"], "type_value", "Metadata"); - } - - testCreate(c, fCreate, c.findSampleType, fCheck); - }); - - QUnit.test("createDataSets() link data set via DSS", function(assert) { - var c = new common(assert, dtos); - var emdsId = null; - - var fCreate = function(facade) { - return c.createExperiment(facade).then(function(experimentPermId) { - return c.createFileExternalDms(facade).then(function(emdsPermId) { - emdsId = emdsPermId; - var creation = new dtos.FullDataSetCreation(); - var dataSet = new dtos.DataSetCreation(); - dataSet.setCode(c.generateId("DATA_SET")); - dataSet.setTypeId(new dtos.EntityTypePermId("LINK_TYPE")); - dataSet.setExperimentId(experimentPermId); - dataSet.setDataStoreId(new dtos.DataStorePermId("DSS1")); - var linkedData = new dtos.LinkedDataCreation(); - var cc = new dtos.ContentCopyCreation(); - cc.setExternalDmsId(emdsPermId); - cc.setPath("my/path"); - linkedData.setContentCopies([ cc ]); - dataSet.setLinkedData(linkedData); - creation.setMetadataCreation(dataSet); - var f1 = new dtos.DataSetFileCreation(); - f1.setDirectory(true); - f1.setPath("root/folder"); - var f2 = new dtos.DataSetFileCreation(); - f2.setDirectory(false); - f2.setPath("root/my-file-in.txt"); - f2.setFileLength(42); - f2.setChecksumCRC32(123456); - creation.setFileMetadata([ f1, f2 ]); - return facade.getDataStoreFacade("DSS1", "DSS2").createDataSets([ creation ]); - }); - }); - } - - var fCheck = function(dataSet, facade) { - c.assertEqual(dataSet.getType().getCode(), "LINK_TYPE", "Data set type"); - var contentCopies = dataSet.getLinkedData().getContentCopies(); - c.assertEqual(contentCopies.length, 1, "Number of content copies"); - var contentCopy = contentCopies[0]; - c.assertEqual(contentCopy.getExternalDms().getPermId().toString(), emdsId.toString(), "External data management system"); - c.assertEqual(contentCopy.getPath(), "/my/path", "Content copy path"); - var dfd = $.Deferred() - var dataSetCode = dataSet.getCode(); - c.waitUntilIndexed(facade, dataSetCode, 10000).then(function() { - var criteria = new dtos.DataSetFileSearchCriteria(); - criteria.withDataSet().withCode().thatEquals(dataSet.getCode()); - facade.getDataStoreFacade("DSS1").searchFiles(criteria, c.createDataSetFileFetchOptions()).then(function(result) { - var files = result.getObjects(); - c.assertEqual(files.length, 4, "Number of files"); - files.sort(function(f1, f2) { - return f1.getPath().localeCompare(f2.getPath()); - }); - var expectedPaths = [ "", "root", "root/folder", "root/my-file-in.txt" ]; - var expectedDirectoryFlags = [ true, true, true, false ]; - var expectedSizes = [ 42, 42, 0, 42 ]; - var expectedChecksums = [ 0, 0, 0, 123456 ]; - for (i = 0; i < files.length; i++) { - var file = files[i]; - var postfix = " of file " + (i + 1); - c.assertEqual(file.getDataSetPermId().toString(), dataSetCode, "Data set" + postfix); - c.assertEqual(file.getDataStore().getCode(), "DSS1", "Data store" + postfix); - c.assertEqual(file.getPath(), expectedPaths[i], "Path" + postfix); - c.assertEqual(file.isDirectory(), expectedDirectoryFlags[i], "Directory flag" + postfix); - c.assertEqual(file.getChecksumCRC32(), expectedChecksums[i], "Checksum" + postfix); - } - dfd.resolve(); - }); - }); - return dfd.promise(); - } - - testCreate(c, fCreate, c.findDataSet, fCheck); - }); - - QUnit.test("createDataSet() with 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_key":"dataset_value"}); - return facade.createDataSets([ creation ]); - }); - }); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Data set code"); - c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code"); - c.assertEqual(dataSet.getProperties()[propertyTypeCode], "20130412140147735-20", "Sample property id"); - c.assertEqual(dataSet.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), "/PLATONIC/SCREENING-EXAMPLES/PLATE-1", "Sample property"); - - var metaData = dataSet.getMetaData(); - c.assertEqual(metaData["dataset_key"], "dataset_value", "Metadata"); - - } - - testCreate(c, fCreate, c.findDataSet, fCheck); - }); - - - QUnit.test("createDataSet() with unique property", 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 code2 = c.generateId("DATA_SET"); - - var fCreate = function(facade) { - var propertyTypeCreation = new dtos.PropertyTypeCreation(); - propertyTypeCreation.setCode(propertyTypeCode); - propertyTypeCreation.setDescription("hello"); - propertyTypeCreation.setDataType(dtos.DataType.VARCHAR); - propertyTypeCreation.setLabel("Test Property Type"); - return facade.createPropertyTypes([ propertyTypeCreation ]).then(function(results) { - var assignmentCreation = new dtos.PropertyAssignmentCreation(); - assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)); - assignmentCreation.setUnique(true); - 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, "my_unique_value"); - return facade.createDataSets([ creation ]).then(function(results) { - var creation2 = new dtos.DataSetCreation(); - creation2.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)); - creation2.setCode(code2); - creation2.setDataSetKind(dtos.DataSetKind.CONTAINER); - creation2.setDataStoreId(new dtos.DataStorePermId("DSS1")); - creation2.setExperimentId(new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT")); - creation2.setProperty(propertyTypeCode, "my_unique_value"); - return facade.createDataSets([ creation2 ]); - }); - }); - }); - } - - c.start(); - c.login(facade).then(function() { - return fCreate(facade) - .fail(function(error) { - c.assertEqual("Insert/Update of dataset failed because property contains value that is not unique! (value: my_unique_value) (Context: [])", error.message, "Uniqueness error message"); - c.finish(); - }); - }); - - }); - - QUnit.test("createDataSet() with 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_key":"dataset_value"}); - return facade.createDataSets([ creation ]); - }); - }); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Data set code"); - c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code"); - - var identifiers = dataSet.getSampleProperties()[propertyTypeCode].map(x => x.getIdentifier().getIdentifier()).sort(); - c.assertEqual(identifiers.toString(), ['/PLATONIC/SCREENING-EXAMPLES/PLATE-1', '/TEST/TEST-SAMPLE-1'].toString(), "Sample properties"); - c.assertEqual(dataSet.getProperties()[propertyTypeCode].sort().toString(), ["20130412140147735-20", "20130424134657597-433"].toString(), "Sample property ids"); - - var metaData = dataSet.getMetaData(); - c.assertEqual(metaData["dataset_key"], "dataset_value", "Metadata"); - - } - - testCreate(c, fCreate, c.findDataSet, fCheck); - }); - - QUnit.test("createDataSet() with multi-value property of type CONTROLLEDVOCABULARY", 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.CONTROLLEDVOCABULARY); - propertyTypeCreation.setLabel("Test Property Type"); - propertyTypeCreation.setMultiValue(true); - propertyTypeCreation.setVocabularyId(new dtos.VocabularyPermId("$SUPPLIER.LANGUAGE")); - 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, ["ENGLISH", "GERMAN"]); - creation.setMetaData({"dataset_key":"dataset_value"}); - return facade.createDataSets([ creation ]); - }); - }); - } - - var fCheck = function(dataSet) { - c.assertEqual(dataSet.getCode(), code, "Data set code"); - c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code"); - c.assertEqual(dataSet.getProperties()[propertyTypeCode].sort().toString(), ["ENGLISH", "GERMAN"].toString(), "Vocabulary property ids"); - var metaData = dataSet.getMetaData(); - c.assertEqual(metaData["dataset_key"], "dataset_value", "Metadata"); - } - - testCreate(c, fCreate, c.findDataSet, fCheck); - }); - - QUnit.test("createDataSetTypes()", 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.setMainDataSetPattern(".*\\.jpg"); - creation.setMainDataSetPath("original/images/"); - creation.setDisallowDeletion(true); - creation.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - creation.setPropertyAssignments([ assignmentCreation ]); - creation.setMetaData({"dataset_type_key":"dataset_type_value"}); - - return facade.createDataSetTypes([ creation ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "a 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", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "DESCRIPTION", "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"); - c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin"); - - var metaData = type.getMetaData(); - c.assertEqual(metaData["dataset_type_key"], "dataset_type_value", "Metadata"); - } - - testCreate(c, fCreate, c.findDataSetType, fCheck); - }); - - QUnit.test("createMaterials()", 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 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"], "Metal", "Property DESCRIPTION"); - } - - testCreate(c, fCreate, c.findMaterial, fCheck); - }); - - QUnit.test("createMaterialTypes()", 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.setValidationPluginId(new dtos.PluginPermId("Has_Parents")); - creation.setPropertyAssignments([ assignmentCreation ]); - - return facade.createMaterialTypes([ creation ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getDescription(), "a new description", "Description"); - - c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count"); - - var assignment = type.getPropertyAssignments()[0]; - - c.assertEqual(assignment.getSection(), "test section", "Assignment section"); - c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal"); - c.assertEqual(assignment.getPropertyType().getCode(), "DESCRIPTION", "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"); - c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin"); - } - - testCreate(c, fCreate, c.findMaterialType, fCheck); - }); - - QUnit.test("createPropertyTypes()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("PROPERTY_TYPE"); - var metaData = {"greetings" : "hello test"}; - - var fCreate = function(facade) { - var creation = new dtos.PropertyTypeCreation(); - creation.setCode(code); - creation.setDescription("hello"); - creation.setDataType(dtos.DataType.INTEGER); - creation.setLabel("Test Property Type"); - creation.setMetaData(metaData); - return facade.createPropertyTypes([ creation ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getLabel(), "Test Property Type", "Label"); - c.assertEqual(type.getDescription(), "hello", "Description"); - c.assertEqual(type.getDataType(), dtos.DataType.INTEGER, "Data type"); - c.assertEqual(type.getMetaData().toString(), metaData, "Meta data"); - - } - - testCreate(c, fCreate, c.findPropertyType, fCheck); - }); - - QUnit.test("createPropertyType() with data type SAMPLE", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("PROPERTY_TYPE"); - var metaData = {"greetings" : "hello test"}; - - var fCreate = function(facade) { - var creation = new dtos.PropertyTypeCreation(); - creation.setCode(code); - creation.setDescription("hello"); - creation.setDataType(dtos.DataType.SAMPLE); - creation.setLabel("Test Property Type"); - creation.setMetaData(metaData); - creation.setSampleTypeId(new dtos.EntityTypePermId("UNKNOWN", "SAMPLE")); - return facade.createPropertyTypes([ creation ]); - } - - var fCheck = function(type) { - c.assertEqual(type.getCode(), code, "Type code"); - c.assertEqual(type.getPermId().getPermId(), code, "Type perm id"); - c.assertEqual(type.getLabel(), "Test Property Type", "Label"); - c.assertEqual(type.getDescription(), "hello", "Description"); - c.assertEqual(type.getDataType(), dtos.DataType.SAMPLE, "Data type"); - c.assertEqual(type.getMetaData().toString(), metaData, "Meta data"); - c.assertEqual(type.getSampleType().toString(), "UNKNOWN", "Sample type"); - } - - testCreate(c, fCreate, c.findPropertyType, fCheck); - }); - - QUnit.test("createPlugins()", function(assert) { - var c = new common(assert, dtos); - var name = c.generateId("PLUGIN"); - - var fCreate = function(facade) { - var creation = new dtos.PluginCreation(); - creation.setName(name); - creation.setDescription("hello"); - creation.setPluginType(dtos.PluginType.ENTITY_VALIDATION); - creation.setScript("def a():\n pass"); - return facade.createPlugins([ creation ]); - } - - var fCheck = function(plugin) { - c.assertEqual(plugin.getName(), name, "Name"); - c.assertEqual(plugin.getPermId().getPermId(), name, "Perm id"); - c.assertEqual(plugin.getDescription(), "hello", "Description"); - c.assertEqual(plugin.getPluginKind(), dtos.PluginKind.JYTHON, "Plugin kind"); - c.assertEqual(plugin.getPluginType(), dtos.PluginType.ENTITY_VALIDATION, "Plugin type"); - c.assertEqual(plugin.getScript(), "def a():\n pass", "Script"); - c.assertEqual(plugin.isAvailable(), true, "Available?"); - } - - testCreate(c, fCreate, c.findPlugin, fCheck); - }); - - QUnit.test("createVocabularies()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("VOCABULARY"); - - var fCreate = function(facade) { - var vocabularyCreation = new dtos.VocabularyCreation(); - vocabularyCreation.setCode(code); - vocabularyCreation.setDescription("test description"); - vocabularyCreation.setManagedInternally(false); - vocabularyCreation.setChosenFromList(true); - vocabularyCreation.setUrlTemplate("https://www.ethz.ch"); - var termCreation = new dtos.VocabularyTermCreation(); - termCreation.setCode("alpha"); - vocabularyCreation.setTerms([ termCreation ]); - return facade.createVocabularies([ vocabularyCreation ]); - } - - var fCheck = function(vocabulary) { - c.assertEqual(vocabulary.getCode(), code, "Code"); - c.assertEqual(vocabulary.getDescription(), "test description", "Description"); - c.assertEqual(vocabulary.isManagedInternally(), false, "Managed internally"); - c.assertEqual(vocabulary.isChosenFromList(), true, "Chosen from list"); - c.assertEqual(vocabulary.getUrlTemplate(), "https://www.ethz.ch", "URL template"); - } - - testCreate(c, fCreate, c.findVocabulary, fCheck); - }); - - QUnit.test("createVocabularyTerms()", function(assert) { - var c = new common(assert, dtos); - var code = c.generateId("VOCABULARY_TERM"); - - var fCreate = function(facade) { - var termCreation = new dtos.VocabularyTermCreation(); - termCreation.setVocabularyId(new dtos.VocabularyPermId("TEST-VOCABULARY")); - termCreation.setCode(code); - termCreation.setLabel("test label"); - termCreation.setDescription("test description"); - termCreation.setOfficial(true); - termCreation.setPreviousTermId(new dtos.VocabularyTermPermId("TEST-TERM-1", "TEST-VOCABULARY")) - return facade.createVocabularyTerms([ termCreation ]); - } - - var fCheck = function(term) { - c.assertEqual(term.getCode(), code, "Term code"); - c.assertEqual(term.getVocabulary().getCode(), "TEST-VOCABULARY", "Term vocabulary code"); - c.assertEqual(term.getLabel(), "test label", "Term label"); - c.assertEqual(term.getDescription(), "test description", "Term description"); - c.assertEqual(term.isOfficial(), true, "Term official"); - c.assertEqual(term.getOrdinal(), 2, "Term ordinal"); - } - - testCreate(c, fCreate, c.findVocabularyTerm, fCheck); - }); - - QUnit.test("createExternalDataManagementSystem()", 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.FILE_SYSTEM); - edmsCreation.setAddress("host:my/path") - return facade.createExternalDms([ edmsCreation ]); - } - - var fCheck = function(edms) { - c.assertEqual(edms.getCode(), code, "EDMS code"); - c.assertEqual(edms.getLabel(), "Test EDMS", "EDMS label"); - c.assertEqual(edms.getAddress(), "host:my/path", "EDMS address"); - c.assertEqual(edms.getUrlTemplate(), "host:my/path", "EDMS URL template"); - c.assertEqual(edms.getAddressType(), "FILE_SYSTEM", "EDMS address type"); - c.assertEqual(edms.isOpenbis(), false, "EDMS is openBIS"); - } - - testCreate(c, fCreate, c.findExternalDms, fCheck); - }); - - QUnit.test("createTags()", 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); - tagCreation.setDescription(description); - return facade.createTags([ tagCreation ]); - } - - var fCheck = function(tag) { - c.assertEqual(tag.getCode(), code, "Tag code"); - c.assertEqual(tag.getDescription(), description, "Tag description"); - } - - testCreate(c, fCreate, c.findTag, fCheck); - }); - - QUnit.test("createAuthorizationGroups()", 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.setDescription(description); - creation.setUserIds([ new dtos.PersonPermId("power_user") ]); - return facade.createAuthorizationGroups([ creation ]); - } - - 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(), "power_user", "Users"); - } - - testCreate(c, fCreate, c.findAuthorizationGroup, fCheck); - }); - - QUnit.test("createRoleAssignments() for space user", function(assert) { - var c = new common(assert, dtos); - - var fCreate = function(facade) { - return c.createSpace(facade).then(function(spaceId) { - var creation = new dtos.RoleAssignmentCreation(); - creation.setRole(dtos.Role.POWER_USER); - creation.setUserId(new dtos.PersonPermId("power_user")); - creation.setSpaceId(spaceId); - return facade.createRoleAssignments([ creation ]); - }); - } - - var fCheck = function(roleAssignment) { - c.assertEqual(roleAssignment.getUser().getUserId(), "power_user", "User"); - c.assertEqual(roleAssignment.getRole(), dtos.Role.POWER_USER, "Role"); - c.assertEqual(roleAssignment.getRoleLevel(), dtos.RoleLevel.SPACE, "Role level"); - c.assertEqual(roleAssignment.getRegistrator().getUserId(), "openbis_test_js", "Registrator"); - } - - testCreate(c, fCreate, c.findRoleAssignment, fCheck); - }); - - QUnit.test("createPersons()", function(assert) { - var c = new common(assert, dtos); - var userId = c.generateId("user"); - - var fCreate = function(facade) { - var personCreation = new dtos.PersonCreation(); - personCreation.setUserId(userId); - personCreation.setSpaceId(new dtos.SpacePermId("TEST")) - return facade.createPersons([ personCreation ]); - } - - var fCheck = function(person) { - c.assertEqual(person.getUserId(), userId, "User id"); - c.assertEqual(person.getRegistrator().getUserId(), "openbis_test_js", "Registrator"); - c.assertEqual(person.isActive(), true, "User active"); - c.assertEqual(person.getSpace().getCode(), "TEST", "Home space"); - } - - testCreate(c, fCreate, c.findPerson, fCheck); - }); - - var createSemanticAnnotationCreation = function(c) { - var creation = new dtos.SemanticAnnotationCreation(); - creation.setPredicateOntologyId("jsPredicateOntologyId"); - creation.setPredicateOntologyVersion("jsPredicateOntologyVersion"); - creation.setPredicateAccessionId("jsPredicateAccessionId"); - creation.setDescriptorOntologyId("jsDescriptorOntologyId"); - creation.setDescriptorOntologyVersion("jsDescriptorOntologyVersion"); - creation.setDescriptorAccessionId("jsDescriptorAccessionId"); - return creation; - } - - var checkCreatedSemanticAnnotation = function(c, annotation) { - c.assertEqual(annotation.getPredicateOntologyId(), "jsPredicateOntologyId", "Predicate ontology id"); - c.assertEqual(annotation.getPredicateOntologyVersion(), "jsPredicateOntologyVersion", "Predicate ontology version"); - c.assertEqual(annotation.getPredicateAccessionId(), "jsPredicateAccessionId", "Predicate accession id"); - c.assertEqual(annotation.getDescriptorOntologyId(), "jsDescriptorOntologyId", "Descriptor ontology id"); - c.assertEqual(annotation.getDescriptorOntologyVersion(), "jsDescriptorOntologyVersion", "Descriptor ontology version"); - c.assertEqual(annotation.getDescriptorAccessionId(), "jsDescriptorAccessionId", "Descriptor accession id"); - } - - QUnit.test("createSemanticAnnotations() with entity type id", function(assert) { - var c = new common(assert, dtos); - - var fCreate = function(facade) { - var creation = createSemanticAnnotationCreation(c); - creation.setEntityTypeId(new dtos.EntityTypePermId("UNKNOWN", "SAMPLE")); - return facade.createSemanticAnnotations([ creation ]); - } - - var fCheck = function(annotation) { - checkCreatedSemanticAnnotation(c, annotation); - c.assertEqual(annotation.getEntityType().getCode(), "UNKNOWN", "Entity type code"); - } - - testCreate(c, fCreate, c.findSemanticAnnotation, fCheck); - }); - - QUnit.test("createSemanticAnnotations() with property type id", function(assert) { - var c = new common(assert, dtos); - - var fCreate = function(facade) { - var creation = createSemanticAnnotationCreation(c); - creation.setPropertyTypeId(new dtos.PropertyTypePermId("CONCENTRATION")); - return facade.createSemanticAnnotations([ creation ]); - } - - var fCheck = function(annotation) { - checkCreatedSemanticAnnotation(c, annotation); - c.assertEqual(annotation.getPropertyType().getCode(), "CONCENTRATION", "Property type code"); - } - - testCreate(c, fCreate, c.findSemanticAnnotation, fCheck); - }); - - QUnit.test("createSemanticAnnotations() with property assignment id", function(assert) { - var c = new common(assert, dtos); - - var fCreate = function(facade) { - var creation = createSemanticAnnotationCreation(c); - creation.setPropertyAssignmentId(new dtos.PropertyAssignmentPermId(new dtos.EntityTypePermId("ILLUMINA_FLOW_CELL", "SAMPLE"), new dtos.PropertyTypePermId("RUNNINGTIME"))); - return facade.createSemanticAnnotations([ creation ]); - } - - var fCheck = function(annotation) { - checkCreatedSemanticAnnotation(c, annotation); - c.assertEqual(annotation.getPropertyAssignment().getEntityType().getCode(), "ILLUMINA_FLOW_CELL", "Entity type code"); - c.assertEqual(annotation.getPropertyAssignment().getEntityType().getPermId().getEntityKind(), "SAMPLE", "Entity type kind"); - c.assertEqual(annotation.getPropertyAssignment().getPropertyType().getCode(), "RUNNINGTIME", "Property type code"); - } - - testCreate(c, fCreate, c.findSemanticAnnotation, fCheck); - }); - - QUnit - .test( - "createUploadedDataSet()", - function(assert) { - var c = new common(assert, dtos); - - var fCreate = function(facade) { - - // unfortunately old Firefox that is - // used together with our - // Selenium tests does not allow to use - // FormData class which - // would make constructing form data - // much easier - - var formData = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"filePath/file1.txt\"\r\nContent-Type: text/plain\r\n\r\n\r\ncontent1\r\n" - + "------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"); - - return dataStoreFacade.createDataSetUpload("UNKNOWN").then(function(upload) { - return $.ajax({ - url : upload.getUrl("testFolder", false), - type : "POST", - processData : false, - contentType : "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", - data : formData - }).then(function() { - return c.createExperiment(facade).then(function(experimentPermId) { - var creation = new dtos.UploadedDataSetCreation(); - creation.setUploadId(upload.getId()); - creation.setTypeId(new dtos.EntityTypePermId(upload.getDataSetType())); - creation.setExperimentId(experimentPermId); - creation.setProperty("DESCRIPTION", "test description"); - creation.setParentIds([ new dtos.DataSetPermId("20130424111751432-431") ]); - return dataStoreFacade.createUploadedDataSet(creation).then(function(permId) { - return [ permId ]; - }) - }); - }); - }); - } - - var fCheck = function(dataSet, facade) { - return c.waitUntilIndexed(facade, dataSet.getCode(), 10000).then(function() { - var dataStoreFacade = facade.getDataStoreFacade("DSS1"); - - var criteria = new dtos.DataSetFileSearchCriteria(); - criteria.withDataSet().withCode().thatEquals(dataSet.getCode()); - - return dataStoreFacade.searchFiles(criteria, c.createDataSetFileFetchOptions()).then(function(result) { - var files = result.getObjects(); - c.assertEqual(files.length, 6, "Number of files"); - c.assertEqual(files[0].path, "", "Path 0"); - c.assertEqual(files[1].path, "original", "Path 1"); - c.assertEqual(files[2].path, "original/testFolder", "Path 2"); - c.assertEqual(files[3].path, "original/testFolder/filePath", "Path 3"); - c.assertEqual(files[4].path, "original/testFolder/filePath/file1.txt", "Path 4"); - c.assertEqual(files[5].path, "original/testFolder/filePath/file2.txt", "Path 5"); - - c.assertEqual(dataSet.getType().getCode(), "UNKNOWN", "Type code"); - c.assertEqual(dataSet.getProperty("DESCRIPTION"), "test description", "'DESCRIPTION' property value"); - c.assertEqual(dataSet.getParents().length, 1, "Number of parents"); - c.assertEqual(dataSet.getParents()[0].getCode(), "20130424111751432-431", "Parent code"); - }); - }); - } - - testCreate(c, fCreate, c.findDataSet, fCheck); - }); - - QUnit.test("createQueries()", function(assert) { - var c = new common(assert, dtos); - - var queryCreation = new dtos.QueryCreation(); - queryCreation.setName(c.generateId("query")); - queryCreation.setDescription("test description"); - queryCreation.setDatabaseId(new dtos.QueryDatabaseName("openbisDB")); - queryCreation.setQueryType(dtos.QueryType.EXPERIMENT); - queryCreation.setEntityTypeCodePattern("test pattern"); - queryCreation.setSql("select code from spaces"); - queryCreation.setPublic(true); - - var fCreate = function(facade) { - return facade.createQueries([ queryCreation ]); - } - - var fCheck = function(query) { - c.assertNotNull(query.getPermId(), "Perm Id"); - c.assertEqual(query.getName(), queryCreation.getName(), "Name"); - c.assertEqual(query.getDescription(), queryCreation.getDescription(), "Description"); - c.assertEqual(query.getDatabaseId().getName(), queryCreation.getDatabaseId().getName(), "Database id"); - c.assertEqual(query.getDatabaseLabel(), "openBIS meta data", "Database label"); - c.assertEqual(query.getQueryType(), queryCreation.getQueryType(), "Query type"); - c.assertEqual(query.getEntityTypeCodePattern(), queryCreation.getEntityTypeCodePattern(), "Entity type code pattern"); - c.assertEqual(query.getSql(), queryCreation.getSql(), "Sql"); - c.assertEqual(query.isPublic(), queryCreation.isPublic(), "Is public"); - c.assertNotNull(query.getRegistrator().getUserId(), "Registrator user id"); - c.assertToday(query.getRegistrationDate(), "Registration date"); - c.assertToday(query.getModificationDate(), "Modification date"); - } - - testCreate(c, fCreate, c.findQuery, fCheck); - }); - - QUnit.test("createPersonalAccessTokens()", function(assert) { - var c = new common(assert, dtos); - var now = new Date(); - - var patCreation = new dtos.PersonalAccessTokenCreation(); - patCreation.setSessionName(c.generateId("pat")); - patCreation.setValidFromDate(now.getTime()); - patCreation.setValidToDate(new Date(now.getTime() + 24 * 3600 * 1000).getTime()); - - var fCreate = function(facade) { - return facade.createPersonalAccessTokens([ patCreation ]); - } - - var fCheck = function(pat) { - c.assertNotNull(pat.getPermId(), "Perm Id"); - c.assertNotNull(pat.getHash(), "Hash"); - c.assertEqual(pat.getSessionName(), patCreation.getSessionName(), "Session name"); - c.assertEqual(pat.getValidFromDate(), patCreation.getValidFromDate(), "Valid from date"); - c.assertEqual(pat.getValidToDate(), patCreation.getValidToDate(), "Valid to date"); - c.assertNotNull(pat.getOwner().getUserId(), "Owner user id"); - c.assertNotNull(pat.getRegistrator().getUserId(), "Registrator user id"); - c.assertNotNull(pat.getModifier().getUserId(), "Modifier user id"); - c.assertToday(pat.getRegistrationDate(), "Registration date"); - c.assertToday(pat.getModificationDate(), "Modification date"); - c.assertNull(pat.getAccessDate(), "Access date"); - } - - testCreate(c, fCreate, c.findPersonalAccessToken, fCheck); - }); - - } - - return function() { - executeModule("Create tests (RequireJS)", new openbis(), dtos); - executeModule("Create tests (RequireJS - executeOperations)", new openbisExecuteOperations(new openbis(), dtos), dtos); - executeModule("Create tests (module VAR)", new window.openbis.openbis(), window.openbis); - executeModule("Create tests (module VAR - executeOperations)", new openbisExecuteOperations(new window.openbis.openbis(), window.openbis), window.openbis); - executeModule("Create tests (module ESM)", new window.openbisESM.openbis(), window.openbisESM); - executeModule("Create 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-create.ts b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..89e8db6f5dfd0000b5c7297c4cf6cfbb5e28ea99 --- /dev/null +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-create.ts @@ -0,0 +1,1789 @@ +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 ($, _, openbisRequireJS, openbisExecuteOperations, common, dtos) { + var executeModule = function (moduleName: string, facade: openbis.openbis, dtos: openbis.bundle) { + QUnit.module(moduleName) + + var testCreate = function (c, fCreate, fFind, fCheck) { + c.start() + + c.login(facade) + .then(function () { + return fCreate(facade).then(function (permIds) { + c.assertTrue(permIds != null && permIds.length == 1, "Entity was created") + return fFind(facade, permIds[0]).then(function (entity) { + c.assertNotNull(entity, "Entity can be found") + var token = fCheck(entity, facade) + if (token) { + token.then(function () { + c.finish() + }) + } else { + c.finish() + } + }) + }) + }) + .fail(function (error) { + c.fail(error.message) + c.finish() + }) + } + + QUnit.test("createPermIdStrings", function (assert) { + var c = new common(assert, dtos) + c.start() + c.login(facade) + .then(function () { + return facade.createPermIdStrings(7).then(function (permIds) { + c.assertEqual(permIds.length, 7, "Number of perm ids") + c.finish() + }) + }) + .fail(function (error) { + c.fail(error.message) + c.finish() + }) + }) + + QUnit.test("createCodes", function (assert) { + var c = new common(assert, dtos) + c.start() + c.login(facade) + .then(function () { + return facade.createCodes("ABC-", dtos.EntityKind.SAMPLE, 7).then(function (codes) { + c.assertEqual(codes.length, 7, "Number of codes") + c.finish() + }) + }) + .fail(function (error) { + c.fail(error.message) + c.finish() + }) + }) + + QUnit.test("createSpaces()", 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 fCheck = function (space: openbis.Space) { + c.assertEqual(space.getCode(), code, "Code") + c.assertEqual(space.getDescription(), "test description", "Description") + } + + testCreate(c, fCreate, c.findSpace, fCheck) + }) + + QUnit.test("createProjects()", 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") + var attachmentCreation = new dtos.AttachmentCreation() + attachmentCreation.setFileName("test_file") + attachmentCreation.setTitle("test_title") + attachmentCreation.setDescription("test_description") + attachmentCreation.setContent(btoa("hello world!")) + projectCreation.setAttachments([attachmentCreation]) + return facade.createProjects([projectCreation]) + } + + 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(), "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") + } + + testCreate(c, fCreate, c.findProject, fCheck) + }) + + QUnit.test("createExperiments()", 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.setTypeId(new dtos.EntityTypePermId("HT_SEQUENCING")) + experimentCreation.setCode(code) + experimentCreation.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + experimentCreation.setTagIds([new dtos.TagCode("CREATE_JSON_TAG")]) + var attachmentCreation = new dtos.AttachmentCreation() + attachmentCreation.setFileName("test_file") + attachmentCreation.setTitle("test_title") + attachmentCreation.setDescription("test_description") + attachmentCreation.setContent(btoa("hello world!")) + experimentCreation.setAttachments([attachmentCreation]) + experimentCreation.setProperty("EXPERIMENT_DESIGN", "SEQUENCE_ENRICHMENT") + experimentCreation.setMetaData({ meta_key: "meta_value" }) + return facade.createExperiments([experimentCreation]) + } + + 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") + c.assertEqual(experiment.getTags()[0].getCode(), "CREATE_JSON_TAG", "Tag code") + var tags = experiment.getTags() + c.assertEqual(tags[0].getCode(), "CREATE_JSON_TAG", "tags") + c.assertEqual(tags.length, 1, "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 properties = experiment.getProperties() + c.assertEqual(properties["EXPERIMENT_DESIGN"], "SEQUENCE_ENRICHMENT", "Property EXPERIMENT_DESIGN") + c.assertEqual(Object.keys(properties), "EXPERIMENT_DESIGN", "Properties") + var metaData = experiment.getMetaData() + c.assertEqual(metaData["meta_key"], "meta_value", "metadata meta_key") + } + + testCreate(c, fCreate, c.findExperiment, fCheck) + }) + + QUnit.test("createExperiment() with properties of type SAMPLE and DATE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCodeSample = c.generateId("PROPERTY_TYPE") + var propertyTypeCodeDate = c.generateId("PROPERTY_TYPE") + var experimentTypeCode = c.generateId("EXPERIMENT_TYPE") + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation1 = new dtos.PropertyTypeCreation() + propertyTypeCreation1.setCode(propertyTypeCodeSample) + propertyTypeCreation1.setDescription("hello") + propertyTypeCreation1.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation1.setLabel("Test Property Type") + var propertyTypeCreation2 = new dtos.PropertyTypeCreation() + propertyTypeCreation2.setCode(propertyTypeCodeDate) + propertyTypeCreation2.setDescription("hello") + propertyTypeCreation2.setDataType(dtos.DataType.DATE) + propertyTypeCreation2.setLabel("Test Property Type") + return facade + .createPropertyTypes([propertyTypeCreation1, propertyTypeCreation2]) + .then(function (results) { + var assignmentCreation1 = new dtos.PropertyAssignmentCreation() + assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeSample)) + var assignmentCreation2 = new dtos.PropertyAssignmentCreation() + assignmentCreation2.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeDate)) + var experimentTypeCreation = new dtos.ExperimentTypeCreation() + experimentTypeCreation.setCode(experimentTypeCode) + experimentTypeCreation.setPropertyAssignments([assignmentCreation1, assignmentCreation2]) + 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(propertyTypeCodeSample, "20130412140147735-20") + creation.setProperty(propertyTypeCodeDate, "2013-04-12") + return facade.createExperiments([creation]) + }) + }) + } + + 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.getProperties()[propertyTypeCodeSample], + "20130412140147735-20", + "Sample property id" + ) + c.assertEqual(experiment.getProperties()[propertyTypeCodeDate], "2013-04-12", "Date property") + c.assertEqual( + experiment.getSampleProperties()[propertyTypeCodeSample][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-1", + "Sample property" + ) + } + + testCreate(c, fCreate, c.findExperiment, fCheck) + }) + + QUnit.test("createExperiment() with unique property", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCodeUnique = c.generateId("PROPERTY_TYPE") + var experimentTypeCode = c.generateId("EXPERIMENT_TYPE") + var code = c.generateId("EXPERIMENT") + var code2 = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation1 = new dtos.PropertyTypeCreation() + propertyTypeCreation1.setCode(propertyTypeCodeUnique) + propertyTypeCreation1.setDescription("unique text property") + propertyTypeCreation1.setDataType(dtos.DataType.VARCHAR) + propertyTypeCreation1.setLabel("Test Unique Property Type") + + return facade.createPropertyTypes([propertyTypeCreation1]).then(function (results) { + var assignmentCreation1 = new dtos.PropertyAssignmentCreation() + assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeUnique)) + assignmentCreation1.setUnique(true) + var experimentTypeCreation = new dtos.ExperimentTypeCreation() + experimentTypeCreation.setCode(experimentTypeCode) + experimentTypeCreation.setPropertyAssignments([assignmentCreation1]) + 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(propertyTypeCodeUnique, "my_unique_value") + return facade.createExperiments([creation]).then(function (results) { + var creation2 = new dtos.ExperimentCreation() + creation2.setTypeId(new dtos.EntityTypePermId(experimentTypeCode)) + creation2.setCode(code2) + creation2.setProjectId(new dtos.ProjectIdentifier("/TEST/TEST-PROJECT")) + creation2.setProperty(propertyTypeCodeUnique, "my_unique_value") + return facade.createExperiments([creation2]) + }) + }) + }) + } + + c.start() + c.login(facade).then(async function () { + try { + await fCreate(facade) + c.fail() + } catch (error) { + c.assertEqual( + "Insert/Update of experiment failed because property contains value that is not unique! (value: my_unique_value) (Context: [])", + error.message, + "Uniqueness error message" + ) + c.finish() + } + }) + }) + + QUnit.test("createExperiment() with multi-value property of type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCodeSample = c.generateId("PROPERTY_TYPE") + + var experimentTypeCode = c.generateId("EXPERIMENT_TYPE") + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation1 = new dtos.PropertyTypeCreation() + propertyTypeCreation1.setCode(propertyTypeCodeSample) + propertyTypeCreation1.setDescription("hello") + propertyTypeCreation1.setDataType(dtos.DataType.SAMPLE) + propertyTypeCreation1.setLabel("Test Property Type") + propertyTypeCreation1.setMultiValue(true) + return facade.createPropertyTypes([propertyTypeCreation1]).then(function (results) { + var assignmentCreation1 = new dtos.PropertyAssignmentCreation() + assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeSample)) + var experimentTypeCreation = new dtos.ExperimentTypeCreation() + experimentTypeCreation.setCode(experimentTypeCode) + experimentTypeCreation.setPropertyAssignments([assignmentCreation1]) + 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(propertyTypeCodeSample, [ + "20130412140147735-20", + "20130424134657597-433", + ]) + return facade.createExperiments([creation]) + }) + }) + } + + 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") + + var identifiers = experiment + .getSampleProperties() + [propertyTypeCodeSample].map((x) => x.getIdentifier().getIdentifier()) + .sort() + c.assertEqual( + identifiers.toString(), + ["/PLATONIC/SCREENING-EXAMPLES/PLATE-1", "/TEST/TEST-SAMPLE-1"].toString(), + "Sample properties" + ) + c.assertEqual( + experiment.getProperties()[propertyTypeCodeSample].sort().toString(), + ["20130412140147735-20", "20130424134657597-433"].toString(), + "Sample property ids" + ) + } + + testCreate(c, fCreate, c.findExperiment, fCheck) + }) + + QUnit.test("createExperiment() with multi-value property of type CONTROLLEDVOCABULARY", function (assert) { + var c = new common(assert, dtos) + var propertyTypeCodeVocab = c.generateId("PROPERTY_TYPE") + + var experimentTypeCode = c.generateId("EXPERIMENT_TYPE") + var code = c.generateId("EXPERIMENT") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation1 = new dtos.PropertyTypeCreation() + propertyTypeCreation1.setCode(propertyTypeCodeVocab) + propertyTypeCreation1.setDescription("hello") + propertyTypeCreation1.setDataType(dtos.DataType.CONTROLLEDVOCABULARY) + propertyTypeCreation1.setLabel("Test Property Type") + propertyTypeCreation1.setMultiValue(true) + propertyTypeCreation1.setVocabularyId(new dtos.VocabularyPermId("$SUPPLIER.LANGUAGE")) + return facade.createPropertyTypes([propertyTypeCreation1]).then(function (results) { + var assignmentCreation1 = new dtos.PropertyAssignmentCreation() + assignmentCreation1.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCodeVocab)) + var experimentTypeCreation = new dtos.ExperimentTypeCreation() + experimentTypeCreation.setCode(experimentTypeCode) + experimentTypeCreation.setPropertyAssignments([assignmentCreation1]) + 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(propertyTypeCodeVocab, ["ENGLISH", "GERMAN"]) + return facade.createExperiments([creation]) + }) + }) + } + + 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.getProperties()[propertyTypeCodeVocab].sort().toString(), + ["ENGLISH", "GERMAN"].toString(), + "Vocabulary property ids" + ) + } + + testCreate(c, fCreate, c.findExperiment, fCheck) + }) + + QUnit.test("createExperimentTypes()", 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.setMandatory(true) + assignmentCreation.setInitialValueForExistingEntities("initial value") + assignmentCreation.setShowInEditView(true) + assignmentCreation.setShowRawValueInForms(true) + + var creation = new dtos.ExperimentTypeCreation() + creation.setCode(code) + creation.setDescription("a new description") + creation.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + creation.setPropertyAssignments([assignmentCreation]) + creation.setMetaData({ type_key: "type_value" }) + + return facade.createExperimentTypes([creation]) + } + + 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.getPermId().toString(), code + " (EXPERIMENT)", "Full type perm id") + c.assertEqual(type.getDescription(), "a new description", "Description") + + c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count") + + var assignment = type.getPropertyAssignments()[0] + + c.assertEqual(assignment.getSection(), "test section", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual( + assignment.getPropertyType().getCode(), + "DESCRIPTION", + "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") + c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin") + + var metaData = type.getMetaData() + c.assertEqual(metaData["type_key"], "type_value", "Metadata") + } + + testCreate(c, fCreate, c.findExperimentType, fCheck) + }) + + QUnit.test("createSamples()", 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_key: "sample_value" }) + return facade.createSamples([creation]) + } + + 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.assertEqual(sample.getTags()[0].getCode(), "CREATE_JSON_TAG", "Tag code") + + var metaData = sample.getMetaData() + c.assertEqual(metaData["sample_key"], "sample_value", "Metadata") + } + + testCreate(c, fCreate, c.findSample, fCheck) + }) + + QUnit.test("createSamples() with annotated child", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE") + var childId = new dtos.SampleIdentifier("/TEST/TEST-SAMPLE-1") + + 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.setChildIds([childId]) + creation + .relationship(childId) + .addParentAnnotation("type", "mother") + .addChildAnnotation("type", "daughter") + return facade.createSamples([creation]) + } + + 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 child = sample.getChildren()[0] + c.assertEqual(child.getIdentifier().getIdentifier(), childId.getIdentifier(), "Child") + var relationship = sample.getChildRelationship(child.getPermId()) + c.assertEqualDictionary( + relationship.getChildAnnotations(), + { type: "daughter" }, + "Child annotations" + ) + c.assertEqualDictionary( + relationship.getParentAnnotations(), + { type: "mother" }, + "Parent annotations" + ) + } + + testCreate(c, fCreate, c.findSample, fCheck) + }) + + QUnit.test("createSamples() with annotated parent", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("SAMPLE") + var parentId = new dtos.SampleIdentifier("/TEST/TEST-SAMPLE-1") + + 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 + .relationship(parentId) + .addParentAnnotation("type", "mother") + .addChildAnnotation("type", "daughter") + return facade.createSamples([creation]) + } + + 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 relationship = sample.getParentRelationship(parent.getPermId()) + c.assertEqualDictionary( + relationship.getChildAnnotations(), + { type: "daughter" }, + "Child annotations" + ) + c.assertEqualDictionary( + relationship.getParentAnnotations(), + { type: "mother" }, + "Parent annotations" + ) + } + + testCreate(c, fCreate, c.findSample, fCheck) + }) + + QUnit.test("createSamples() with 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 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-1", + "Sample property" + ) + c.assertEqual( + sample.getProperties()[propertyTypeCode], + "20130412140147735-20", + "Sample property id" + ) + } + + testCreate(c, fCreate, c.findSample, fCheck) + }) + + QUnit.test("createSamples() with a unique property", 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 code2 = c.generateId("SAMPLE") + + var fCreate = function (facade: openbis.openbis) { + var propertyTypeCreation = new dtos.PropertyTypeCreation() + propertyTypeCreation.setCode(propertyTypeCode) + propertyTypeCreation.setDescription("hello") + propertyTypeCreation.setDataType(dtos.DataType.VARCHAR) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + assignmentCreation.setUnique(true) + 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, "my_unique_value") + return facade.createSamples([creation]).then(function (results) { + var creation2 = new dtos.SampleCreation() + creation2.setTypeId(new dtos.EntityTypePermId(sampleTypeCode)) + creation2.setCode(code2) + creation2.setSpaceId(new dtos.SpacePermId("TEST")) + creation2.setProperty(propertyTypeCode, "my_unique_value") + return facade.createSamples([creation2]) + }) + }) + }) + } + + c.start() + c.login(facade).then(async function () { + try { + await fCreate(facade) + c.fail() + } catch (error) { + c.assertEqual( + "Insert/Update of object failed because property contains value that is not unique! (value: my_unique_value) (Context: [])", + error.message, + "Uniqueness error message" + ) + c.finish() + } + }) + }) + + QUnit.test("createSamples() with 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 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") + var identifiers = sample + .getSampleProperties() + [propertyTypeCode].map((x) => x.getIdentifier().getIdentifier()) + .sort() + c.assertEqual( + identifiers.toString(), + ["/PLATONIC/SCREENING-EXAMPLES/PLATE-1", "/TEST/TEST-SAMPLE-1"].toString(), + "Sample properties" + ) + c.assertEqual( + sample.getProperties()[propertyTypeCode].sort().toString(), + ["20130412140147735-20", "20130424134657597-433"].toString(), + "Sample property ids" + ) + } + testCreate(c, fCreate, c.findSample, fCheck) + }) + + QUnit.test("createSamples() with multi-value property of type CONTROLLEDVOCABULARY", 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.CONTROLLEDVOCABULARY) + propertyTypeCreation.setLabel("Test Property Type") + propertyTypeCreation.setMultiValue(true) + propertyTypeCreation.setVocabularyId(new dtos.VocabularyPermId("$SUPPLIER.LANGUAGE")) + 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, ["ENGLISH", "GERMAN"]) + return facade.createSamples([creation]) + }) + }) + } + + 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.getProperties()[propertyTypeCode].sort().toString(), + ["ENGLISH", "GERMAN"].toString(), + "Vocabulary property ids" + ) + } + testCreate(c, fCreate, c.findSample, fCheck) + }) + + QUnit.test("createSampleTypes()", 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.setAutoGeneratedCode(true) + creation.setSubcodeUnique(true) + creation.setGeneratedCodePrefix("TEST_PREFIX") + creation.setListable(true) + creation.setShowContainer(true) + creation.setShowParents(true) + creation.setShowParentMetadata(true) + creation.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + creation.setPropertyAssignments([assignmentCreation]) + creation.setMetaData({ sample_type_key: "type_value" }) + + return facade.createSampleTypes([creation]) + } + + 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(), "a new description", "Description") + c.assertEqual(type.isAutoGeneratedCode(), true, "AutoGeneratedCode") + c.assertEqual(type.isSubcodeUnique(), true, "SubcodeUnique") + c.assertEqual(type.getGeneratedCodePrefix(), "TEST_PREFIX", "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", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual( + assignment.getPropertyType().getCode(), + "DESCRIPTION", + "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") + c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin") + + var metaData = type.getMetaData() + c.assertEqual(metaData["sample_type_key"], "type_value", "Metadata") + } + + testCreate(c, fCreate, c.findSampleType, fCheck) + }) + + QUnit.test("createDataSets() link data set via DSS", function (assert) { + var c = new common(assert, dtos) + var emdsId = null + + var fCreate = function (facade: openbis.openbis) { + return c.createExperiment(facade).then(function (experimentPermId) { + return c.createFileExternalDms(facade).then(function (emdsPermId) { + emdsId = emdsPermId + var creation = new dtos.FullDataSetCreation() + var dataSet = new dtos.DataSetCreation() + dataSet.setCode(c.generateId("DATA_SET")) + dataSet.setTypeId(new dtos.EntityTypePermId("LINK_TYPE")) + dataSet.setExperimentId(experimentPermId) + dataSet.setDataStoreId(new dtos.DataStorePermId("DSS1")) + var linkedData = new dtos.LinkedDataCreation() + var cc = new dtos.ContentCopyCreation() + cc.setExternalDmsId(emdsPermId) + cc.setPath("my/path") + linkedData.setContentCopies([cc]) + dataSet.setLinkedData(linkedData) + creation.setMetadataCreation(dataSet) + var f1 = new dtos.DataSetFileCreation() + f1.setDirectory(true) + f1.setPath("root/folder") + var f2 = new dtos.DataSetFileCreation() + f2.setDirectory(false) + f2.setPath("root/my-file-in.txt") + f2.setFileLength(42) + f2.setChecksumCRC32(123456) + creation.setFileMetadata([f1, f2]) + return facade.getDataStoreFacade("DSS1", "DSS2").createDataSets([creation]) + }) + }) + } + + var fCheck = function (dataSet: openbis.DataSet, facade: openbis.openbis) { + c.assertEqual(dataSet.getType().getCode(), "LINK_TYPE", "Data set type") + var contentCopies = dataSet.getLinkedData().getContentCopies() + c.assertEqual(contentCopies.length, 1, "Number of content copies") + var contentCopy = contentCopies[0] + c.assertEqual( + contentCopy.getExternalDms().getPermId().toString(), + emdsId.toString(), + "External data management system" + ) + c.assertEqual(contentCopy.getPath(), "/my/path", "Content copy path") + var dfd = $.Deferred() + var dataSetCode = dataSet.getCode() + c.waitUntilIndexed(facade, dataSetCode, 10000).then(function () { + var criteria = new dtos.DataSetFileSearchCriteria() + criteria.withDataSet().withCode().thatEquals(dataSet.getCode()) + facade + .getDataStoreFacade("DSS1") + .searchFiles(criteria, c.createDataSetFileFetchOptions()) + .then(function (result) { + var files = result.getObjects() + c.assertEqual(files.length, 4, "Number of files") + files.sort(function (f1, f2) { + return f1.getPath().localeCompare(f2.getPath()) + }) + var expectedPaths = ["", "root", "root/folder", "root/my-file-in.txt"] + var expectedDirectoryFlags = [true, true, true, false] + var expectedSizes = [42, 42, 0, 42] + var expectedChecksums = [0, 0, 0, 123456] + for (var i = 0; i < files.length; i++) { + var file = files[i] + var postfix = " of file " + (i + 1) + c.assertEqual(file.getDataSetPermId().toString(), dataSetCode, "Data set" + postfix) + c.assertEqual(file.getDataStore().getCode(), "DSS1", "Data store" + postfix) + c.assertEqual(file.getPath(), expectedPaths[i], "Path" + postfix) + c.assertEqual( + file.isDirectory(), + expectedDirectoryFlags[i], + "Directory flag" + postfix + ) + c.assertEqual(file.getChecksumCRC32(), expectedChecksums[i], "Checksum" + postfix) + } + dfd.resolve() + }) + }) + return dfd.promise() + } + + testCreate(c, fCreate, c.findDataSet, fCheck) + }) + + QUnit.test("createDataSet() with 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_key: "dataset_value" }) + return facade.createDataSets([creation]) + }) + }) + } + + 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.getProperties()[propertyTypeCode], + "20130412140147735-20", + "Sample property id" + ) + c.assertEqual( + dataSet.getSampleProperties()[propertyTypeCode][0].getIdentifier().getIdentifier(), + "/PLATONIC/SCREENING-EXAMPLES/PLATE-1", + "Sample property" + ) + + var metaData = dataSet.getMetaData() + c.assertEqual(metaData["dataset_key"], "dataset_value", "Metadata") + } + + testCreate(c, fCreate, c.findDataSet, fCheck) + }) + + QUnit.test("createDataSet() with unique property", 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 code2 = 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.VARCHAR) + propertyTypeCreation.setLabel("Test Property Type") + return facade.createPropertyTypes([propertyTypeCreation]).then(function (results) { + var assignmentCreation = new dtos.PropertyAssignmentCreation() + assignmentCreation.setPropertyTypeId(new dtos.PropertyTypePermId(propertyTypeCode)) + assignmentCreation.setUnique(true) + 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, "my_unique_value") + return facade.createDataSets([creation]).then(function (results) { + var creation2 = new dtos.DataSetCreation() + creation2.setTypeId(new dtos.EntityTypePermId(dataSetTypeCode)) + creation2.setCode(code2) + creation2.setDataSetKind(dtos.DataSetKind.CONTAINER) + creation2.setDataStoreId(new dtos.DataStorePermId("DSS1")) + creation2.setExperimentId( + new dtos.ExperimentIdentifier("/TEST/TEST-PROJECT/TEST-EXPERIMENT") + ) + creation2.setProperty(propertyTypeCode, "my_unique_value") + return facade.createDataSets([creation2]) + }) + }) + }) + } + + c.start() + c.login(facade).then(async function () { + try { + await fCreate(facade) + c.fail() + } catch (error) { + c.assertEqual( + "Insert/Update of dataset failed because property contains value that is not unique! (value: my_unique_value) (Context: [])", + error.message, + "Uniqueness error message" + ) + c.finish() + } + }) + }) + + QUnit.test("createDataSet() with 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_key: "dataset_value" }) + return facade.createDataSets([creation]) + }) + }) + } + + var fCheck = function (dataSet: openbis.DataSet) { + c.assertEqual(dataSet.getCode(), code, "Data set code") + c.assertEqual(dataSet.getType().getCode(), dataSetTypeCode, "Type code") + + var identifiers = dataSet + .getSampleProperties() + [propertyTypeCode].map((x) => x.getIdentifier().getIdentifier()) + .sort() + c.assertEqual( + identifiers.toString(), + ["/PLATONIC/SCREENING-EXAMPLES/PLATE-1", "/TEST/TEST-SAMPLE-1"].toString(), + "Sample properties" + ) + c.assertEqual( + dataSet.getProperties()[propertyTypeCode].sort().toString(), + ["20130412140147735-20", "20130424134657597-433"].toString(), + "Sample property ids" + ) + + var metaData = dataSet.getMetaData() + c.assertEqual(metaData["dataset_key"], "dataset_value", "Metadata") + } + + testCreate(c, fCreate, c.findDataSet, fCheck) + }) + + QUnit.test("createDataSet() with multi-value property of type CONTROLLEDVOCABULARY", 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.CONTROLLEDVOCABULARY) + propertyTypeCreation.setLabel("Test Property Type") + propertyTypeCreation.setMultiValue(true) + propertyTypeCreation.setVocabularyId(new dtos.VocabularyPermId("$SUPPLIER.LANGUAGE")) + 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, ["ENGLISH", "GERMAN"]) + creation.setMetaData({ dataset_key: "dataset_value" }) + return facade.createDataSets([creation]) + }) + }) + } + + 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.getProperties()[propertyTypeCode].sort().toString(), + ["ENGLISH", "GERMAN"].toString(), + "Vocabulary property ids" + ) + var metaData = dataSet.getMetaData() + c.assertEqual(metaData["dataset_key"], "dataset_value", "Metadata") + } + + testCreate(c, fCreate, c.findDataSet, fCheck) + }) + + QUnit.test("createDataSetTypes()", 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.setMainDataSetPattern(".*\\.jpg") + creation.setMainDataSetPath("original/images/") + creation.setDisallowDeletion(true) + creation.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + creation.setPropertyAssignments([assignmentCreation]) + creation.setMetaData({ dataset_type_key: "dataset_type_value" }) + + return facade.createDataSetTypes([creation]) + } + + 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(), "a 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", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual( + assignment.getPropertyType().getCode(), + "DESCRIPTION", + "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") + c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin") + + var metaData = type.getMetaData() + c.assertEqual(metaData["dataset_type_key"], "dataset_type_value", "Metadata") + } + + testCreate(c, fCreate, c.findDataSetType, fCheck) + }) + + QUnit.test("createMaterials()", 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 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"], "Metal", "Property DESCRIPTION") + } + + testCreate(c, fCreate, c.findMaterial, fCheck) + }) + + QUnit.test("createMaterialTypes()", 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.setValidationPluginId(new dtos.PluginPermId("Has_Parents")) + creation.setPropertyAssignments([assignmentCreation]) + + return facade.createMaterialTypes([creation]) + } + + 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(), "a new description", "Description") + + c.assertEqual(type.getPropertyAssignments().length, 1, "Assignments count") + + var assignment = type.getPropertyAssignments()[0] + + c.assertEqual(assignment.getSection(), "test section", "Assignment section") + c.assertEqual(assignment.getOrdinal(), 10, "Assignment ordinal") + c.assertEqual( + assignment.getPropertyType().getCode(), + "DESCRIPTION", + "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") + c.assertEqual(assignment.getPlugin().getName(), "Diff_time", "Assignment Plugin") + } + + testCreate(c, fCreate, c.findMaterialType, fCheck) + }) + + QUnit.test("createPropertyTypes()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("PROPERTY_TYPE") + var metaData = { greetings: "hello test" } + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PropertyTypeCreation() + creation.setCode(code) + creation.setDescription("hello") + creation.setDataType(dtos.DataType.INTEGER) + creation.setLabel("Test Property Type") + creation.setMetaData(metaData) + return facade.createPropertyTypes([creation]) + } + + var fCheck = function (type: openbis.PropertyType) { + c.assertEqual(type.getCode(), code, "Type code") + c.assertEqual(type.getPermId().getPermId(), code, "Type perm id") + c.assertEqual(type.getLabel(), "Test Property Type", "Label") + c.assertEqual(type.getDescription(), "hello", "Description") + c.assertEqual(type.getDataType(), dtos.DataType.INTEGER, "Data type") + c.assertEqual(type.getMetaData().toString(), metaData, "Meta data") + } + + testCreate(c, fCreate, c.findPropertyType, fCheck) + }) + + QUnit.test("createPropertyType() with data type SAMPLE", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("PROPERTY_TYPE") + var metaData = { greetings: "hello test" } + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PropertyTypeCreation() + creation.setCode(code) + creation.setDescription("hello") + creation.setDataType(dtos.DataType.SAMPLE) + creation.setLabel("Test Property Type") + creation.setMetaData(metaData) + creation.setSampleTypeId(new dtos.EntityTypePermId("UNKNOWN", "SAMPLE")) + return facade.createPropertyTypes([creation]) + } + + var fCheck = function (type: openbis.PropertyType) { + c.assertEqual(type.getCode(), code, "Type code") + c.assertEqual(type.getPermId().getPermId(), code, "Type perm id") + c.assertEqual(type.getLabel(), "Test Property Type", "Label") + c.assertEqual(type.getDescription(), "hello", "Description") + c.assertEqual(type.getDataType(), dtos.DataType.SAMPLE, "Data type") + c.assertEqual(type.getMetaData().toString(), metaData, "Meta data") + c.assertEqual(type.getSampleType().toString(), "UNKNOWN", "Sample type") + } + + testCreate(c, fCreate, c.findPropertyType, fCheck) + }) + + QUnit.test("createPlugins()", function (assert) { + var c = new common(assert, dtos) + var name = c.generateId("PLUGIN") + + var fCreate = function (facade: openbis.openbis) { + var creation = new dtos.PluginCreation() + creation.setName(name) + creation.setDescription("hello") + creation.setPluginType(dtos.PluginType.ENTITY_VALIDATION) + creation.setScript("def a():\n pass") + return facade.createPlugins([creation]) + } + + var fCheck = function (plugin: openbis.Plugin) { + c.assertEqual(plugin.getName(), name, "Name") + c.assertEqual(plugin.getPermId().getPermId(), name, "Perm id") + c.assertEqual(plugin.getDescription(), "hello", "Description") + c.assertEqual(plugin.getPluginKind(), dtos.PluginKind.JYTHON, "Plugin kind") + c.assertEqual(plugin.getPluginType(), dtos.PluginType.ENTITY_VALIDATION, "Plugin type") + c.assertEqual(plugin.getScript(), "def a():\n pass", "Script") + c.assertEqual(plugin.isAvailable(), true, "Available?") + } + + testCreate(c, fCreate, c.findPlugin, fCheck) + }) + + QUnit.test("createVocabularies()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("VOCABULARY") + + var fCreate = function (facade: openbis.openbis) { + var vocabularyCreation = new dtos.VocabularyCreation() + vocabularyCreation.setCode(code) + vocabularyCreation.setDescription("test description") + vocabularyCreation.setManagedInternally(false) + vocabularyCreation.setChosenFromList(true) + vocabularyCreation.setUrlTemplate("https://www.ethz.ch") + var termCreation = new dtos.VocabularyTermCreation() + termCreation.setCode("alpha") + vocabularyCreation.setTerms([termCreation]) + return facade.createVocabularies([vocabularyCreation]) + } + + var fCheck = function (vocabulary: openbis.Vocabulary) { + c.assertEqual(vocabulary.getCode(), code, "Code") + c.assertEqual(vocabulary.getDescription(), "test description", "Description") + c.assertEqual(vocabulary.isManagedInternally(), false, "Managed internally") + c.assertEqual(vocabulary.isChosenFromList(), true, "Chosen from list") + c.assertEqual(vocabulary.getUrlTemplate(), "https://www.ethz.ch", "URL template") + } + + testCreate(c, fCreate, c.findVocabulary, fCheck) + }) + + QUnit.test("createVocabularyTerms()", function (assert) { + var c = new common(assert, dtos) + var code = c.generateId("VOCABULARY_TERM") + + var fCreate = function (facade: openbis.openbis) { + var termCreation = new dtos.VocabularyTermCreation() + termCreation.setVocabularyId(new dtos.VocabularyPermId("TEST-VOCABULARY")) + termCreation.setCode(code) + termCreation.setLabel("test label") + termCreation.setDescription("test description") + termCreation.setOfficial(true) + termCreation.setPreviousTermId(new dtos.VocabularyTermPermId("TEST-TERM-1", "TEST-VOCABULARY")) + return facade.createVocabularyTerms([termCreation]) + } + + 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.getLabel(), "test label", "Term label") + c.assertEqual(term.getDescription(), "test description", "Term description") + c.assertEqual(term.isOfficial(), true, "Term official") + c.assertEqual(term.getOrdinal(), 2, "Term ordinal") + } + + testCreate(c, fCreate, c.findVocabularyTerm, fCheck) + }) + + QUnit.test("createExternalDataManagementSystem()", 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.FILE_SYSTEM) + edmsCreation.setAddress("host:my/path") + return facade.createExternalDataManagementSystems([edmsCreation]) + } + + var fCheck = function (edms: openbis.ExternalDms) { + c.assertEqual(edms.getCode(), code, "EDMS code") + c.assertEqual(edms.getLabel(), "Test EDMS", "EDMS label") + c.assertEqual(edms.getAddress(), "host:my/path", "EDMS address") + c.assertEqual(edms.getUrlTemplate(), "host:my/path", "EDMS URL template") + c.assertEqual(edms.getAddressType(), "FILE_SYSTEM", "EDMS address type") + c.assertEqual(edms.isOpenbis(), false, "EDMS is openBIS") + } + + testCreate(c, fCreate, c.findExternalDms, fCheck) + }) + + QUnit.test("createTags()", 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) + tagCreation.setDescription(description) + return facade.createTags([tagCreation]) + } + + var fCheck = function (tag: openbis.Tag) { + c.assertEqual(tag.getCode(), code, "Tag code") + c.assertEqual(tag.getDescription(), description, "Tag description") + } + + testCreate(c, fCreate, c.findTag, fCheck) + }) + + QUnit.test("createAuthorizationGroups()", 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.setDescription(description) + creation.setUserIds([new dtos.PersonPermId("power_user")]) + return facade.createAuthorizationGroups([creation]) + } + + 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(), "power_user", "Users") + } + + testCreate(c, fCreate, c.findAuthorizationGroup, fCheck) + }) + + QUnit.test("createRoleAssignments() for space user", function (assert) { + var c = new common(assert, dtos) + + var fCreate = function (facade: openbis.openbis) { + return c.createSpace(facade).then(function (spaceId) { + var creation = new dtos.RoleAssignmentCreation() + creation.setRole(dtos.Role.POWER_USER) + creation.setUserId(new dtos.PersonPermId("power_user")) + creation.setSpaceId(spaceId) + return facade.createRoleAssignments([creation]) + }) + } + + var fCheck = function (roleAssignment: openbis.RoleAssignment) { + c.assertEqual(roleAssignment.getUser().getUserId(), "power_user", "User") + c.assertEqual(roleAssignment.getRole(), dtos.Role.POWER_USER, "Role") + c.assertEqual(roleAssignment.getRoleLevel(), dtos.RoleLevel.SPACE, "Role level") + c.assertEqual(roleAssignment.getRegistrator().getUserId(), "openbis_test_js", "Registrator") + } + + testCreate(c, fCreate, c.findRoleAssignment, fCheck) + }) + + QUnit.test("createPersons()", function (assert) { + var c = new common(assert, dtos) + var userId = c.generateId("user") + + var fCreate = function (facade: openbis.openbis) { + var personCreation = new dtos.PersonCreation() + personCreation.setUserId(userId) + personCreation.setSpaceId(new dtos.SpacePermId("TEST")) + return facade.createPersons([personCreation]) + } + + var fCheck = function (person: openbis.Person) { + c.assertEqual(person.getUserId(), userId, "User id") + c.assertEqual(person.getRegistrator().getUserId(), "openbis_test_js", "Registrator") + c.assertEqual(person.isActive(), true, "User active") + c.assertEqual(person.getSpace().getCode(), "TEST", "Home space") + } + + testCreate(c, fCreate, c.findPerson, fCheck) + }) + + var createSemanticAnnotationCreation = function (c) { + var creation = new dtos.SemanticAnnotationCreation() + creation.setPredicateOntologyId("jsPredicateOntologyId") + creation.setPredicateOntologyVersion("jsPredicateOntologyVersion") + creation.setPredicateAccessionId("jsPredicateAccessionId") + creation.setDescriptorOntologyId("jsDescriptorOntologyId") + creation.setDescriptorOntologyVersion("jsDescriptorOntologyVersion") + creation.setDescriptorAccessionId("jsDescriptorAccessionId") + return creation + } + + var checkCreatedSemanticAnnotation = function (c, annotation: openbis.SemanticAnnotation) { + c.assertEqual(annotation.getPredicateOntologyId(), "jsPredicateOntologyId", "Predicate ontology id") + c.assertEqual( + annotation.getPredicateOntologyVersion(), + "jsPredicateOntologyVersion", + "Predicate ontology version" + ) + c.assertEqual(annotation.getPredicateAccessionId(), "jsPredicateAccessionId", "Predicate accession id") + c.assertEqual(annotation.getDescriptorOntologyId(), "jsDescriptorOntologyId", "Descriptor ontology id") + c.assertEqual( + annotation.getDescriptorOntologyVersion(), + "jsDescriptorOntologyVersion", + "Descriptor ontology version" + ) + c.assertEqual( + annotation.getDescriptorAccessionId(), + "jsDescriptorAccessionId", + "Descriptor accession id" + ) + } + + QUnit.test("createSemanticAnnotations() with entity type id", function (assert) { + var c = new common(assert, dtos) + + var fCreate = function (facade: openbis.openbis) { + var creation = createSemanticAnnotationCreation(c) + creation.setEntityTypeId(new dtos.EntityTypePermId("UNKNOWN", "SAMPLE")) + return facade.createSemanticAnnotations([creation]) + } + + var fCheck = function (annotation: openbis.SemanticAnnotation) { + checkCreatedSemanticAnnotation(c, annotation) + c.assertEqual(annotation.getEntityType().getCode(), "UNKNOWN", "Entity type code") + } + + testCreate(c, fCreate, c.findSemanticAnnotation, fCheck) + }) + + QUnit.test("createSemanticAnnotations() with property type id", function (assert) { + var c = new common(assert, dtos) + + var fCreate = function (facade: openbis.openbis) { + var creation = createSemanticAnnotationCreation(c) + creation.setPropertyTypeId(new dtos.PropertyTypePermId("CONCENTRATION")) + return facade.createSemanticAnnotations([creation]) + } + + var fCheck = function (annotation: openbis.SemanticAnnotation) { + checkCreatedSemanticAnnotation(c, annotation) + c.assertEqual(annotation.getPropertyType().getCode(), "CONCENTRATION", "Property type code") + } + + testCreate(c, fCreate, c.findSemanticAnnotation, fCheck) + }) + + QUnit.test("createSemanticAnnotations() with property assignment id", function (assert) { + var c = new common(assert, dtos) + + var fCreate = function (facade: openbis.openbis) { + var creation = createSemanticAnnotationCreation(c) + creation.setPropertyAssignmentId( + new dtos.PropertyAssignmentPermId( + new dtos.EntityTypePermId("ILLUMINA_FLOW_CELL", "SAMPLE"), + new dtos.PropertyTypePermId("RUNNINGTIME") + ) + ) + return facade.createSemanticAnnotations([creation]) + } + + var fCheck = function (annotation: openbis.SemanticAnnotation) { + checkCreatedSemanticAnnotation(c, annotation) + c.assertEqual( + annotation.getPropertyAssignment().getEntityType().getCode(), + "ILLUMINA_FLOW_CELL", + "Entity type code" + ) + c.assertEqual( + (<openbis.EntityTypePermId>( + annotation.getPropertyAssignment().getEntityType().getPermId() + )).getEntityKind(), + "SAMPLE", + "Entity type kind" + ) + c.assertEqual( + annotation.getPropertyAssignment().getPropertyType().getCode(), + "RUNNINGTIME", + "Property type code" + ) + } + + testCreate(c, fCreate, c.findSemanticAnnotation, fCheck) + }) + + QUnit.test("createUploadedDataSet()", function (assert) { + var c = new common(assert, dtos) + + var fCreate = function (facade: openbis.openbis) { + // unfortunately old Firefox that is + // used together with our + // Selenium tests does not allow to use + // FormData class which + // would make constructing form data + // much easier + + var formData = + '------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="file"; filename="filePath/file1.txt"\r\nContent-Type: text/plain\r\n\r\n\r\ncontent1\r\n' + + '------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") + + return dataStoreFacade.createDataSetUpload("UNKNOWN").then(function (upload) { + return $.ajax({ + url: upload.getUrl("testFolder", false), + type: "POST", + processData: false, + contentType: "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", + data: formData, + }).then(function () { + return c.createExperiment(facade).then(function (experimentPermId) { + var creation = new dtos.UploadedDataSetCreation() + creation.setUploadId(upload.getId()) + creation.setTypeId(new dtos.EntityTypePermId(upload.getDataSetType())) + creation.setExperimentId(experimentPermId) + creation.setProperty("DESCRIPTION", "test description") + creation.setParentIds([new dtos.DataSetPermId("20130424111751432-431")]) + return dataStoreFacade.createUploadedDataSet(creation).then(function (permId) { + return [permId] + }) + }) + }) + }) + } + + var fCheck = function (dataSet: openbis.DataSet, facade: openbis.openbis) { + return c.waitUntilIndexed(facade, dataSet.getCode(), 10000).then(function () { + var dataStoreFacade = facade.getDataStoreFacade("DSS1") + + var criteria = new dtos.DataSetFileSearchCriteria() + criteria.withDataSet().withCode().thatEquals(dataSet.getCode()) + + return dataStoreFacade + .searchFiles(criteria, c.createDataSetFileFetchOptions()) + .then(function (result) { + var files = result.getObjects() + c.assertEqual(files.length, 6, "Number of files") + c.assertEqual(files[0].getPath(), "", "Path 0") + c.assertEqual(files[1].getPath(), "original", "Path 1") + c.assertEqual(files[2].getPath(), "original/testFolder", "Path 2") + c.assertEqual(files[3].getPath(), "original/testFolder/filePath", "Path 3") + c.assertEqual(files[4].getPath(), "original/testFolder/filePath/file1.txt", "Path 4") + c.assertEqual(files[5].getPath(), "original/testFolder/filePath/file2.txt", "Path 5") + + c.assertEqual(dataSet.getType().getCode(), "UNKNOWN", "Type code") + c.assertEqual( + dataSet.getProperty("DESCRIPTION"), + "test description", + "'DESCRIPTION' property value" + ) + c.assertEqual(dataSet.getParents().length, 1, "Number of parents") + c.assertEqual(dataSet.getParents()[0].getCode(), "20130424111751432-431", "Parent code") + }) + }) + } + + testCreate(c, fCreate, c.findDataSet, fCheck) + }) + + QUnit.test("createQueries()", function (assert) { + var c = new common(assert, dtos) + + var queryCreation = new dtos.QueryCreation() + queryCreation.setName(c.generateId("query")) + queryCreation.setDescription("test description") + queryCreation.setDatabaseId(new dtos.QueryDatabaseName("openbisDB")) + queryCreation.setQueryType(dtos.QueryType.EXPERIMENT) + queryCreation.setEntityTypeCodePattern("test pattern") + queryCreation.setSql("select code from spaces") + queryCreation.setPublic(true) + + var fCreate = function (facade: openbis.openbis) { + return facade.createQueries([queryCreation]) + } + + var fCheck = function (query: openbis.Query) { + c.assertNotNull(query.getPermId(), "Perm Id") + c.assertEqual(query.getName(), queryCreation.getName(), "Name") + c.assertEqual(query.getDescription(), queryCreation.getDescription(), "Description") + c.assertEqual( + (<openbis.QueryDatabaseName>query.getDatabaseId()).getName(), + (<openbis.QueryDatabaseName>queryCreation.getDatabaseId()).getName(), + "Database id" + ) + c.assertEqual(query.getDatabaseLabel(), "openBIS meta data", "Database label") + c.assertEqual(query.getQueryType(), queryCreation.getQueryType(), "Query type") + c.assertEqual( + query.getEntityTypeCodePattern(), + queryCreation.getEntityTypeCodePattern(), + "Entity type code pattern" + ) + c.assertEqual(query.getSql(), queryCreation.getSql(), "Sql") + c.assertEqual(query.isPublic(), queryCreation.isPublic(), "Is public") + c.assertNotNull(query.getRegistrator().getUserId(), "Registrator user id") + c.assertToday(query.getRegistrationDate(), "Registration date") + c.assertToday(query.getModificationDate(), "Modification date") + } + + testCreate(c, fCreate, c.findQuery, fCheck) + }) + + QUnit.test("createPersonalAccessTokens()", function (assert) { + var c = new common(assert, dtos) + var now = new Date() + + var patCreation = new dtos.PersonalAccessTokenCreation() + patCreation.setSessionName(c.generateId("pat")) + patCreation.setValidFromDate(now.getTime()) + patCreation.setValidToDate(new Date(now.getTime() + 24 * 3600 * 1000).getTime()) + + var fCreate = function (facade: openbis.openbis) { + return facade.createPersonalAccessTokens([patCreation]) + } + + var fCheck = function (pat: openbis.PersonalAccessToken) { + c.assertNotNull(pat.getPermId(), "Perm Id") + c.assertNotNull(pat.getHash(), "Hash") + c.assertEqual(pat.getSessionName(), patCreation.getSessionName(), "Session name") + c.assertEqual(pat.getValidFromDate(), patCreation.getValidFromDate(), "Valid from date") + c.assertEqual(pat.getValidToDate(), patCreation.getValidToDate(), "Valid to date") + c.assertNotNull(pat.getOwner().getUserId(), "Owner user id") + c.assertNotNull(pat.getRegistrator().getUserId(), "Registrator user id") + c.assertNotNull(pat.getModifier().getUserId(), "Modifier user id") + c.assertToday(pat.getRegistrationDate(), "Registration date") + c.assertToday(pat.getModificationDate(), "Modification date") + c.assertNull(pat.getAccessDate(), "Access date") + } + + testCreate(c, fCreate, c.findPersonalAccessToken, fCheck) + }) + } + + resolve(function () { + executeModule("Create tests (RequireJS)", new openbisRequireJS(), dtos) + executeModule( + "Create tests (RequireJS - executeOperations)", + new openbisExecuteOperations(new openbisRequireJS(), dtos), + dtos + ) + executeModule("Create tests (module VAR)", new window.openbis.openbis(), window.openbis) + executeModule( + "Create tests (module VAR - executeOperations)", + new openbisExecuteOperations(new window.openbis.openbis(), window.openbis), + window.openbis + ) + executeModule("Create tests (module ESM)", new window.openbisESM.openbis(), window.openbisESM) + executeModule( + "Create 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-login.ts b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-login.ts index 67536cc5c1b48df13d34092da53da2cb2ee016e7..cb90803218b3e902965a9f1c595f80d8356291da 100644 --- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-login.ts +++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-login.ts @@ -4,7 +4,7 @@ exports.default = new Promise((resolve) => { require(["jquery", "underscore", "openbis", "test/common", "test/dtos"], function ( $, _, - openbisRequireJS: openbis.openbisConstructor, + openbisRequireJS, common, dtos ) {