Search in sources :

Example 71 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class UiTest method test01AutoRenameThumbnailForImageSubclass.

@Test
public void test01AutoRenameThumbnailForImageSubclass() {
    final Class testImageType = createTestImageType();
    Image subclassTestImage = null;
    final String initialImageName = "initial_image_name.png";
    final String renamedImageName = "image_name_after_rename.png";
    try (final Tx tx = app.tx()) {
        subclassTestImage = (Image) ImageHelper.createFileBase64(securityContext, base64Image, testImageType);
        subclassTestImage.setProperties(subclassTestImage.getSecurityContext(), new PropertyMap(Image.name, initialImageName));
        assertNotNull(subclassTestImage);
        assertTrue(subclassTestImage instanceof Image);
        final Image tnSmall = subclassTestImage.getProperty(StructrApp.key(testImageType, "tnSmall"));
        final Image tnMid = subclassTestImage.getProperty(StructrApp.key(testImageType, "tnMid"));
        final Image tnCustom = subclassTestImage.getProperty(StructrApp.key(testImageType, "thumbnail"));
        assertEquals("Initial small thumbnail name not as expected", ImageHelper.getThumbnailName(initialImageName, tnSmall.getWidth(), tnSmall.getHeight()), tnSmall.getProperty(StructrApp.key(Image.class, "name")));
        assertEquals("Initial mid thumbnail name not as expected", ImageHelper.getThumbnailName(initialImageName, tnMid.getWidth(), tnMid.getHeight()), tnMid.getProperty(StructrApp.key(Image.class, "name")));
        assertEquals("Initial custom thumbnail name not as expected", ImageHelper.getThumbnailName(initialImageName, tnCustom.getWidth(), tnCustom.getHeight()), tnCustom.getProperty(StructrApp.key(Image.class, "name")));
        tx.success();
    } catch (Exception ex) {
        logger.error(ex.toString());
        fail("Unexpected exception");
    }
    try (final Tx tx = app.tx()) {
        subclassTestImage.setProperties(subclassTestImage.getSecurityContext(), new PropertyMap(Image.name, renamedImageName));
        tx.success();
    } catch (Exception ex) {
        logger.error(ex.toString());
        fail("Unexpected exception");
    }
    try (final Tx tx = app.tx()) {
        final Image tnSmall = subclassTestImage.getProperty(StructrApp.key(testImageType, "tnSmall"));
        final Image tnMid = subclassTestImage.getProperty(StructrApp.key(testImageType, "tnMid"));
        final Image tnCustom = subclassTestImage.getProperty(StructrApp.key(testImageType, "thumbnail"));
        assertEquals("Small Thumbnail name not auto-renamed as expected for image subclass", ImageHelper.getThumbnailName(renamedImageName, tnSmall.getWidth(), tnSmall.getHeight()), tnSmall.getProperty(StructrApp.key(Image.class, "name")));
        assertEquals("Mid Thumbnail name not auto-renamed as expected for image subclass", ImageHelper.getThumbnailName(renamedImageName, tnMid.getWidth(), tnMid.getHeight()), tnMid.getProperty(StructrApp.key(Image.class, "name")));
        assertEquals("Custom Thumbnail name not auto-renamed as expected for image subclass", ImageHelper.getThumbnailName(renamedImageName, tnCustom.getWidth(), tnCustom.getHeight()), tnCustom.getProperty(StructrApp.key(Image.class, "name")));
        tx.success();
    } catch (Exception ex) {
        logger.error(ex.toString());
        fail("Unexpected exception");
    }
}
Also used : PropertyMap(org.structr.core.property.PropertyMap) Tx(org.structr.core.graph.Tx) Image(org.structr.web.entity.Image) FrameworkException(org.structr.common.error.FrameworkException) IOException(java.io.IOException) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 72 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class UiTest method testAutoRenameFileWithIdenticalPathInSubFolder.

