Search in sources :

Example 1 with ApplicationClassEditPage

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());
}
Also used : LocalDocumentReference(org.xwiki.model.reference.LocalDocumentReference) EntryEditPage(org.xwiki.appwithinminutes.test.po.EntryEditPage) ClassFieldEditPane(org.xwiki.appwithinminutes.test.po.ClassFieldEditPane) LiveTableElement(org.xwiki.test.ui.po.LiveTableElement) EntryNamePane(org.xwiki.appwithinminutes.test.po.EntryNamePane) ApplicationHomeEditPage(org.xwiki.appwithinminutes.test.po.ApplicationHomeEditPage) ViewPage(org.xwiki.test.ui.po.ViewPage) ApplicationCreatePage(org.xwiki.appwithinminutes.test.po.ApplicationCreatePage) WikiEditPage(org.xwiki.test.ui.po.editor.WikiEditPage) ApplicationHomePage(org.xwiki.appwithinminutes.test.po.ApplicationHomePage) ApplicationClassEditPage(org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage) Test(org.junit.Test) AbstractTest(org.xwiki.test.ui.AbstractTest)

Example 2 with ApplicationClassEditPage

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());
}
Also used : ApplicationClassEditPage(org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) Test(org.junit.Test) AbstractTest(org.xwiki.test.ui.AbstractTest)

Example 3 with ApplicationClassEditPage

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();
}
Also used : ApplicationCreatePage(org.xwiki.appwithinminutes.test.po.ApplicationCreatePage) ApplicationClassEditPage(org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage)

Example 4 with ApplicationClassEditPage

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));
}
Also used : EntryEditPage(org.xwiki.appwithinminutes.test.po.EntryEditPage) ClassSheetPage(org.xwiki.xclass.test.po.ClassSheetPage) ViewPage(org.xwiki.test.ui.po.ViewPage) ApplicationClassEditPage(org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) Test(org.junit.Test)

Example 5 with ApplicationClassEditPage

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));
}
Also used : EntryEditPage(org.xwiki.appwithinminutes.test.po.EntryEditPage) ApplicationsLiveTableElement(org.xwiki.appwithinminutes.test.po.ApplicationsLiveTableElement) PagesLiveTableElement(org.xwiki.test.ui.po.PagesLiveTableElement) LiveTableElement(org.xwiki.test.ui.po.LiveTableElement) EntryNamePane(org.xwiki.appwithinminutes.test.po.EntryNamePane) ApplicationTemplateProviderEditPage(org.xwiki.appwithinminutes.test.po.ApplicationTemplateProviderEditPage) ClassFieldEditPane(org.xwiki.appwithinminutes.test.po.ClassFieldEditPane) AppWithinMinutesHomePage(org.xwiki.appwithinminutes.test.po.AppWithinMinutesHomePage) DocumentPickerModal(org.xwiki.index.tree.test.po.DocumentPickerModal) ApplicationHomeEditPage(org.xwiki.appwithinminutes.test.po.ApplicationHomeEditPage) ApplicationsLiveTableElement(org.xwiki.appwithinminutes.test.po.ApplicationsLiveTableElement) PagesLiveTableElement(org.xwiki.test.ui.po.PagesLiveTableElement) ApplicationHomePage(org.xwiki.appwithinminutes.test.po.ApplicationHomePage) ApplicationClassEditPage(org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) Test(org.junit.Test) AbstractTest(org.xwiki.test.ui.AbstractTest)

Aggregations

ApplicationClassEditPage (org.xwiki.appwithinminutes.test.po.ApplicationClassEditPage)13 Test (org.junit.Test)11 IgnoreBrowsers (org.xwiki.test.ui.browser.IgnoreBrowsers)10 ClassFieldEditPane (org.xwiki.appwithinminutes.test.po.ClassFieldEditPane)9 LongTextClassFieldEditPane (org.xwiki.appwithinminutes.test.po.LongTextClassFieldEditPane)6 EntryEditPage (org.xwiki.appwithinminutes.test.po.EntryEditPage)5 ViewPage (org.xwiki.test.ui.po.ViewPage)5 AbstractTest (org.xwiki.test.ui.AbstractTest)4 ClassSheetPage (org.xwiki.xclass.test.po.ClassSheetPage)4 ApplicationHomeEditPage (org.xwiki.appwithinminutes.test.po.ApplicationHomeEditPage)3 ApplicationHomePage (org.xwiki.appwithinminutes.test.po.ApplicationHomePage)3 ApplicationCreatePage (org.xwiki.appwithinminutes.test.po.ApplicationCreatePage)2 ApplicationsLiveTableElement (org.xwiki.appwithinminutes.test.po.ApplicationsLiveTableElement)2 EntryNamePane (org.xwiki.appwithinminutes.test.po.EntryNamePane)2 LiveTableElement (org.xwiki.test.ui.po.LiveTableElement)2 Before (org.junit.Before)1 AppWithinMinutesHomePage (org.xwiki.appwithinminutes.test.po.AppWithinMinutesHomePage)1 ApplicationTemplateProviderEditPage (org.xwiki.appwithinminutes.test.po.ApplicationTemplateProviderEditPage)1 DocumentPickerModal (org.xwiki.index.tree.test.po.DocumentPickerModal)1 LocalDocumentReference (org.xwiki.model.reference.LocalDocumentReference)1