package com.constellio.app.ui;
import com.constellio.app.modules.rm.DemoTestRecords;
import com.constellio.app.modules.rm.RMConfigs;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.model.enums.DocumentsTypeChoice;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.wrappers.Document;
import com.constellio.app.modules.tasks.services.TasksSchemasRecordsServices;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.app.services.schemasDisplay.SchemasDisplayManager;
import com.constellio.data.dao.services.factories.DataLayerFactory;
import com.constellio.model.entities.Language;
import com.constellio.model.entities.records.Transaction;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.records.RecordServicesException;
import com.constellio.model.services.schemas.MetadataSchemaTypesAlteration;
import com.constellio.model.services.schemas.builders.MetadataSchemaBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
import com.constellio.model.services.users.UserServices;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.annotations.MainTest;
import com.constellio.sdk.tests.annotations.MainTestDefaultStart;
import com.constellio.sdk.tests.annotations.UiTest;
import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebDriver;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import static com.constellio.model.entities.schemas.MetadataValueType.*;
@UiTest
@MainTest
public class StartDemoRMConstellioAcceptTest extends ConstellioTest {
RecordServices recordServices;
ConstellioWebDriver driver;
RMTestRecords records = new RMTestRecords(zeCollection);
DemoTestRecords records2 = new DemoTestRecords("LaCollectionDeRida");
RMSchemasRecordsServices schemas;
@Before
public void setUp()
throws Exception {
//givenBackgroundThreadsEnabled();
givenTransactionLogIsEnabled();
prepareSystem(
withZeCollection().withConstellioRMModule().withAllTestUsers()
.withRMTest(records).withFoldersAndContainersOfEveryStatus()
);
inCollection(zeCollection).setCollectionTitleTo("Collection de test");
recordServices = getModelLayerFactory().newRecordServices();
AppLayerFactory appLayerFactory = getAppLayerFactory();
DataLayerFactory dataLayerFactory = appLayerFactory.getModelLayerFactory().getDataLayerFactory();
dataLayerFactory.getDataLayerLogger().setPrintAllQueriesLongerThanMS(0);
UserServices userServices = getModelLayerFactory().newUserServices();
String token = userServices.generateToken("admin");
String serviceKey = userServices.getUser("admin").getServiceKey();
System.out.println("Admin token : \"" + token + "\", Admin service key \"" + serviceKey + "\"");
System.out.println("http://localhost:7070/constellio/select?token=" + token + "&serviceKey=" + serviceKey
+ "&fq=-type_s:index" + "&q=*:*");
//givenConfig(RMConfigs.DOCUMENT_RETENTION_RULES, true);
getModelLayerFactory().getMetadataSchemasManager().modify(zeCollection, new MetadataSchemaTypesAlteration() {
@Override
public void alter(MetadataSchemaTypesBuilder types) {
types.getSchema(Document.DEFAULT_SCHEMA).create("dateMeta1").setType(DATE)
.addLabel(Language.French, "Date metadata 1");
types.getSchema(Document.DEFAULT_SCHEMA).create("dateMeta2").setType(DATE)
.addLabel(Language.French, "Date metadata 2");
types.getSchema(Document.DEFAULT_SCHEMA).create("dateTimeMeta").setType(DATE_TIME)
.addLabel(Language.French, "Datetime metadata");
}
});
}
@Test
@MainTestDefaultStart
public void startOnHomePageAsAdmin()
throws Exception {
//getAppLayerFactory().getSystemGlobalConfigsManager().setReindexingRequired(true);
//getDataLayerFactory().getDataLayerLogger().setPrintAllQueriesLongerThanMS(0);
setup();
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
private void setup() {
givenConfig(RMConfigs.DOCUMENTS_TYPES_CHOICE, DocumentsTypeChoice.ALL_DOCUMENTS_TYPES);
getModelLayerFactory().getMetadataSchemasManager().modify(zeCollection, new MetadataSchemaTypesAlteration() {
@Override
public void alter(MetadataSchemaTypesBuilder types) {
MetadataSchemaBuilder folderTestSchema = types.getSchemaType("folder").createCustomSchema("test");
MetadataSchemaBuilder documentTestSchema = types.getSchemaType("document").createCustomSchema("test");
MetadataSchemaBuilder taskTestSchema = types.getSchemaType("userTask").createCustomSchema("test");
MetadataSchemaBuilder folderTest2Schema = types.getSchemaType("folder").createCustomSchema("test2");
MetadataSchemaBuilder documentTest2Schema = types.getSchemaType("document").createCustomSchema("test2");
MetadataSchemaBuilder taskTest2Schema = types.getSchemaType("userTask").createCustomSchema("test2");
folderTestSchema.create("toto").setType(STRING).setDefaultValue("tata");
documentTestSchema.create("toto").setType(STRING).setDefaultValue("tata");
taskTestSchema.create("toto").setType(STRING).setDefaultValue("tata");
folderTest2Schema.create("toto").setType(STRING).setDefaultValue("titi");
documentTest2Schema.create("toto").setType(STRING).setDefaultValue("titi");
taskTest2Schema.create("toto").setType(STRING).setDefaultValue("titi");
folderTestSchema.create("metadataOnlyInTest").setType(STRING).setDefaultValue("tata");
documentTestSchema.create("metadataOnlyInTest").setType(STRING).setDefaultValue("tata");
taskTestSchema.create("metadataOnlyInTest").setType(STRING).setDefaultValue("tata");
}
});
SchemasDisplayManager schemaDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager();
schemaDisplayManager.saveSchema(
schemaDisplayManager.getSchema(zeCollection, "folder_test").withNewFormMetadata("toto").withNewFormMetadata(
"metadataOnlyInTest"));
schemaDisplayManager.saveSchema(schemaDisplayManager.getSchema(zeCollection, "folder_test2").withNewFormMetadata("toto"));
schemaDisplayManager.saveSchema(schemaDisplayManager.getSchema(zeCollection, "document_test").withNewFormMetadata("toto")
.withNewFormMetadata("metadataOnlyInTest"));
schemaDisplayManager
.saveSchema(schemaDisplayManager.getSchema(zeCollection, "document_test2").withNewFormMetadata("toto"));
schemaDisplayManager.saveSchema(schemaDisplayManager.getSchema(zeCollection, "userTask_test").withNewFormMetadata("toto")
.withNewFormMetadata("metadataOnlyInTest"));
schemaDisplayManager
.saveSchema(schemaDisplayManager.getSchema(zeCollection, "userTask_test2").withNewFormMetadata("toto"));
RMSchemasRecordsServices rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory());
TasksSchemasRecordsServices tasks = new TasksSchemasRecordsServices(zeCollection, getAppLayerFactory());
try {
Transaction transaction = new Transaction();
transaction.add(rm.newFolderType().setCode("aaaa").setTitle("aaaa").setLinkedSchema("folder_test"));
transaction.add(rm.newFolderType().setCode("bbbb").setTitle("bbbb").setLinkedSchema("folder_test2"));
transaction.add(rm.newDocumentType().setCode("aaaa").setTitle("aaaa").setLinkedSchema("document_test"));
transaction.add(rm.newDocumentType().setCode("bbbb").setTitle("bbbb").setLinkedSchema("document_test2"));
transaction.add(tasks.newTaskType().setCode("aaaa").setTitle("aaaa").setLinkedSchema("userTask_test"));
transaction.add(tasks.newTaskType().setCode("bbbb").setTitle("bbbb").setLinkedSchema("userTask_test2"));
getModelLayerFactory().newRecordServices().execute(transaction);
} catch (RecordServicesException e) {
throw new RuntimeException(e);
}
}
@Test
public void startApplicationWithSaveState()
throws Exception {
givenTransactionLogIsEnabled();
getCurrentTestSession().getFactoriesTestFeatures().givenSystemInState(
new File("/path/to/the/saveState.zip")).withPasswordsReset();
newWebDriver(loggedAsUserInCollection("zeUser", "myCollection"));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsChuckNorris()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(chuckNorris, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsDakota()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(dakota, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsRida()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(admin, "LaCollectionDeRida"));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsGandalf()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(gandalf, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsBob()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(bobGratton, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsCharles()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(charlesFrancoisXavier, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsEdouard()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(edouard, zeCollection));
waitUntilICloseTheBrowsers();
}
}