package org.molgenis.integrationtest.platform.datatypeediting;
import org.molgenis.data.DataService;
import org.molgenis.data.EntityManager;
import org.molgenis.data.MolgenisDataException;
import org.molgenis.data.elasticsearch.index.job.IndexService;
import org.molgenis.data.meta.MetaDataService;
import org.molgenis.data.meta.model.AttributeFactory;
import org.molgenis.data.meta.model.EntityType;
import org.molgenis.data.meta.model.EntityTypeFactory;
import org.molgenis.integrationtest.platform.PlatformITConfig;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;
import static org.molgenis.data.meta.AttributeType.FILE;
import static org.molgenis.data.meta.AttributeType.STRING;
import static org.molgenis.data.meta.model.EntityType.AttributeRole.ROLE_ID;
import static org.molgenis.file.model.FileMetaMetaData.FILE_META;
import static org.molgenis.integrationtest.platform.PlatformIT.waitForWorkToBeFinished;
import static org.molgenis.security.core.runas.RunAsSystemProxy.runAsSystem;
import static org.slf4j.LoggerFactory.getLogger;
@ContextConfiguration(classes = { PlatformITConfig.class })
public class FileTypeEditing extends AbstractTestNGSpringContextTests
{
private final Logger LOG = getLogger(FileTypeEditing.class);
@Autowired
IndexService indexService;
@Autowired
AttributeFactory attributeFactory;
@Autowired
EntityTypeFactory entityTypeFactory;
@Autowired
DataService dataService;
@Autowired
EntityManager entityManager;
@Autowired
MetaDataService metaDataService;
@Test(expectedExceptions = MolgenisDataException.class, expectedExceptionsMessageRegExp = "Attribute data type update from \\[FILE\\] to \\[STRING\\] not allowed, allowed types are \\[\\]")
public void testNoConversionsAllowed()
{
EntityType entityType = entityTypeFactory.create("1");
entityType.setName("FileEntity");
entityType.setBackend("PostgreSQL");
entityType.addAttribute(attributeFactory.create().setName("id").setIdAttribute(true), ROLE_ID);
entityType.addAttribute(attributeFactory.create().setName("fileRef").setDataType(FILE)
.setRefEntity(dataService.getEntityType(FILE_META)));
runAsSystem(() ->
{
metaDataService.addEntityType(entityType);
entityType.getAttribute("fileRef").setDataType(STRING);
entityType.getAttribute("fileRef").setRefEntity(null);
metaDataService.updateEntityType(entityType);
});
}
}