package com.smash.revolance.ui.explorer; /* * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Revolance-UI-Explorer * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Copyright (C) 2012 - 2013 RevoLance * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ import com.smash.revolance.ui.model.page.api.Page; import org.junit.After; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNull.notNullValue; /** * User: wsmash * Date: 14/09/13 * Time: 23:44 */ public class ParserTest extends BaseTests { private static Page page; @BeforeClass public static void setupTest() throws Exception { setUp(); user.setDomain( REF_PAGE_HOME ); user.setHome( REF_PAGE_HOME ); new UserExplorer( user, File.createTempFile("exploration", ".log"), 60 ).explore(); bot = user.getBot(); browser = bot.getBrowser(); sitemap = user.getSiteMap(); page = sitemap.findPage( REF_PAGE_HOME ).getInstance(); } @After public void tearDown() throws Exception { user.getBrowser().quit(); } @Test public void botShouldGrabImages() throws Exception { assertThat( page.getImages().size(), is( 3 ) ); } @Test public void botShouldGrabData() throws Exception { assertThat( page.getData( "Your Company" ), notNullValue() ); assertThat( page.getData( "Latest News" ), notNullValue() ); assertThat( page.getData( "WELCOME" ), notNullValue() ); assertThat( page.getDatas( "00.00.0000" ).size(), is( 3 ) ); assertThat( page.getData( "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus ornare condimentum sem. Nullam a eros. Vivamus vestibulum hendrerit arcu. Integer a orci. Morbi nonummy semper est. Donec at risus sed velit porta." ), notNullValue() ); assertThat( page.getData( "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus ornare condimentum sem." ), notNullValue() ); assertThat( page.getData( "Nullam a eros. Vivamus vestibulum hendrerit arcu. Integer a orci. Morbi nonummy semper est." ), notNullValue() ); assertThat( page.getData( "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus ornare condimentum sem. Nullam a eros. Vivamus vestibulum hendrerit arcu. Integer a orci. Morbi nonummy semper est. Donec at risus sed velit porta dictum. Maecenas condimentum orci aliquam nunc. Morbi nonummy tellus in nibh. Suspendisse orci eros, dapibus at, ultrices at, egestas ac, tortor. Suspendisse fringilla est id erat. Praesent et libero." ), notNullValue() ); assertThat( page.getData( "Donec at risus sed velit porta dictum. Maecenas condimentum orci aliquam nunc." ), notNullValue() ); assertThat( page.getData( "Contact Info" ), notNullValue() ); assertThat( page.getData( "About us" ), notNullValue() ); assertThat( page.getData( "00 / 00Lorem ipsum dolor sit amet, consectetuer adipiscing elit." ), notNullValue() ); assertThat( page.getData( "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus ornare condimentum sem. Nullam a eros. Vivamus vestibulum hendrerit arcu. Integer a orci. Morbi nonummy semper est. Donec at risus sed velit porta dictum. Maecenas condimentum orci aliquam nunc. Morbi nonummy tellus in nibh. Suspendisse orci eros, dapibus at, ultrices at, egestas ac, tortor. Suspendisse fringilla est id erat. Praesent et libero. Proin nisi felis, euismod a, tempus varius, elementum vel, nisl. Fusce non magna sit amet enim suscipit feugiat." ), notNullValue() ); assertThat( page.getData( "E-mail: abc@Lorem ipsum.com" ), notNullValue() ); assertThat( page.getData( "Fax: 000-000-0000" ), notNullValue() ); assertThat( page.getData( "Phone: 000-000-0000 /\\n 000-000-0000" ), notNullValue() ); assertThat( page.getData( "Fusce et leo. Maecenas massa libero, egestas sed, ultricies tempor, laoreet eget, nisl. Nunc eleifend, orci eu aliquet consequat, metus diam suscipit felis, in adipiscing sapien nisl vitae ipsum. Nunc dui ante, vestibulum eget, viverra sed, ullamcorper quis, est. Nullam varius nunc." ), notNullValue() ); } @Test public void botShouldGrabLinks() throws Exception { assertThat( page.getLinks( "Home" ).size(), is( 2 ) ); assertThat( page.getLinks( "About Us" ).size(), is( 2 ) ); assertThat( page.getLinks( "Recent articles" ), notNullValue() ); assertThat( page.getLinks( "Email" ), notNullValue() ); assertThat( page.getLinks( "Resources" ), notNullValue() ); assertThat( page.getLinks( "Links" ), notNullValue() ); assertThat( page.getLink( "Contacts" ), notNullValue() ); assertThat( page.getLink( "Services" ), notNullValue() ); assertThat( page.getLink( "Pricing" ), notNullValue() ); assertThat( page.getLinks( "htmltemplates.net" ), notNullValue() ); } @Test public void botShouldGrabButtons() { } @Test public void botShouldGrabFields() { // assertThat( page.getFields().size(), is( 2 ) ); } /* @Test public void imageElementAdditionShouldKeepImageAndData() { // Configuration Image anImage; List<Element> elements = new ArrayList<Element>(); anImage = new Image( ); anImage.setPos( new Point( 0, 0 ) ); anImage.setDim( new Dimension( 100, 30 ) ); elements.add( anImage ); Data aData; aData = new Data( ); aData.setPos( new Point( 0, 0 ) ); aData.setDim( new Dimension( 50, 10 ) ); aData.setText( "Click Here!" ); assertThat( elements.size(), is( 1 ) ); // Action PageParser.handleAddition( elements, aData ); // Verification assertThat( elements.size(), is( 2 ) ); } @Test public void dataElementAdditionShouldKeepClickableContentOverData() { // Configuration Link aLink; List<Element> elements = new ArrayList<Element>( ); aLink = new Link( ); aLink.setPos( new Point( 0, 0 ) ); aLink.setDim( new Dimension( 100, 30 ) ); aLink.setText( "Click Here!" ); elements.add( aLink ); Data aData; aData = new Data( ); aData.setPos( new Point( 0, 0 ) ); aData.setDim( new Dimension( 200, 30 ) ); aData.setText( "Click Here!" ); assertThat( elements.size(), is( 1 ) ); // Action PageParser.handleAddition( elements, aData ); // Verification assertThat( elements.size(), is( 1 ) ); assertThat( elements.get( 0 ) == aLink, is( true ) ); } @Test public void linkElementAdditionShouldKeepClickableContentOverData() { // Configuration List<Element> elements = new ArrayList<Element>( ); Data aData; aData = new Data( ); aData.setPos( new Point( 0, 0 ) ); aData.setDim( new Dimension( 200, 30 ) ); aData.setText( "Click Here!" ); elements.add( aData ); Link aLink; aLink = new Link( ); aLink.setPos( new Point( 0, 0 ) ); aLink.setDim( new Dimension( 100, 30 ) ); aLink.setText( "Click Here!" ); assertThat( elements.size(), is( 1 ) ); // Action PageParser.handleAddition( elements, aLink ); // Verification assertThat( elements.size(), is( 1 ) ); assertThat( elements.get( 0 ) == aLink, is(true) ); } @Test public void buttonElementAdditionShouldKeepClickableContentOverData() { // Configuration List<Element> elements = new ArrayList<Element>( ); Button aButton; aButton = new Button( ); aButton.setPos( new Point( 0, 0 ) ); aButton.setDim( new Dimension( 200, 30 ) ); aButton.setText( "Click Here!" ); elements.add( aButton ); Data aData; aData = new Data( ); aData.setPos( new Point( 0, 0 ) ); aData.setDim( new Dimension( 200, 30 ) ); aData.setText( "Click Here!" ); assertThat( elements.size(), is( 1 ) ); // Action PageParser.handleAddition( elements, aData ); // Verification assertThat( elements.size(), is( 1 ) ); assertThat( elements.get( 0 ) == aButton, is(true) ); } @Test public void dataElementAdditionShouldKeepTheSmallestPieceOfData() { // Step1 // Configuration List<Element> elements = new ArrayList<Element>( ); Data aData; aData = new Data( ); aData.setPos( new Point( 0, 0 ) ); aData.setDim( new Dimension( 200, 30 ) ); aData.setText( "Click Here!" ); elements.add( aData ); Data aBloc = new Data( ); aBloc.setPos( new Point( 0, 0 ) ); aBloc.setDim( new Dimension( 200, 300 ) ); aBloc.setText( "Click Here!" ); // Configuration checkup assertThat( elements.size(), is( 1 ) ); // Action PageParser.handleAddition( elements, aBloc ); // Verification assertThat( elements.size(), is( 1 ) ); assertThat( elements.get( 0 ) == aData, is(true) ); // Step2 // Configuration Button aButton; aButton = new Button( ); aButton.setPos( new Point( 10, 10 ) ); aButton.setDim( new Dimension( 80, 10 ) ); aButton.setText( "Click Here!" ); // Action PageParser.handleAddition( elements, aButton ); // Verfications assertThat( elements.size(), is( 1 ) ); assertThat( elements.get( 0 ) == aButton, is(true) ); // Step3 // Configuration aData = new Data( ); aData.setPos( new Point( 0, 0 ) ); aData.setDim( new Dimension( 200, 30 ) ); aData.setText( "Click Here!" ); // Action PageParser.handleAddition( elements, aData ); // Verifications assertThat( elements.size(), is( 1 ) ); assertThat( elements.get( 0 ) == aButton, is(true) ); } @Test public void retrieveElementIncludedInABloc() { // Configuration List<Element> elements = new ArrayList<Element>( ); Data aBloc = new Data( ); aBloc.setPos( new Point( 0, 0 ) ); aBloc.setDim( new Dimension( 200, 300 ) ); aBloc.setText( "Button\nLink" ); Button aButton = new Button( ); aButton.setPos( new Point( 10, 10 ) ); aButton.setDim( new Dimension( 80, 10 ) ); aButton.setText( "Button" ); PageParser.handleAddition( elements, aButton ); Link aLink = new Link( ); aLink.setPos( new Point( 200, 10 ) ); aLink.setDim( new Dimension( 80, 10 ) ); aLink.setText( "Link" ); PageParser.handleAddition( elements, aLink ); // Configuration checkup assertThat( elements.size(), is( 2 ) ); // Action List<Element> elementsInBloc = Element.getElementsIn( elements, aBloc ); // Verfications assertThat( elementsInBloc.size(), is(1) ); } @Test public void filterElementIncludedInEachOther() { // Configuration List<Element> elements = new ArrayList<Element>( ); Data aBloc = new Data( ); aBloc.setPos( new Point( 0, 0 ) ); aBloc.setDim( new Dimension( 200, 300 ) ); aBloc.setText( "Button\nLink" ); PageParser.handleAddition( elements, aBloc ); Button aButton; aButton = new Button( ); aButton.setPos( new Point( 10, 10 ) ); aButton.setDim( new Dimension( 100, 10 ) ); aButton.setText( "Button" ); PageParser.handleAddition( elements, aButton ); Link aLink = new Link( ); aLink.setPos( new Point( 10, 30 ) ); aLink.setDim( new Dimension( 100, 10 ) ); aLink.setText( "Link" ); PageParser.handleAddition( elements, aLink ); // Configuration checkup assertThat( elements.size(), is( 2 ) ); // Action Element.filterElementsIncludedInEachOthers( elements, 1000, 1 ); // Verficiations assertThat( elements.size(), is(2) ); assertThat( elements.contains( aLink ), is(true) ); assertThat( elements.contains( aButton ), is(true) ); } */ }