use of org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage in project xwiki-platform by xwiki.
the class DocumentFieldsTest method titleAndContent.
@Test
public void titleAndContent() {
// Create a new application.
String appName = RandomStringUtils.randomAlphabetic(6);
ApplicationCreatePage appCreatePage = ApplicationCreatePage.gotoPage();
appCreatePage.setApplicationName(appName);
appCreatePage.waitForApplicationNamePreview();
ApplicationClassEditPage classEditPage = appCreatePage.clickNextStep();
// Add a standard field.
ClassFieldEditPane numberField = classEditPage.addField("Number");
// Add the Title and Content fields.
ClassFieldEditPane titleField = classEditPage.addField("Title");
ClassFieldEditPane contentField = classEditPage.addField("Content");
// Change the default field pretty names.
// See XWIKI-9154: The application live table uses the standard 'Page title' heading instead of the pretty name
// set for the Title field
titleField.setPrettyName("My Title");
contentField.setPrettyName("My Content");
// Set the default values that will be saved in the template.
numberField.setDefaultValue("13");
String defaultTitle = "Enter title here";
titleField.setDefaultValue(defaultTitle);
String defaultContent = "Enter content here";
contentField.setDefaultValue(defaultContent);
// Add live table columns for Title and Content.
ApplicationHomeEditPage homeEditPage = classEditPage.clickNextStep().clickNextStep().waitUntilPageIsLoaded();
homeEditPage.addLiveTableColumn("My Title");
homeEditPage.addLiveTableColumn("My Content");
// Add an application entry.
EntryNamePane entryNamePane = homeEditPage.clickFinish().clickAddNewEntry();
entryNamePane.setName("Test");
EntryEditPage entryEditPage = entryNamePane.clickAdd();
Assert.assertEquals("13", entryEditPage.getValue("number1"));
// The page name is used as the default value for the title field.
Assert.assertEquals("Test", entryEditPage.getDocumentTitle());
Assert.assertEquals("Test", entryEditPage.getTitle());
entryEditPage.setTitle("Foo");
Assert.assertEquals(defaultContent, entryEditPage.getContent());
entryEditPage.setContent("Bar");
// Check that the title and the content of the entry have been updated.
ViewPage entryViewPage = entryEditPage.clickSaveAndView();
Assert.assertEquals("Foo", entryViewPage.getDocumentTitle());
Assert.assertTrue(entryViewPage.getContent().contains("Bar"));
entryViewPage.clickBreadcrumbLink(appName);
// Check the entries live table.
LiveTableElement liveTable = new ApplicationHomePage().getEntriesLiveTable();
liveTable.waitUntilReady();
Assert.assertEquals(1, liveTable.getRowCount());
Assert.assertTrue(liveTable.hasRow("My Title", "Foo"));
Assert.assertTrue(liveTable.hasRow("My Content", "Bar"));
// Check that the title and the content of the class have not been changed.
getUtil().gotoPage(new LocalDocumentReference(Arrays.asList(appName, "Code"), appName + "Class"), "edit", "editor=wiki");
WikiEditPage editPage = new WikiEditPage();
Assert.assertEquals(appName + " Class", editPage.getTitle());
Assert.assertEquals("", editPage.getContent());
// Now edit the class and check if the default values for title and content are taken from the template.
editPage.editInline();
Assert.assertEquals(defaultTitle, new ClassFieldEditPane("title1").getDefaultValue());
Assert.assertEquals(defaultContent, new ClassFieldEditPane("content1").getDefaultValue());
}
use of org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage in project xwiki-platform by xwiki.
the class WizardTest method testGoBackToFirstStep.
/**
* @see XWIKI-7380: Cannot go back from step 2 to step 1
*/
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testGoBackToFirstStep() {
// Step 1
String appName = "Empty App âé";
appCreatePage.setApplicationName(appName);
appCreatePage.waitForApplicationNamePreview();
// Step 2
ApplicationClassEditPage classEditPage = appCreatePage.clickNextStep();
classEditPage.addField("Short Text");
// Back to Step 1
appCreatePage = classEditPage.clickPreviousStep();
appCreatePage.setApplicationName(appName);
appCreatePage.waitForApplicationNamePreview();
// Test that the application wasn't created.
Assert.assertFalse(appCreatePage.getContent().contains(ApplicationNameTest.APP_NAME_USED_WARNING_MESSAGE));
// Step 2 again
classEditPage = appCreatePage.clickNextStep();
Assert.assertTrue(classEditPage.getContent().contains(ClassEditorTest.EMPTY_CANVAS_HINT));
classEditPage.addField("Number");
// Step 3 and back to Step 2
classEditPage = classEditPage.clickNextStep().clickPreviousStep();
Assert.assertFalse(classEditPage.getContent().contains(ClassEditorTest.EMPTY_CANVAS_HINT));
Assert.assertFalse(classEditPage.hasPreviousStep());
}
use of org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage in project xwiki-platform by xwiki.
the class AppsLiveTableTest method createApplication.
/**
* Creates an application with the specified name. The application class will have just one field.
*
* @param appName the name of the application to create
*/
private void createApplication(String appName) {
ApplicationCreatePage appCreatePage = homePage.clickCreateApplication();
appCreatePage.setApplicationName(appName);
appCreatePage.waitForApplicationNamePreview();
ApplicationClassEditPage classEditPage = appCreatePage.clickNextStep();
classEditPage.addField("Short Text");
classEditPage.clickNextStep().clickNextStep().clickFinish();
homePage = AppWithinMinutesHomePage.gotoPage();
}
use of org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage in project xwiki-platform by xwiki.
the class ClassEditorTest method testReorderFields.
/**
* Tests that class fields can be reordered.
*/
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testReorderFields() {
// Add two class fields.
editor.addField("Date").setPrettyName("Start Date");
editor.addField("Date").setPrettyName("End Date");
// Save and edit the class template in in-line edit mode.
editor.clickSaveAndView();
new ClassSheetPage().clickTemplateLink().edit();
// Assert the order of the form fields.
List<String> fieldNames = new EntryEditPage().getFieldNames();
Assert.assertEquals("date1", fieldNames.get(0));
Assert.assertEquals("date2", fieldNames.get(1));
// Go back to the class editor.
getDriver().navigate().back();
getDriver().navigate().back();
new ViewPage().edit();
editor = new ApplicationClassEditPage();
// Change the order of the class fields.
editor.moveFieldBefore("date2", "date1");
// Save and edit the class template again.
editor.clickSaveAndView();
new ClassSheetPage().clickTemplateLink().edit();
// Assert the order of the form fields.
fieldNames = new EntryEditPage().getFieldNames();
Assert.assertEquals("date2", fieldNames.get(0));
Assert.assertEquals("date1", fieldNames.get(1));
}
use of org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage in project xwiki-platform by xwiki.
the class WizardTest method testCreateApplication.
/**
* Tests the application creation process from start to end.
*/
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testCreateApplication() {
// Step 1
// Set the application location.
appCreatePage.getLocationPicker().browseDocuments();
new DocumentPickerModal().selectDocument(getClass().getSimpleName(), this.testName.getMethodName(), "WebHome");
appCreatePage.getLocationPicker().waitForLocation(Arrays.asList("", getClass().getSimpleName(), this.testName.getMethodName(), ""));
// Enter the application name, making sure we also use some special chars.
// See XWIKI-11747: Impossible to create new entry with an application having UTF8 chars in its name
String appName = "Cities âé";
String[] appPath = new String[] { getClass().getSimpleName(), this.testName.getMethodName(), appName };
appCreatePage.setApplicationName(appName);
// Wait for the preview.
appCreatePage.waitForApplicationNamePreview();
// Move to the next step.
ApplicationClassEditPage classEditPage = appCreatePage.clickNextStep();
// Step 2
// Add a 'Short Text' field.
ClassFieldEditPane fieldEditPane = classEditPage.addField("Short Text");
// Set the field pretty name and default value
fieldEditPane.setPrettyName("City Name");
fieldEditPane.setDefaultValue("Paris");
// Move to the next step.
ApplicationTemplateProviderEditPage templateProviderEditPage = classEditPage.clickNextStep();
// Move back to the second step.
classEditPage = templateProviderEditPage.clickPreviousStep();
// Open the configuration panel and set the field name
fieldEditPane = new ClassFieldEditPane("shortText1");
fieldEditPane.openConfigPanel();
fieldEditPane.setName("cityName");
// Move to the next step.
templateProviderEditPage = classEditPage.clickNextStep();
// Step 3
templateProviderEditPage.setIcon("worl");
templateProviderEditPage.setDescription("A city page");
// Move to the next step.
ApplicationHomeEditPage homeEditPage = templateProviderEditPage.clickNextStep().waitUntilPageIsLoaded();
// Step 4
// Enter the application description.
String appDescription = "Simple application to manage data about various cities";
homeEditPage.setDescription(appDescription);
// Add the Short Text field from the previous step to the list of columns.
homeEditPage.addLiveTableColumn("City Name");
// Click the finish button which should lead us to the application home page.
ApplicationHomePage homePage = homeEditPage.clickFinish();
// Assert the application description is present.
Assert.assertTrue(homePage.getContent().contains(appDescription));
// Add a new entry.
String firstEntryName = "City 1 âé";
EntryNamePane entryNamePane = homePage.clickAddNewEntry();
entryNamePane.setName(firstEntryName);
EntryEditPage entryEditPage = entryNamePane.clickAdd();
// Assert the pretty name and the default value of the Short Text field.
// Apparently WebElement#getText() takes into account the text-transform CSS property.
Assert.assertEquals("CITY NAME", entryEditPage.getLabel("cityName"));
Assert.assertEquals("Paris", entryEditPage.getValue("cityName"));
// Change the field value.
entryEditPage.setValue("cityName", "London");
// Save and go back to the application home page.
entryEditPage.clickSaveAndView().clickBreadcrumbLink(appName);
homePage = new ApplicationHomePage();
// Assert the entry we have just created is listed in the live table.
LiveTableElement entriesLiveTable = homePage.getEntriesLiveTable();
entriesLiveTable.waitUntilReady();
Assert.assertTrue(entriesLiveTable.hasRow("City Name", "London"));
// Assert that only the entry we have just created is listed as child of the application home page. The rest of
// the documents (class, template, sheet, preferences) should be marked as hidden.
PagesLiveTableElement childrenLiveTable = homePage.viewChildren().getLiveTable();
childrenLiveTable.waitUntilReady();
Assert.assertEquals(1, childrenLiveTable.getRowCount());
Assert.assertTrue(childrenLiveTable.hasPageWithTitle(firstEntryName));
// Go back to the application home page.
getDriver().navigate().back();
// Click the edit button.
homePage.edit();
homeEditPage = new ApplicationHomeEditPage();
// Change the application description.
appDescription = "The best app!";
homeEditPage.setDescription(appDescription);
// Remove one of the live table columns.
homeEditPage.removeLiveTableColumn("Actions");
// Save
homePage = homeEditPage.clickSaveAndView();
// Assert that the application description has changed and that the column has been removed.
Assert.assertTrue(homePage.getContent().contains(appDescription));
entriesLiveTable = homePage.getEntriesLiveTable();
entriesLiveTable.waitUntilReady();
Assert.assertFalse(entriesLiveTable.hasColumn("Actions"));
// Click the link to edit the application.
classEditPage = homePage.clickEditApplication();
// Drag a Number field.
fieldEditPane = classEditPage.addField("Number");
// Set the field pretty name.
fieldEditPane.setPrettyName("Population Size");
// Fast forward.
homeEditPage = classEditPage.clickNextStep().clickNextStep();
// Just wait for the WYSIWYG editor (which is used for setting the application description) to load so that the
// page layout is stable before we click on the Finish button.
homeEditPage.setDescription(appDescription);
homePage = homeEditPage.clickFinish();
// Add a new entry.
String secondEntryName = "City 2 âé";
entryNamePane = homePage.clickAddNewEntry();
entryNamePane.setName(secondEntryName);
entryEditPage = entryNamePane.clickAdd();
// Assert the new field is displayed in the edit sheet (field name was auto-generated).
// Apparently WebElement#getText() takes into account the text-transform CSS property.
Assert.assertEquals("POPULATION SIZE", entryEditPage.getLabel("number1"));
// Save and go back to the application home page.
entryEditPage.clickSaveAndView().clickBreadcrumbLink(appName);
homePage = new ApplicationHomePage();
// Assert both entries are displayed in the live table.
entriesLiveTable = homePage.getEntriesLiveTable();
entriesLiveTable.waitUntilReady();
Assert.assertTrue(entriesLiveTable.hasRow("Page Title", firstEntryName));
Assert.assertTrue(entriesLiveTable.hasRow("Page Title", secondEntryName));
// Go to the App Within Minutes home page.
AppWithinMinutesHomePage appWithinMinutesHomePage = AppWithinMinutesHomePage.gotoPage();
// Assert that the created application is listed in the live table.
ApplicationsLiveTableElement appsLiveTable = appWithinMinutesHomePage.getAppsLiveTable();
appsLiveTable.waitUntilReady();
Assert.assertTrue(appsLiveTable.isApplicationListed(appPath));
// Delete the application entries.
homePage = appsLiveTable.viewApplication(appPath);
homePage.clickDeleteAllEntries().clickYes();
// Verify that the entries live table is empty.
entriesLiveTable = homePage.getEntriesLiveTable();
entriesLiveTable.waitUntilReady();
Assert.assertEquals(0, entriesLiveTable.getRowCount());
// Delete the application.
homePage.clickDeleteApplication().clickYes();
// Verify that the application is not listed anymore.
appsLiveTable = AppWithinMinutesHomePage.gotoPage().getAppsLiveTable();
appsLiveTable.waitUntilReady();
Assert.assertFalse(appsLiveTable.isApplicationListed(appPath));
}
Aggregations