Skip to content
Snippets Groups Projects
Commit ae7797b6 authored by Manuel Leduc's avatar Manuel Leduc
Browse files

[misc] Move finally block to AfterEach

Improves the screenshot in case of error.
parent ef88080e
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,7 @@
package org.xwiki.xclass.test.ui;
import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
......@@ -50,6 +51,13 @@ class ClassSheetIT
void setup(TestUtils setup)
{
setup.loginAsSuperAdmin();
setup.setHierarchyMode("parentchild");
}
@AfterEach
void tearDown(TestUtils setup)
{
setup.setHierarchyMode("reference");
}
/**
......@@ -60,101 +68,96 @@ void setup(TestUtils setup)
void createClass(TestUtils setup, TestReference reference) throws Exception
{
//TODO: rewrite the test to not rely on the breadcrumb based on parent/child mechanism.
setup.setHierarchyMode("parentchild");
try {
String spaceName = reference.getLastSpaceReference().getName();
String className = reference.getClass().getSimpleName();
String classDocName = className + "Class";
String classTitle = className + " Class";
String pageName = "createClass";
// Make sure the document doesn't exist.
setup.deletePage(spaceName, pageName);
// Ensure that class listing also works as guest user.
setup.forceGuestUser();
DataTypesPage dataTypesPage = DataTypesPage.gotoPage();
String dataTypesPageTitle = dataTypesPage.getDocumentTitle();
assertTrue(dataTypesPage.isClassListed("XWiki", "XWikiRights"));
assertFalse(dataTypesPage.isClassListed(spaceName, classDocName));
setup.loginAsSuperAdmin();
dataTypesPage = DataTypesPage.gotoPage();
// Create the class document.
ClassSheetPage classSheetPage = dataTypesPage.createClass(spaceName, className);
assertEquals(classTitle, classSheetPage.getDocumentTitle());
assertTrue(classSheetPage.hasBreadcrumbContent(dataTypesPageTitle, false));
// Add a property.
ClassEditPage classEditor = classSheetPage.clickDefineClassLink();
classEditor.addProperty("color", "String").setPrettyName("Your favorite color");
classEditor.clickSaveAndView();
// Add a new property.
classEditor = classSheetPage.clickEditClassLink();
classEditor.addProperty("age", "Number").setPrettyName("Your current age");
// Add a computed property.
String titleDisplayer =
IOUtils.toString(this.getClass().getResourceAsStream("/contentDisplayer.wiki"), "UTF-8");
classEditor.addProperty("description", "ComputedField").setPrettyName("Description")
.setMetaProperty("customDisplay", titleDisplayer);
classEditor.clickSaveAndView();
// Assert that the properties are listed.
assertTrue(classSheetPage.hasProperty("color", "Your favorite color", "String"));
assertTrue(classSheetPage.hasProperty("age", "Your current age", "Number"));
assertTrue(classSheetPage.hasProperty("description", "Description", "Computed Field"));
// Create and bind a sheet.
classSheetPage = classSheetPage.clickCreateSheetButton().clickBindSheetLink();
ViewPage sheetPage = classSheetPage.clickSheetLink();
assertEquals(className + " Sheet", sheetPage.getDocumentTitle());
sheetPage.clickBreadcrumbLink(classTitle);
// Create the template.
classSheetPage = classSheetPage.clickCreateTemplateButton().clickAddObjectToTemplateLink();
ViewPage templatePage = classSheetPage.clickTemplateLink();
assertEquals(className + " Template", templatePage.getDocumentTitle());
// The default edit button should take us to the In-line edit mode.
templatePage.edit();
InlinePage editPage = new InlinePage();
editPage.setValue("color", "red");
editPage.setValue("age", "13");
editPage.clickSaveAndContinue();
editPage.clickBreadcrumbLink(classTitle);
// Create a document based on the class template.
assertEquals(spaceName, classSheetPage.getNewPagePicker().getParentInput().getAttribute("value"));
editPage = classSheetPage.createNewDocument(spaceName, pageName);
assertEquals(pageName, editPage.getDocumentTitle());
assertEquals("red", editPage.getValue("color"));
assertEquals("13", editPage.getValue("age"));
editPage.setValue("color", "blue");
editPage.setValue("age", "27");
ViewPage viewPage = editPage.clickSaveAndView();
// Verify that the properties can be edited in-place.
EditablePropertyPane<String> colorProperty =
new EditablePropertyPane<>(String.format("%s.%s[0].color", spaceName, classDocName));
assertEquals("blue", colorProperty.clickEdit().getValue());
colorProperty.setValue("pink").clickSave();
assertEquals("pink", colorProperty.getDisplayValue());
EditablePropertyPane<String> descriptionProperty =
new EditablePropertyPane<>(String.format("%s.%s[0].description", spaceName, classDocName));
assertEquals("", descriptionProperty.clickEdit().getValue());
descriptionProperty.setValue("Tester").clickSave();
assertEquals("Tester", descriptionProperty.getDisplayValue());
assertEquals(pageName, viewPage.getDocumentTitle());
assertEquals("YOUR FAVORITE COLOR\npink\nYOUR CURRENT AGE\n27\nDESCRIPTION\nTester", viewPage.getContent());
viewPage.clickBreadcrumbLink(classTitle);
// Assert the created document is listed.
assertTrue(classSheetPage.hasDocument(pageName));
} finally {
setup.setHierarchyMode("reference");
}
String spaceName = reference.getLastSpaceReference().getName();
String className = reference.getClass().getSimpleName();
String classDocName = className + "Class";
String classTitle = className + " Class";
String pageName = "createClass";
// Make sure the document doesn't exist.
setup.deletePage(spaceName, pageName);
// Ensure that class listing also works as guest user.
setup.forceGuestUser();
DataTypesPage dataTypesPage = DataTypesPage.gotoPage();
String dataTypesPageTitle = dataTypesPage.getDocumentTitle();
assertTrue(dataTypesPage.isClassListed("XWiki", "XWikiRights"));
assertFalse(dataTypesPage.isClassListed(spaceName, classDocName));
setup.loginAsSuperAdmin();
dataTypesPage = DataTypesPage.gotoPage();
// Create the class document.
ClassSheetPage classSheetPage = dataTypesPage.createClass(spaceName, className);
assertEquals(classTitle, classSheetPage.getDocumentTitle());
assertTrue(classSheetPage.hasBreadcrumbContent(dataTypesPageTitle, false));
// Add a property.
ClassEditPage classEditor = classSheetPage.clickDefineClassLink();
classEditor.addProperty("color", "String").setPrettyName("Your favorite color");
classEditor.clickSaveAndView();
// Add a new property.
classEditor = classSheetPage.clickEditClassLink();
classEditor.addProperty("age", "Number").setPrettyName("Your current age");
// Add a computed property.
String titleDisplayer =
IOUtils.toString(this.getClass().getResourceAsStream("/contentDisplayer.wiki"), "UTF-8");
classEditor.addProperty("description", "ComputedField").setPrettyName("Description")
.setMetaProperty("customDisplay", titleDisplayer);
classEditor.clickSaveAndView();
// Assert that the properties are listed.
assertTrue(classSheetPage.hasProperty("color", "Your favorite color", "String"));
assertTrue(classSheetPage.hasProperty("age", "Your current age", "Number"));
assertTrue(classSheetPage.hasProperty("description", "Description", "Computed Field"));
// Create and bind a sheet.
classSheetPage = classSheetPage.clickCreateSheetButton().clickBindSheetLink();
ViewPage sheetPage = classSheetPage.clickSheetLink();
assertEquals(className + " Sheet", sheetPage.getDocumentTitle());
sheetPage.clickBreadcrumbLink(classTitle);
// Create the template.
classSheetPage = classSheetPage.clickCreateTemplateButton().clickAddObjectToTemplateLink();
ViewPage templatePage = classSheetPage.clickTemplateLink();
assertEquals(className + " Template", templatePage.getDocumentTitle());
// The default edit button should take us to the In-line edit mode.
templatePage.edit();
InlinePage editPage = new InlinePage();
editPage.setValue("color", "red");
editPage.setValue("age", "13");
editPage.clickSaveAndContinue();
editPage.clickBreadcrumbLink(classTitle);
// Create a document based on the class template.
assertEquals(spaceName, classSheetPage.getNewPagePicker().getParentInput().getAttribute("value"));
editPage = classSheetPage.createNewDocument(spaceName, pageName);
assertEquals(pageName, editPage.getDocumentTitle());
assertEquals("red", editPage.getValue("color"));
assertEquals("13", editPage.getValue("age"));
editPage.setValue("color", "blue");
editPage.setValue("age", "27");
ViewPage viewPage = editPage.clickSaveAndView();
// Verify that the properties can be edited in-place.
EditablePropertyPane<String> colorProperty =
new EditablePropertyPane<>(String.format("%s.%s[0].color", spaceName, classDocName));
assertEquals("blue", colorProperty.clickEdit().getValue());
colorProperty.setValue("pink").clickSave();
assertEquals("pink", colorProperty.getDisplayValue());
EditablePropertyPane<String> descriptionProperty =
new EditablePropertyPane<>(String.format("%s.%s[0].description", spaceName, classDocName));
assertEquals("", descriptionProperty.clickEdit().getValue());
descriptionProperty.setValue("Tester").clickSave();
assertEquals("Tester", descriptionProperty.getDisplayValue());
assertEquals(pageName, viewPage.getDocumentTitle());
assertEquals("YOUR FAVORITE COLOR\npink\nYOUR CURRENT AGE\n27\nDESCRIPTION\nTester", viewPage.getContent());
viewPage.clickBreadcrumbLink(classTitle);
// Assert the created document is listed.
assertTrue(classSheetPage.hasDocument(pageName));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment