Package de.jetwick.ui

Source Code of de.jetwick.ui.HomePageTest

/**
* Copyright (C) 2010 Peter Karich <jetwick_@_pannous_._info>
*
* 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.
*/
package de.jetwick.ui;

import de.jetwick.es.TweetQuery;
import de.jetwick.es.ElasticTweetSearch;
import de.jetwick.config.Configuration;
import de.jetwick.rmi.RMIClient;
import de.jetwick.es.JetwickQuery;
import de.jetwick.data.JTweet;
import de.jetwick.data.JUser;
import de.jetwick.tw.TwitterSearch;
import de.jetwick.tw.queue.QueueThread;
import java.rmi.RemoteException;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import org.apache.wicket.PageParameters;
import org.apache.wicket.util.tester.FormTester;
import org.junit.Before;
import org.junit.Test;
import twitter4j.TwitterException;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;

/**
*
* @author Peter Karich, peat_hal 'at' users 'dot' sourceforge 'dot' net
*/
public class HomePageTest extends WicketPagesTestClass {

    private String uString;
    private String qString;
    private List<JTweet> returnUserTweets;
    private List<JTweet> returnSearchTweets;
    private Collection<JTweet> sentTweets;

    @Before
    @Override
    public void setUp() throws Exception {
        super.setUp();
        reset();
    }

    public void reset() {
        sentTweets = null;
        uString = "";
        qString = "";
        JUser u = new JUser("peter");
        JUser u2 = new JUser("peter2");
        returnUserTweets = Arrays.asList(new JTweet(3L, "java test2", u2), new JTweet(4L, "java pest2", u2));
        returnSearchTweets = Arrays.asList(new JTweet(1L, "java test", u), new JTweet(2L, "java pest", u));
    }

    @Test
    public void testSelectAndRemove() {
        tester.startPage(TweetSearchPage.class);
        tester.assertNoErrorMessage();

        FormTester formTester = tester.newFormTester("searchbox:searchform");
        formTester.setValue("textField", "java");
        formTester.submit();
        tester.assertNoErrorMessage();

        tester.clickLink("searchbox:searchform:homelink");
        tester.assertNoErrorMessage();
    }

    @Test
    public void testNormalSearch() throws Exception {
//        setUp();
        ElasticTweetSearch search = getInstance(ElasticTweetSearch.class);
        JetwickQuery query = new TweetQuery("timetabling");
        tester.startPage(new TweetSearchPage(query));
        tester.assertNoErrorMessage();

        verify(search).query(new LinkedHashSet<JUser>(), query);
    }

    @Test
    public void testQueueWhenNoResults() throws InterruptedException {
        TweetSearchPage page = getInstance(TweetSearchPage.class);

        QueueThread pkg = page.queueTweets(null, "java", null);
        Thread t = new Thread(pkg);
        t.start();
        t.join();
        assertNotNull(sentTweets);

        // perform normal searchAndGetUsers       
        assertEquals("#java", qString);
        assertEquals("", uString);
    }

    @Test
    public void testQueueWhenUserSearch() throws InterruptedException {
        TweetSearchPage page = getInstance(TweetSearchPage.class);

        QueueThread p = page.queueTweets(null, null, "java");
        p.run();
        assertNotNull(sentTweets);

        assertEquals("", qString);
        assertEquals("#java", uString);
    }

    @Test
    public void testAvoidDuplicateSearchEnqueueing() throws InterruptedException {
        TweetSearchPage page = getInstance(TweetSearchPage.class);

        QueueThread p = page.queueTweets(null, null, "java");
        p.run();
        assertNotNull(sentTweets);
        assertEquals("", qString);
        assertEquals("#java", uString);

        reset();
        p = page.queueTweets(null, null, "Java");
        p.run();
        assertNull(sentTweets);
        assertEquals("", qString);
        assertEquals("", uString);

//        reset();
//        page = getInstance(TweetSearchPage.class);
//        p = page.queueTweets(null, null, "Java");
//        p.run();
//        assertNull(sentTweets);
//        assertEquals("", qString);
//        assertEquals("", uString);
    }