@Test
public void testAutoRenameFileWithIdenticalPathInSubFolder() {
    Settings.UniquePaths.setValue(Boolean.TRUE);
    Folder folder = null;
    File file1 = null;
    File file2 = null;
    try (final Tx tx = app.tx()) {
        folder = FileHelper.createFolderPath(SecurityContext.getSuperUserInstance(), "/my/test/folder");
        assertNotNull(folder);
        assertEquals(folder.getPath(), "/my/test/folder");
        tx.success();
    } catch (FrameworkException ex) {
        logger.error("", ex);
    }
    try (final Tx tx = app.tx()) {
        file1 = app.create(File.class, new NodeAttribute<>(AbstractNode.name, "test.txt"), new NodeAttribute<>(StructrApp.key(AbstractFile.class, "parent"), folder));
        assertNotNull(file1);
        assertEquals("Testfolder should have exactly one child", 1, Iterables.count(folder.getChildren()));
        tx.success();
    } catch (FrameworkException ex) {
        logger.error("", ex);
    }
    try (final Tx tx = app.tx()) {
        file2 = app.create(File.class, new NodeAttribute<>(AbstractNode.name, "test.txt"), new NodeAttribute<>(StructrApp.key(AbstractFile.class, "parent"), folder));
        assertNotNull(file2);
        assertEquals("Testfolder should have exactly two children", 2, Iterables.count(folder.getChildren()));
        tx.success();
    } catch (FrameworkException ex) {
        logger.error("", ex);
    }
    assertNotEquals(file1.getName(), file2.getName());
}
Also used : NodeAttribute(org.structr.core.graph.NodeAttribute) AbstractFile(org.structr.web.entity.AbstractFile) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) Folder(org.structr.web.entity.Folder) AbstractFile(org.structr.web.entity.AbstractFile) File(org.structr.web.entity.File) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 73 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class XPathTest method testSimpleXPath.

@Test
public void testSimpleXPath() {
    final String pageName = "page-01";
    try (final Tx tx = app.tx()) {
        Page page = Page.createNewPage(securityContext, pageName);
        assertTrue(page != null);
        assertTrue(page instanceof Page);
        DOMElement html = (DOMElement) page.createElement("html");
        DOMElement head = (DOMElement) page.createElement("head");
        DOMElement body = (DOMElement) page.createElement("body");
        DOMElement title = (DOMElement) page.createElement("title");
        DOMElement h1 = (DOMElement) page.createElement("h1");
        try {
            // add HTML element to page
            page.appendChild(html);
            // add HEAD and BODY elements to HTML
            html.appendChild(head);
            html.appendChild(body);
            // add TITLE element to HEAD
            head.appendChild(title);
            title.appendChild(page.createTextNode("Test Page"));
            // add H1 element to BODY
            body.appendChild(h1);
            h1.appendChild(page.createTextNode("Page Title"));
        } catch (DOMException dex) {
            throw new FrameworkException(422, dex.getMessage());
        }
        assertEquals(html, page.getChildNodes().item(1));
        assertEquals(head, html.getChildNodes().item(0));
        assertEquals(body, html.getChildNodes().item(1));
        // test XPath support of structr nodes..
        XPathFactory factory = XPathFactory.newInstance();
        XPath xpath = factory.newXPath();
        // let xpath cache first..
        assertEquals("Page Title", xpath.evaluate("/html/body/h1/text()", page, XPathConstants.STRING));
        assertEquals(h1, xpath.evaluate("/html/body/h1", page, XPathConstants.NODE));
        tx.success();
    } catch (FrameworkException fex) {
        logger.warn("", fex);
        fail("Unexpected exception");
    } catch (XPathExpressionException xpeex) {
        logger.warn("", xpeex);
        fail("Unexpected exception");
    }
}
Also used : XPath(javax.xml.xpath.XPath) DOMException(org.w3c.dom.DOMException) XPathFactory(javax.xml.xpath.XPathFactory) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) XPathExpressionException(javax.xml.xpath.XPathExpressionException) Page(org.structr.web.entity.dom.Page) DOMElement(org.structr.web.entity.dom.DOMElement) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 74 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class RenderDataTest method testRenderListFromRestQuery.

