org.nuxeo.ftest.cap.ITWorkspaceTest.java Source code

Java tutorial

Introduction

Here is the source code for org.nuxeo.ftest.cap.ITWorkspaceTest.java

Source

/*
 * (C) Copyright 2016 Nuxeo SA (http://nuxeo.com/) and others.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Contributors:
 *     Anahide Tchertchian
 */
package org.nuxeo.ftest.cap;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.nuxeo.functionaltests.Constants.WORKSPACES_PATH;

import java.io.IOException;
import java.util.Date;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.nuxeo.functionaltests.AbstractTest;
import org.nuxeo.functionaltests.RestHelper;
import org.nuxeo.functionaltests.pages.DocumentBasePage;
import org.nuxeo.functionaltests.pages.DocumentBasePage.UserNotConnectedException;
import org.nuxeo.functionaltests.pages.tabs.ContentTabSubPage;
import org.openqa.selenium.Alert;
import org.openqa.selenium.WebElement;

/**
 * Test workspace structure creation.
 *
 * @since 8.3
 */
public class ITWorkspaceTest extends AbstractTest {

    protected final static String WORKSPACE_TITLE = "ITWS " + new Date().getTime();

    protected static final String WORKSPACE_DESCRIPTION = "Workspace Description" + new Date().getTime();

    @Before
    public void before() {
        RestHelper.createUser(TEST_USERNAME, TEST_PASSWORD, null, null, null, null, "members");
        RestHelper.addPermission(WORKSPACES_PATH, TEST_USERNAME, "Write");
    }

    @After
    public void after() {
        RestHelper.removePermissions(WORKSPACES_PATH, TEST_USERNAME);
        RestHelper.cleanup();
    }

    @Test
    public void testWorkspaceStructure() throws UserNotConnectedException, IOException {
        try {
            DocumentBasePage documentBasePage = loginAsTestUser();
            DocumentBasePage wsPage = documentBasePage.createWorkspace(WORKSPACE_TITLE, WORKSPACE_DESCRIPTION);
            checkAvailableTabs();
            wsPage.getContentTab().createFolder("My folder", "folder desc");
            checkAvailableTabs();
        } finally {
            asPage(DocumentBasePage.class).deleteWorkspace(WORKSPACE_TITLE);
            logout();
        }
    }

    protected void checkAvailableTabs() {
        asPage(DocumentBasePage.class).getContentTab();
        asPage(DocumentBasePage.class).getEditTab();
        // click on "permissions" tab, but do not require addition/removal right
        DocumentBasePage page = asPage(DocumentBasePage.class);
        page.clickOnDocumentTabLink(page.permissionsTabLink, false);
        asPage(DocumentBasePage.class).getHistoryTab();
    }

    @Test
    public void testDeleteWorkspace() throws Exception {
        // First create workspace as Administrator
        login().createWorkspace(WORKSPACE_TITLE, WORKSPACE_DESCRIPTION).createNote("Note to delete",
                "Note description to delete", false, null);
        logout();

        // Delete it as Test User
        DocumentBasePage workspacesPage = loginAsTestUser().goToWorkspaces().goToDocumentWorkspaces();
        ContentTabSubPage contentTabPage = workspacesPage.getContentTab();
        contentTabPage.getContentView().selectByTitle(WORKSPACE_TITLE);
        WebElement deleteLink = driver.findElementById(
                "document_content_buttons:nxw_CURRENT_SELECTION_TRASH_form:nxw_CURRENT_SELECTION_TRASH");
        assertTrue(deleteLink.isEnabled());
        assertTrue(driver.findElementById(
                "document_content_buttons:nxw_CURRENT_SELECTION_ADDTOLIST_form:nxw_CURRENT_SELECTION_ADDTOLIST")
                .isEnabled());
        // Delete the workspace then cancel it on confirmation
        deleteLink.click();
        Alert alert = driver.switchTo().alert();
        assertEquals("Delete selected document(s)?", alert.getText());
        alert.dismiss();
        // De-select workspace to delete as removeDocument() select it
        contentTabPage.getContentView().unselectByTitle(WORKSPACE_TITLE);
        contentTabPage = contentTabPage.removeDocument(WORKSPACE_TITLE).asPage(ContentTabSubPage.class);
        assertFalse(contentTabPage.getChildDocumentRows().stream()
                .filter(element -> WORKSPACE_TITLE.equals(element.getText())).findAny().isPresent());

    }

    @Test
    public void testEditWorkspace() throws Exception {
        try {
            // First create workspace as Administrator
            login().createWorkspace(WORKSPACE_TITLE, WORKSPACE_DESCRIPTION);
            logout();

            // Edit it as Test User
            String descriptionId = "document_header_layout_form:nxl_document_header:nxw_header_description";
            String newDescription = String.format("Description %s modified", WORKSPACE_TITLE);
            DocumentBasePage workspacePage = loginAsTestUser().goToWorkspaces().goToDocumentWorkspaces()
                    .getContentTab().goToDocument(WORKSPACE_TITLE);
            assertEquals(WORKSPACE_DESCRIPTION, driver.findElementById(descriptionId).getText());
            workspacePage.getEditTab().setDescription(newDescription).save();
            assertEquals(newDescription, driver.findElementById(descriptionId).getText());
            logout();
        } finally {
            login().deleteWorkspace(WORKSPACE_TITLE);
        }
    }

}