    @Test
    public void testNoNullPointerExcForInstantSearch() throws InterruptedException {
        TweetSearchPage page = getInstance(TweetSearchPage.class);

        // query and user are null and hits == 0 => no background thread is created
        page.init(new TweetQuery(), new PageParameters());
        assertNull(page.getQueueThread());

        page.doSearch(new TweetQuery(), 0, false, true);
        assertNull(page.getQueueThread());
        assertEquals("", uString);
        assertEquals("", qString);
    }

    @Test
    public void testWithDate() throws InterruptedException {
        TweetSearchPage page = getInstance(TweetSearchPage.class);
        PageParameters pp = new PageParameters();
        pp.put("until", "2011-02-01");
        JetwickQuery q = page.createQuery(pp);
        assertEquals("[2011-02-01T00:00:00Z TO *]", q.getFirstFilterQuery("dt"));

        pp = new PageParameters();
        pp.put("until", "2011-02-01T00:00:00Z");
        q = page.createQuery(pp);
        assertEquals("[2011-02-01T00:00:00Z TO *]", q.getFirstFilterQuery("dt"));
    }

    @Test
    public void testWhithNoSolrSearch() throws InterruptedException {
        TweetSearchPage page = getInstance(TweetSearchPage.class);
        page.setTwitterFallback(true);
        page.init(new TweetQuery("java"), new PageParameters());

        page.getQueueThread().run();
        assertNotNull(sentTweets);
        assertEquals("", uString);
        assertEquals("#java", qString);

        // do not trigger background search for the same query
        page.doSearch(new TweetQuery("java"), 0, true);
        assertNull(page.getQueueThread());

        // if only user search then set twitterFallback = true
        reset();
        page.doSearch(new TweetQuery().addFilterQuery("user", "test"), 0, true);
        assertEquals("#test", uString);
        assertEquals("", qString);
        page.getQueueThread().run();

        // if 'normal query' AND 'user search' then set twitterFallback = false but trigger backgr. thread
        reset();
        page.doSearch(new TweetQuery("java").addFilterQuery("user", "test"), 0, true);
        page.getQueueThread().join();
        assertEquals("#test", uString);
        assertEquals("", qString);
    }

    @Override
    protected TwitterSearch createTestTwitterSearch() {
        return new TwitterSearch() {

            @Override
            public boolean isInitialized() {
                return true;
            }

            @Override
            public int getRateLimit() {
                return 100;
            }

            @Override
            public int getRateLimitFromCache() {
                return 100;
            }

            @Override
            public TwitterSearch initTwitter4JInstance(String token, String tokenSec, boolean verify) {
                return this;
            }

            @Override
            public JUser getUser() throws TwitterException {
                return new JUser("testUser");
            }

            @Override
            public long search(String term, Collection<JTweet> result, int tweets, long lastSearch) throws TwitterException {
                qString = "#" + term;
                result.addAll(returnSearchTweets);
                return lastSearch;
            }

            @Override
            public Collection<JTweet> searchAndGetUsers(String queryStr, Collection<JUser> result, int rows, int maxPage) throws TwitterException {
                qString = "#" + queryStr;
                return returnSearchTweets;
            }

            @Override
            public List<JTweet> getTweets(JUser user, Collection<JUser> result, int tweets) throws TwitterException {
                uString = "#" + user.getScreenName();
                return returnUserTweets;
            }
        };
    }

    @Override
    protected RMIClient createRMIClient() {
        return new RMIClient(new Configuration()) {

            @Override
            public RMIClient init() {
                return this;
            }

            @Override
            public void send(JTweet tweet) throws RemoteException {
                sentTweets = Arrays.asList(tweet);
            }

            @Override
            public void send(Collection<JTweet> tweets) throws RemoteException {
                sentTweets = tweets;
            }
        };
    }
//    @Override
//    protected ElasticTweetSearch createSolrTweetSearch() {
//        if (ownSolrTweetSearch == null)
//            return super.createSolrTweetSearch();
//
//        return ownSolrTweetSearch;
//    }
}
TOP

Related Classes of de.jetwick.ui.HomePageTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.