@Test
public void testRenderListFromRestQuery() {
    String name = null;
    try (final Tx tx = app.tx()) {
        final Page doc = (Page) getDocument();
        name = doc.getName();
        final List<User> users = createTestNodes(User.class, 3);
        assertEquals(3, users.size());
        User user1 = users.get(0);
        user1.setProperty(AbstractNode.name, "user1");
        User user2 = users.get(1);
        user2.setProperty(AbstractNode.name, "user2");
        User user3 = users.get(2);
        user3.setProperty(AbstractNode.name, "user3");
        final List<File> files = createTestNodes(File.class, 6);
        assertEquals(6, files.size());
        File nodeA = files.get(0);
        nodeA.setProperty(AbstractNode.name, "fileA");
        File nodeB = files.get(1);
        nodeB.setProperty(AbstractNode.name, "fileB");
        File nodeC = files.get(2);
        nodeC.setProperty(AbstractNode.name, "fileC");
        File nodeD = files.get(3);
        nodeD.setProperty(AbstractNode.name, "fileD");
        File nodeE = files.get(4);
        nodeE.setProperty(AbstractNode.name, "fileE");
        File nodeF = files.get(5);
        nodeF.setProperty(AbstractNode.name, "fileF");
        // create dom tree
        Element html = doc.createElement("html");
        Element body = doc.createElement("body");
        Element b = doc.createElement("b");
        final Element p1 = doc.createElement("p");
        final PropertyMap p1Properties = new PropertyMap();
        p1Properties.put(StructrApp.key(DOMElement.class, "restQuery"), "users?sort=name");
        p1Properties.put(StructrApp.key(DOMElement.class, "dataKey"), "user");
        ((DOMElement) p1).setProperties(((DOMElement) p1).getSecurityContext(), p1Properties);
        Content userNameContentNode = (Content) doc.createTextNode("${user.name}");
        p1.appendChild(userNameContentNode);
        Element div = doc.createElement("div");
        final Element p2 = doc.createElement("p");
        final PropertyMap p2Properties = new PropertyMap();
        p2Properties.put(StructrApp.key(DOMElement.class, "restQuery"), "files?sort=name");
        p2Properties.put(StructrApp.key(DOMElement.class, "dataKey"), "file");
        ((DOMElement) p2).setProperties(((DOMElement) p2).getSecurityContext(), p2Properties);
        Content fileNameContentNode = (Content) doc.createTextNode("${file.name}");
        p2.appendChild(fileNameContentNode);
        doc.appendChild(html);
        html.appendChild(body);
        body.appendChild(b);
        body.appendChild(div);
        b.appendChild(p1);
        div.appendChild(p2);
        makePublic(doc, html, body, div, b, p1, p2, fileNameContentNode, userNameContentNode, nodeA, nodeB, nodeC, nodeD, nodeE, nodeF, user1, user2, user3);
        tx.success();
    } catch (Exception ex) {
        ex.printStackTrace();
        fail("Unexpected exception");
    }
    try (final Tx tx = app.tx()) {
        Document parsedDocument = Jsoup.connect(baseUri + name).timeout(100000).get();
        System.out.println(parsedDocument.outerHtml());
        assertEquals("user1", parsedDocument.select("html > body > b > p").get(0).ownText());
        assertEquals("user2", parsedDocument.select("html > body > b > p").get(1).ownText());
        assertEquals("user3", parsedDocument.select("html > body > b > p").get(2).ownText());
        assertEquals("fileA", parsedDocument.select("html > body > div > p").get(0).ownText());
        assertEquals("fileB", parsedDocument.select("html > body > div > p").get(1).ownText());
        assertEquals("fileC", parsedDocument.select("html > body > div > p").get(2).ownText());
        assertEquals("fileD", parsedDocument.select("html > body > div > p").get(3).ownText());
        assertEquals("fileE", parsedDocument.select("html > body > div > p").get(4).ownText());
        assertEquals("fileF", parsedDocument.select("html > body > div > p").get(5).ownText());
        tx.success();
    } catch (Exception ex) {
        ex.printStackTrace();
        fail("unexpected exception");
    }
}
Also used : User(org.structr.web.entity.User) Tx(org.structr.core.graph.Tx) Element(org.w3c.dom.Element) Document(org.jsoup.nodes.Document) PropertyMap(org.structr.core.property.PropertyMap) File(org.structr.web.entity.File) DOMTest(org.structr.web.advanced.DOMTest) Test(org.junit.Test)

Example 75 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class ContentTest method testDeleteData.

@Test
public void testDeleteData() {
    try (final Tx tx = app.tx()) {
        Content content = getContentNode();
        assertNotNull(content);
        // test basic setting of content
        content.setData("Dies ist ein Test");
        assertEquals("Dies ist ein Test", content.getData());
        content.deleteData(5, 4);
        assertEquals("Dies ein Test", content.getData());
        tx.success();
    } catch (FrameworkException fex) {
        fail("unexpected exception");
    }
}
Also used : Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) DOMTest(org.structr.web.advanced.DOMTest) Test(org.junit.Test)

Aggregations

Tx (org.structr.core.graph.Tx)892 FrameworkException (org.structr.common.error.FrameworkException)684 Test (org.junit.Test)461 App (org.structr.core.app.App)201 StructrApp (org.structr.core.app.StructrApp)201 StructrUiTest (org.structr.web.StructrUiTest)139 NodeInterface (org.structr.core.graph.NodeInterface)117 StructrTest (org.structr.common.StructrTest)108 IOException (java.io.IOException)105 PropertyMap (org.structr.core.property.PropertyMap)102 LinkedList (java.util.LinkedList)99 TestOne (org.structr.core.entity.TestOne)98 File (org.structr.web.entity.File)83 Page (org.structr.web.entity.dom.Page)71 Principal (org.structr.core.entity.Principal)65 Folder (org.structr.web.entity.Folder)65 PropertyKey (org.structr.core.property.PropertyKey)62 NodeAttribute (org.structr.core.graph.NodeAttribute)57 SchemaNode (org.structr.core.entity.SchemaNode)45 AbstractFile (org.structr.web.entity.AbstractFile)44