Java tutorial
/******************************************************************************* * This file is part of Tmetrics. * * Tmetrics 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. * * Tmetrics 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 Tmetrics. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ package com.restservice.serviceLogic.test; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Reader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Time; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import org.apache.ibatis.io.Resources; import org.apache.ibatis.jdbc.ScriptRunner; import org.joda.time.LocalDate; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import com.news.NewsUtil; import com.news.TopNewsFetcherThread; import com.restservice.database.Transactor; import com.restservice.dto.CountAndNewsPerHour; import com.restservice.dto.DaemonStatus; import com.restservice.dto.DataGroupingResult; import com.restservice.dto.DataGroupingResult.Series; import com.restservice.dto.Envelope; import com.restservice.dto.HashtagStatisticsForSearchTermId; import com.restservice.dto.LanguageCount; import com.restservice.dto.News; import com.restservice.dto.NewsItem; import com.restservice.dto.Query; import com.restservice.dto.QueryMetadata; import com.restservice.dto.QueryWithOccurence; import com.restservice.dto.SearchTermStatus; import com.restservice.dto.SentimentData; import com.restservice.dto.SentimentPerQueryPerDate; import com.restservice.dto.Tweet; import com.restservice.dto.TweetTexts; import com.restservice.dto.TweetWithUser; import com.restservice.dto.TwitterUser; import com.restservice.rs.QueryService; import com.restservice.rs.ResultService; public class IntegrationTest { private static File properties; // Database properties file private static Transactor transactor; private static QueryService queryService; private static ResultService resultService; @BeforeClass public static void resetDatabase() { properties = new File(System.getProperty("user.home") + "/database_test.properties"); // Check if properties file exists. Tests don't start if it doesn't. if (!properties.isFile()) { fail("No test database properties file found at: " + properties.getPath()); } FileInputStream fis = null; try { // initialize transactor and services with this file transactor = new Transactor(properties.getPath()); queryService = new QueryService(properties.getPath()); resultService = new ResultService(properties.getPath()); Properties props = new Properties(); fis = new FileInputStream(properties.getPath()); props.load(fis); if (!props.containsKey("database.name")) { fail("Please add a database.name setting to your local database.properties file"); } Class.forName(props.getProperty("javabase.jdbc.driver")); String dbUrl = props.getProperty("javabase.jdbc.url") + "?user=" + props.getProperty("javabase.jdbc.username") + "&password=" + props.getProperty("javabase.jdbc.password"); Path path = Paths.get("src/test/resources/Dump.sql"); Path newPath = Paths.get("src/test/resources/LocalDump.sql"); Charset charset = StandardCharsets.UTF_8; String content = new String(Files.readAllBytes(path), charset); content = content.replaceAll("resttest", props.getProperty("database.name")); Files.write(newPath, content.getBytes(charset)); Reader reader = Resources.getResourceAsReader("LocalDump.sql"); Connection connection = DriverManager.getConnection(dbUrl); ScriptRunner sr = new ScriptRunner(connection); sr.setDelimiter(";"); sr.setLogWriter(null); sr.setErrorLogWriter(null); sr.runScript(reader); connection.commit(); reader.close(); } catch (SQLException sqle) { sqle.printStackTrace(); fail("fail"); } catch (Exception e) { fail(e.getMessage()); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } // Query Logic @Test public void testContainsQueryPositive() { Envelope env = queryService.containsQuery("merkel"); assertTrue("getData() returned " + (boolean) env.getData() + ", expected: true", (boolean) env.getData()); } @Test public void testContainsQueryNegative() { Envelope env = queryService.containsQuery("gabriel"); assertFalse("getData() returned " + (boolean) env.getData() + ", expected: false", (boolean) env.getData()); } @Test(expected = WebApplicationException.class) public void testNullParameterContainsQuery() { queryService.containsQuery(null); } @Test public void testGetQueriesString() { Envelope env = queryService.getQueries("merkel"); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: Query", env.getData(), instanceOf(Query.class)); Query query = (Query) env.getData(); assertTrue("getString() returned " + query.getString() + ", expected: Merkel", query.getString().equalsIgnoreCase("merkel")); assertTrue("getId() returned " + query.getId().longValue() + ", expected: 1", query.getId().longValue() == 1); } @Test(expected = WebApplicationException.class) public void testNullGetQueriesString() { queryService.getQueries((String) null); } @Test public void testGetQueriesId() { Envelope env = queryService.getQueries((long) 1); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: Query", env.getData(), instanceOf(Query.class)); Query query = (Query) env.getData(); assertTrue("getString() returned " + query.getString() + ", expected: Merkel", query.getString().equalsIgnoreCase("merkel")); assertTrue("getId() returned " + query.getId().longValue() + ", expected: 1", query.getId().longValue() == 1); } @Test public void testGetQueriesInvalidId() { Envelope env = queryService.getQueries((long) -1); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: Query", env.getData(), instanceOf(Query.class)); Query query = (Query) env.getData(); assertNull("getString() did not return null as expected", query.getString()); assertNull("getId() did not return null as expected", query.getId()); } @Test(expected = WebApplicationException.class) public void testNullGetQueriesId() { queryService.getQueries((Long) null); } @Test public void testGetMatchingQueriesFull() { Envelope env = queryService.getMatchingQueries("merkel"); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") List<QueryWithOccurence> queries = (List<QueryWithOccurence>) env.getData(); assertTrue("List.size() returned " + queries.size() + ", expected: 1", queries.size() == 1); QueryWithOccurence firstQuery = queries.get(0); assertTrue("getString() for query returned " + firstQuery.getString() + ", expected: Merkel", firstQuery.getString().equalsIgnoreCase("merkel")); assertTrue("getId() for query returned " + firstQuery.getId() + ", expected: 1", firstQuery.getId().longValue() == 1); assertTrue("getCount() for query returned " + firstQuery.getCount() + ", expected: 6", firstQuery.getCount() == 6); } @Test public void testGetMatchingQueriesPartial() { Envelope env = queryService.getMatchingQueries("me"); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") List<QueryWithOccurence> queries = (List<QueryWithOccurence>) env.getData(); assertTrue("List.size() returned " + queries.size() + ", expected: 2", queries.size() == 2); Query merkelQuery = queries.get(0); Query steuerQuery = queries.get(1); assertTrue("getQuery().getId() returned " + merkelQuery.getId() + ", expected: 1", merkelQuery.getId() == 1); assertTrue("getQuery().getString() returned " + merkelQuery.getString() + ", expected: Merkel", merkelQuery.getString().equalsIgnoreCase("Merkel")); assertTrue("getQuery().getId() returned " + steuerQuery.getId() + ", expected: 4", steuerQuery.getId() == 4); assertTrue("getQuery().getString() returned " + steuerQuery.getString() + ", expected: Mehrwertsteuer", steuerQuery.getString().equalsIgnoreCase("Mehrwertsteuer")); } @Test public void testGetMatchingQueriesEmpty() { Envelope env = queryService.getMatchingQueries("Kugel"); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") List<QueryWithOccurence> queries = (List<QueryWithOccurence>) env.getData(); assertTrue("List.size() returned " + queries.size() + ", expected: 0", queries.size() == 0); } @Test(expected = WebApplicationException.class) public void testNullGetMatchingQueries() { queryService.getMatchingQueries((String) null); } @Test public void testGetMetadata() { Response res = queryService.getMetadata(3l, "de", null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: QueryMetadata", env.getData(), instanceOf(QueryMetadata.class)); QueryMetadata query = (QueryMetadata) env.getData(); LocalDate expectedFirstDate = new LocalDate(2013, 1, 1); LocalDate expectedLastDate = new LocalDate(2013, 1, 2); assertTrue( "getNewestTweet().getTime() returned " + query.getNewestTweet().getTime() + ", expected: " + expectedFirstDate.toDate().getTime(), query.getNewestTweet().getTime() == expectedLastDate.toDate().getTime()); assertTrue( "getOldestTweet().getTime() returned " + query.getOldestTweet().getTime() + ", expected: " + expectedLastDate.toDate().getTime(), query.getOldestTweet().getTime() == expectedFirstDate.toDate().getTime()); assertTrue("getOccurence() returned " + query.getOccurence() + ", expected: 2", query.getOccurence() == 2); assertThat("getQuery().class returned " + query.getQuery().getClass().toString() + ", expected: Query", query.getQuery(), instanceOf(Query.class)); assertTrue("getQuery().getId() returned " + query.getQuery().getId() + ", expected: 3", query.getQuery().getId() == 3); assertTrue("getQuery().getString() returned " + query.getQuery().getString() + ", expected: Datum", query.getQuery().getString().equalsIgnoreCase("Datum")); } @Test public void testGetMetadataInvalidId() { Response res = queryService.getMetadata(-1l, "de", null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: QueryMetadata", env.getData(), instanceOf(QueryMetadata.class)); QueryMetadata query = (QueryMetadata) env.getData(); assertNull("getNewestTweet() did not return null as expected", query.getNewestTweet()); assertNull("getOldestTweet() did not return null as expected", query.getOldestTweet()); assertTrue("getOccurence() returned " + query.getOccurence() + ", expected: 0", query.getOccurence() == 0); assertThat("getQuery().class returned " + query.getQuery().getClass().toString() + ", expected: Query", query.getQuery(), instanceOf(Query.class)); assertTrue("getQuery().getId() returned " + query.getQuery().getId() + ", expected: -1", query.getQuery().getId() == -1); assertNull("getQuery().getString() did not return null as expected", query.getQuery().getString()); } @Test(expected = WebApplicationException.class) public void testNullGetMetadata() { queryService.getMetadata(null, null, null); } // Save a new search term and delete it afterwards by resetting the database // (in the finally statement) @Test public void testSaveSearchTerm() { try { queryService.postTwitterQuery("Gabriel"); try { ResultSet results = transactor .executeQuery("select active, interval_length from search_terms where term = 'Gabriel';"); assertTrue("Entered search term not found in database", results.first()); assertTrue("search_term entry active returned " + results.getInt("active") + ", expected: 1", results.getInt("active") == 1); assertTrue( "search_term entry interval_length returned " + results.getTime("interval_length") + ", expected: 00:15:00", results.getTime("interval_length").equals(Time.valueOf("00:15:00"))); } catch (SQLException e) { fail("Unable to look up entered search term: " + e.toString()); } finally { transactor.close(); } } finally { resetDatabase(); } } @Test public void testSaveExistingSearchTerm() { assertTrue("Existing search term doesn't exist in database", (boolean) queryService.containsQuery("Merkel").getData()); try { ResultSet results = transactor .executeQuery("select count(*) as count from search_terms where term = 'Merkel';"); assertTrue("Expected at least one result", results.first()); assertTrue("Number of search term entries: " + results.getInt("count") + ", expected: 1", results.getInt("count") == 1); } catch (SQLException e) { fail("Unable to count returned entries: " + e.toString()); } finally { transactor.close(); } } @Test(expected = WebApplicationException.class) public void testNullSaveSearchTerm() { queryService.postTwitterQuery((String) null); } // Result Logic @Test public void testGetCountAndNewsPerHour() { Response res = resultService.getCountAndNewsPerHour(5l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: CountAndNewsPerHour", env.getData(), instanceOf(CountAndNewsPerHour.class)); CountAndNewsPerHour data = (CountAndNewsPerHour) env.getData(); assertTrue("getQuery().getId() returned " + data.getQuery().getId() + ", expected: 5", data.getQuery().getId() == 5); assertTrue("getQuery().getString() returned " + data.getQuery().getString() + ", expected: Count", data.getQuery().getString().equalsIgnoreCase("Count")); assertTrue("getGraph().size() returned " + data.getGraph().size() + ", expected: 3", data.getGraph().size() == 3); assertTrue("getCounts().get(0) returned " + data.getGraph().get(0).getCount() + ", expected: 1", data.getGraph().get(0).getCount() == 1); assertTrue("getCounts().get(1) returned " + data.getGraph().get(1).getCount() + ", expected: 1", data.getGraph().get(1).getCount() == 1); assertTrue("getCounts().get(2) returned " + data.getGraph().get(2).getCount() + ", expected: 4", data.getGraph().get(2).getCount() == 4); assertTrue( "getDateStrings().get(0) returned " + data.getGraph().get(0).getDateString() + ", expected: '013-01-01T10:00:00.000'", data.getGraph().get(0).getDateString().equalsIgnoreCase("2013-01-01T10:00:00.000")); assertTrue( "getDateStrings().get(1) returned " + data.getGraph().get(1).getDateString() + ", expected: '2013-01-01T11:00:00.000'", data.getGraph().get(1).getDateString().equalsIgnoreCase("2013-01-01T11:00:00.000")); assertTrue( "getDateStrings().get(2) returned " + data.getGraph().get(2).getDateString() + ", expected: '2013-01-01T12:00:00.000'", data.getGraph().get(2).getDateString().equalsIgnoreCase("2013-01-01T12:00:00.000")); } @Test public void testGetCountAndNewsPerHourInvalidId() { Response res = resultService.getCountAndNewsPerHour(-1l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: CountAndNewsPerHour", env.getData(), instanceOf(CountAndNewsPerHour.class)); CountAndNewsPerHour data = (CountAndNewsPerHour) env.getData(); assertTrue("getQuery().getId() returned " + data.getQuery().getId() + ", expected: -1", data.getQuery().getId() == -1); assertNull("getQuery().getString() did not return null as expected", data.getQuery().getString()); assertTrue("getGraph().size() returned " + data.getGraph().size() + ", expected: 0", data.getGraph().size() == 0); } @Test public void testGetCountAndNewsPerHourWithZeroes() { Response res = resultService.getCountAndNewsPerHour(6l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: CountAndNewsPerHour", env.getData(), instanceOf(CountAndNewsPerHour.class)); CountAndNewsPerHour data = (CountAndNewsPerHour) env.getData(); assertTrue("getQuery().getId() returned " + data.getQuery().getId() + ", expected: 6", data.getQuery().getId() == 6); assertTrue("getQuery().getString() returned " + data.getQuery().getString() + ", expected: CountZero", data.getQuery().getString().equalsIgnoreCase("CountZero")); assertTrue("getGraph().size() returned " + data.getGraph().size() + ", expected: 4", data.getGraph().size() == 4); assertTrue("getCount().get(0) returned " + data.getGraph().get(0).getCount() + ", expected: 1", data.getGraph().get(0).getCount() == 1); assertTrue("getCounts().get(1) returned " + data.getGraph().get(1).getCount() + ", expected: 0", data.getGraph().get(1).getCount() == 0); assertTrue("getCounts().get(2) returned " + data.getGraph().get(2).getCount() + ", expected: 0", data.getGraph().get(2).getCount() == 0); assertTrue("getCounts().get(2) returned " + data.getGraph().get(3).getCount() + ", expected: 1", data.getGraph().get(3).getCount() == 1); assertTrue( "getDateStrings().get(0) returned " + data.getGraph().get(0).getDateString() + ", expected: '2013-01-01T12:00:00.000'", data.getGraph().get(0).getDateString().equalsIgnoreCase("2013-01-01T12:00:00.000")); assertTrue( "getDateStrings().get(1) returned " + data.getGraph().get(1).getDateString() + ", expected: '2013-01-01T13:00:00.000'", data.getGraph().get(1).getDateString().equalsIgnoreCase("2013-01-01T13:00:00.000")); assertTrue( "getDateStrings().get(2) returned " + data.getGraph().get(2).getDateString() + ", expected: '2013-01-01T14:00:00.000'", data.getGraph().get(2).getDateString().equalsIgnoreCase("2013-01-01T14:00:00.000")); assertTrue( "getDateStrings().get(3) returned " + data.getGraph().get(3).getDateString() + ", expected: '2013-01-01T15:00:00.000'", data.getGraph().get(3).getDateString().equalsIgnoreCase("2013-01-01T15:00:00.000")); } @Test public void testGetSentimentPerDay() { Response res = resultService.getSentimentPerHour(5l, "de", null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().Class returned " + env.getData().getClass().toString() + ", expected: SentimentPerQueryPerDate", env.getData(), instanceOf(SentimentPerQueryPerDate.class)); SentimentPerQueryPerDate data = (SentimentPerQueryPerDate) env.getData(); assertTrue("getPositiveCounts().getQuery().getId() returned " + data.getPositiveCounts().getQuery().getId() + ", expected: 5", data.getPositiveCounts().getQuery().getId() == 5); assertTrue( "getPositiveCounts().getQuery().getString() returned " + data.getPositiveCounts().getQuery().getString() + ", expected: Count", data.getPositiveCounts().getQuery().getString().equalsIgnoreCase("Count")); assertTrue("getPositiveCounts().getCounts().size() returned " + data.getPositiveCounts().getCounts().size() + ", expected: 3", data.getPositiveCounts().getCounts().size() == 3); assertTrue("getPositiveCounts().getCounts().get(0) returned " + data.getPositiveCounts().getCounts().get(0) + ", expected: 1", data.getPositiveCounts().getCounts().get(0) == 1); assertTrue("getPositiveCounts().getCounts().get(1) returned " + data.getPositiveCounts().getCounts().get(1) + ", expected: 0", data.getPositiveCounts().getCounts().get(1) == 0); assertTrue("getPositiveCounts().getCounts().get(2) returned " + data.getPositiveCounts().getCounts().get(2) + ", expected: 3", data.getPositiveCounts().getCounts().get(2) == 3); assertTrue( "getPositiveCounts().getDateStrings().size() returned " + data.getPositiveCounts().getDateStrings().size() + ", expected: 3", data.getPositiveCounts().getDateStrings().size() == 3); assertTrue("getPositiveCounts().getDateStrings().get(0) returned " + data.getPositiveCounts().getDateStrings().get(0) + ", expected: '2013-01-01T10:00:00.000'", data.getPositiveCounts().getDateStrings().get(0).equalsIgnoreCase("2013-01-01T10:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(1) returned " + data.getPositiveCounts().getDateStrings().get(1) + ", expected: '2013-01-01T11:00:00.000'", data.getPositiveCounts().getDateStrings().get(1).equalsIgnoreCase("2013-01-01T11:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(2) returned " + data.getPositiveCounts().getDateStrings().get(2) + ", expected: '2013-01-01T12:00:00.000'", data.getPositiveCounts().getDateStrings().get(2).equalsIgnoreCase("2013-01-01T12:00:00.000")); assertTrue("getNegativeCounts().getQuery().getId() returned " + data.getNegativeCounts().getQuery().getId() + ", expected: 5", data.getNegativeCounts().getQuery().getId() == 5); assertTrue( "getNegativeCounts().getQuery().getString() returned " + data.getNegativeCounts().getQuery().getString() + ", expected: Count", data.getNegativeCounts().getQuery().getString().equalsIgnoreCase("Count")); assertTrue("getNegativeCounts().getCounts().size() returned " + data.getNegativeCounts().getCounts().size() + ", expected: 3", data.getNegativeCounts().getCounts().size() == 3); assertTrue("getNegativeCounts().getCounts().get(0) returned " + data.getNegativeCounts().getCounts().get(0) + ", expected: 0", data.getNegativeCounts().getCounts().get(0) == 0); assertTrue("getNegativeCounts().getCounts().get(1) returned " + data.getNegativeCounts().getCounts().get(1) + ", expected: 0", data.getNegativeCounts().getCounts().get(1) == 0); assertTrue("getNegativeCounts().getCounts().get(2) returned " + data.getNegativeCounts().getCounts().get(2) + ", expected: 0", data.getNegativeCounts().getCounts().get(2) == 0); assertTrue( "getNegativeCounts().getDateStrings().size() returned " + data.getNegativeCounts().getDateStrings().size() + ", expected: 3", data.getNegativeCounts().getDateStrings().size() == 3); assertTrue("getNegativeCounts().getDateStrings().get(0) returned " + data.getNegativeCounts().getDateStrings().get(0) + ", expected: '2013-01-01T10:00:00.000'", data.getNegativeCounts().getDateStrings().get(0).equalsIgnoreCase("2013-01-01T10:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(1) returned " + data.getNegativeCounts().getDateStrings().get(1) + ", expected: '2013-01-01T11:00:00.000'", data.getNegativeCounts().getDateStrings().get(1).equalsIgnoreCase("2013-01-01T11:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(2) returned " + data.getNegativeCounts().getDateStrings().get(2) + ", expected: '2013-01-01T12:00:00.000'", data.getNegativeCounts().getDateStrings().get(2).equalsIgnoreCase("2013-01-01T12:00:00.000")); } @Test public void testGetSentimentPerDayLanguage() { Response res = resultService.getSentimentPerHour(5l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().Class returned " + env.getData().getClass().toString() + ", expected: SentimentPerQueryPerDate", env.getData(), instanceOf(SentimentPerQueryPerDate.class)); SentimentPerQueryPerDate data = (SentimentPerQueryPerDate) env.getData(); assertTrue("getPositiveCounts().getQuery().getId() returned " + data.getPositiveCounts().getQuery().getId() + ", expected: 5", data.getPositiveCounts().getQuery().getId() == 5); assertTrue( "getPositiveCounts().getQuery().getString() returned " + data.getPositiveCounts().getQuery().getString() + ", expected: Count", data.getPositiveCounts().getQuery().getString().equalsIgnoreCase("Count")); assertTrue("getPositiveCounts().getCounts().size() returned " + data.getPositiveCounts().getCounts().size() + ", expected: 3", data.getPositiveCounts().getCounts().size() == 3); assertTrue("getPositiveCounts().getCounts().get(0) returned " + data.getPositiveCounts().getCounts().get(0) + ", expected: 1", data.getPositiveCounts().getCounts().get(0) == 1); assertTrue("getPositiveCounts().getCounts().get(1) returned " + data.getPositiveCounts().getCounts().get(1) + ", expected: 1", data.getPositiveCounts().getCounts().get(1) == 1); assertTrue("getPositiveCounts().getCounts().get(2) returned " + data.getPositiveCounts().getCounts().get(2) + ", expected: 4", data.getPositiveCounts().getCounts().get(2) == 4); assertTrue( "getPositiveCounts().getDateStrings().size() returned " + data.getPositiveCounts().getDateStrings().size() + ", expected: 3", data.getPositiveCounts().getDateStrings().size() == 3); assertTrue("getPositiveCounts().getDateStrings().get(0) returned " + data.getPositiveCounts().getDateStrings().get(0) + ", expected: '2013-01-01T10:00:00.000'", data.getPositiveCounts().getDateStrings().get(0).equalsIgnoreCase("2013-01-01T10:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(1) returned " + data.getPositiveCounts().getDateStrings().get(1) + ", expected: '2013-01-01T11:00:00.000'", data.getPositiveCounts().getDateStrings().get(1).equalsIgnoreCase("2013-01-01T11:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(2) returned " + data.getPositiveCounts().getDateStrings().get(2) + ", expected: '2013-01-01T12:00:00.000'", data.getPositiveCounts().getDateStrings().get(2).equalsIgnoreCase("2013-01-01T12:00:00.000")); assertTrue("getNegativeCounts().getQuery().getId() returned " + data.getNegativeCounts().getQuery().getId() + ", expected: 5", data.getNegativeCounts().getQuery().getId() == 5); assertTrue( "getNegativeCounts().getQuery().getString() returned " + data.getNegativeCounts().getQuery().getString() + ", expected: Count", data.getNegativeCounts().getQuery().getString().equalsIgnoreCase("Count")); assertTrue("getNegativeCounts().getCounts().size() returned " + data.getNegativeCounts().getCounts().size() + ", expected: 3", data.getNegativeCounts().getCounts().size() == 3); assertTrue("getNegativeCounts().getCounts().get(0) returned " + data.getNegativeCounts().getCounts().get(0) + ", expected: 0", data.getNegativeCounts().getCounts().get(0) == 0); assertTrue("getNegativeCounts().getCounts().get(1) returned " + data.getNegativeCounts().getCounts().get(1) + ", expected: 0", data.getNegativeCounts().getCounts().get(1) == 0); assertTrue("getNegativeCounts().getCounts().get(2) returned " + data.getNegativeCounts().getCounts().get(2) + ", expected: 0", data.getNegativeCounts().getCounts().get(2) == 0); assertTrue( "getNegativeCounts().getDateStrings().size() returned " + data.getNegativeCounts().getDateStrings().size() + ", expected: 3", data.getNegativeCounts().getDateStrings().size() == 3); assertTrue("getNegativeCounts().getDateStrings().get(0) returned " + data.getNegativeCounts().getDateStrings().get(0) + ", expected: '2013-01-01T10:00:00.000'", data.getNegativeCounts().getDateStrings().get(0).equalsIgnoreCase("2013-01-01T10:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(1) returned " + data.getNegativeCounts().getDateStrings().get(1) + ", expected: '2013-01-01T11:00:00.000'", data.getNegativeCounts().getDateStrings().get(1).equalsIgnoreCase("2013-01-01T11:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(2) returned " + data.getNegativeCounts().getDateStrings().get(2) + ", expected: '2013-01-01T12:00:00.000'", data.getNegativeCounts().getDateStrings().get(2).equalsIgnoreCase("2013-01-01T12:00:00.000")); } @Test public void testGetSentimentPerDayInvalidId() { Response res = resultService.getSentimentPerHour(-1l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().Class returned " + env.getData().getClass().toString() + ", expected: SentimentPerQueryPerDate", env.getData(), instanceOf(SentimentPerQueryPerDate.class)); SentimentPerQueryPerDate data = (SentimentPerQueryPerDate) env.getData(); assertTrue("getPositiveCounts().getQuery().getId() returned " + data.getPositiveCounts().getQuery().getId() + ", expected: -1", data.getPositiveCounts().getQuery().getId() == -1); assertTrue( "getPositiveCounts().getQuery().getString() returned " + data.getPositiveCounts().getQuery().getString() + ", expected: ", data.getPositiveCounts().getQuery().getString().equals("")); assertTrue("getPositiveCounts().getCounts().size() returned " + data.getPositiveCounts().getCounts().size() + ", expected: 0", data.getPositiveCounts().getCounts().size() == 0); assertTrue( "getPositiveCounts().getDateStrings().size() returned " + data.getPositiveCounts().getDateStrings().size() + ", expected: 0", data.getPositiveCounts().getDateStrings().size() == 0); assertTrue("getNegativeCounts().getQuery().getId() returned " + data.getNegativeCounts().getQuery().getId() + ", expected: -1", data.getNegativeCounts().getQuery().getId() == -1); assertTrue( "getNegativeCounts().getQuery().getString() returned " + data.getNegativeCounts().getQuery().getString() + ", expected: ", data.getNegativeCounts().getQuery().getString().equals("")); assertTrue("getNegativeCounts().getCounts().size() returned " + data.getNegativeCounts().getCounts().size() + ", expected: 0", data.getNegativeCounts().getCounts().size() == 0); assertTrue( "getNegativeCounts().getDateStrings().size() returned " + data.getNegativeCounts().getDateStrings().size() + ", expected: 0", data.getNegativeCounts().getDateStrings().size() == 0); } @Test public void testGetSentimentPerDayWithZeroes() { Response res = resultService.getSentimentPerHour(6l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().Class returned " + env.getData().getClass().toString() + ", expected: SentimentPerQueryPerDate", env.getData(), instanceOf(SentimentPerQueryPerDate.class)); SentimentPerQueryPerDate data = (SentimentPerQueryPerDate) env.getData(); assertTrue("getPositiveCounts().getQuery().getId() returned " + data.getPositiveCounts().getQuery().getId() + ", expected: 6", data.getPositiveCounts().getQuery().getId() == 6); assertTrue( "getPositiveCounts().getQuery().getString() returned " + data.getPositiveCounts().getQuery().getString() + ", expected: CountZero", data.getPositiveCounts().getQuery().getString().equalsIgnoreCase("CountZero")); assertTrue("getPositiveCounts().getCounts().size() returned " + data.getPositiveCounts().getCounts().size() + ", expected: 4", data.getPositiveCounts().getCounts().size() == 4); assertTrue("getPositiveCounts().getCounts().get(0) returned " + data.getPositiveCounts().getCounts().get(0) + ", expected: 1", data.getPositiveCounts().getCounts().get(0) == 1); assertTrue("getPositiveCounts().getCounts().get(1) returned " + data.getPositiveCounts().getCounts().get(1) + ", expected: 0", data.getPositiveCounts().getCounts().get(1) == 0); assertTrue("getPositiveCounts().getCounts().get(2) returned " + data.getPositiveCounts().getCounts().get(2) + ", expected: 0", data.getPositiveCounts().getCounts().get(2) == 0); assertTrue("getPositiveCounts().getCounts().get(2) returned " + data.getPositiveCounts().getCounts().get(3) + ", expected: 1", data.getPositiveCounts().getCounts().get(3) == 1); assertTrue( "getPositiveCounts().getDateStrings().size() returned " + data.getPositiveCounts().getDateStrings().size() + ", expected: 4", data.getPositiveCounts().getDateStrings().size() == 4); assertTrue("getPositiveCounts().getDateStrings().get(0) returned " + data.getPositiveCounts().getDateStrings().get(0) + ", expected: '2013-01-01T12:00:00.000'", data.getPositiveCounts().getDateStrings().get(0).equalsIgnoreCase("2013-01-01T12:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(1) returned " + data.getPositiveCounts().getDateStrings().get(1) + ", expected: '2013-01-01T13:00:00.000'", data.getPositiveCounts().getDateStrings().get(1).equalsIgnoreCase("2013-01-01T13:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(2) returned " + data.getPositiveCounts().getDateStrings().get(2) + ", expected: '2013-01-01T14:00:00.000'", data.getPositiveCounts().getDateStrings().get(2).equalsIgnoreCase("2013-01-01T14:00:00.000")); assertTrue("getPositiveCounts().getDateStrings().get(3) returned " + data.getPositiveCounts().getDateStrings().get(3) + ", expected: '2013-01-01T15:00:00.000'", data.getPositiveCounts().getDateStrings().get(3).equalsIgnoreCase("2013-01-01T15:00:00.000")); assertTrue("getNegativeCounts().getQuery().getId() returned " + data.getNegativeCounts().getQuery().getId() + ", expected: 6", data.getNegativeCounts().getQuery().getId() == 6); assertTrue( "getNegativeCounts().getQuery().getString() returned " + data.getNegativeCounts().getQuery().getString() + ", expected: CountZero", data.getNegativeCounts().getQuery().getString().equalsIgnoreCase("CountZero")); assertTrue("getNegativeCounts().getCounts().size() returned " + data.getNegativeCounts().getCounts().size() + ", expected: 4", data.getNegativeCounts().getCounts().size() == 4); assertTrue("getNegativeCounts().getCounts().get(0) returned " + data.getNegativeCounts().getCounts().get(0) + ", expected: 0", data.getNegativeCounts().getCounts().get(0) == 0); assertTrue("getNegativeCounts().getCounts().get(1) returned " + data.getNegativeCounts().getCounts().get(1) + ", expected: 0", data.getNegativeCounts().getCounts().get(1) == 0); assertTrue("getNegativeCounts().getCounts().get(2) returned " + data.getNegativeCounts().getCounts().get(2) + ", expected: 0", data.getNegativeCounts().getCounts().get(2) == 0); assertTrue("getNegativeCounts().getCounts().get(2) returned " + data.getNegativeCounts().getCounts().get(3) + ", expected: 0", data.getNegativeCounts().getCounts().get(3) == 0); assertTrue( "getNegativeCounts().getDateStrings().size() returned " + data.getNegativeCounts().getDateStrings().size() + ", expected: 4", data.getNegativeCounts().getDateStrings().size() == 4); assertTrue("getNegativeCounts().getDateStrings().get(0) returned " + data.getNegativeCounts().getDateStrings().get(0) + ", expected: '2013-01-01T12:00:00.000'", data.getNegativeCounts().getDateStrings().get(0).equalsIgnoreCase("2013-01-01T12:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(1) returned " + data.getNegativeCounts().getDateStrings().get(1) + ", expected: '2013-01-01T13:00:00.000'", data.getNegativeCounts().getDateStrings().get(1).equalsIgnoreCase("2013-01-01T13:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(2) returned " + data.getNegativeCounts().getDateStrings().get(2) + ", expected: '2013-01-01T14:00:00.000'", data.getNegativeCounts().getDateStrings().get(2).equalsIgnoreCase("2013-01-01T14:00:00.000")); assertTrue("getNegativeCounts().getDateStrings().get(3) returned " + data.getNegativeCounts().getDateStrings().get(3) + ", expected: '2013-01-01T15:00:00.000'", data.getNegativeCounts().getDateStrings().get(3).equalsIgnoreCase("2013-01-01T15:00:00.000")); } @Test(expected = WebApplicationException.class) public void testNullGetCountPerDay() { resultService.getCountAndNewsPerHour(null, null, null); } @Test public void testGetSentiments() { Response res = resultService.getSentiments(1l, "de", null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: SentimentData", env.getData(), instanceOf(SentimentData.class)); SentimentData sentData = (SentimentData) env.getData(); assertTrue("sentData.getId() returned " + sentData.getID() + ", expected: 1", sentData.getID() == 1); assertTrue("sentData.getPositive() returned " + sentData.getPositive() + ", expected: 4", sentData.getPositive() == 4); assertTrue("sentData.getNeutral() returned " + sentData.getNeutral() + ", expected: 1", sentData.getNeutral() == 1); assertTrue("sentData.getNegative() returned " + sentData.getNegative() + ", expected: 0", sentData.getNegative() == 0); } @Test public void testGetHashtagStatisticsForSearchTermId() { Response res = resultService.getHashtagStatisticsForSearchTermId(1l, "de", 10l, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().Class returned " + env.getData().getClass().toString() + ", expected: " + HashtagStatisticsForSearchTermId.class.toString(), env.getData(), instanceOf(HashtagStatisticsForSearchTermId.class)); HashtagStatisticsForSearchTermId sentData = (HashtagStatisticsForSearchTermId) env.getData(); assertEquals(sentData.getCounts().size(), 3); assertEquals(sentData.getHashtagIds().size(), 3); assertEquals(sentData.getHashtagTexts().size(), 3); assertTrue(sentData.getCounts().get(0) == 3); assertEquals(sentData.getHashtagIds().get(0), "1"); assertEquals(sentData.getHashtagTexts().get(0), "hashtag1"); assertTrue(sentData.getCounts().get(1) == 2); assertEquals(sentData.getHashtagIds().get(1), "2"); assertEquals(sentData.getHashtagTexts().get(1), "hashtag2"); assertTrue(sentData.getCounts().get(2) == 1); assertEquals(sentData.getHashtagIds().get(2), "3"); assertEquals(sentData.getHashtagTexts().get(2), "hashtag3"); } @Test public void testGetHashtagStatisticsForSearchTermIdLimit() { long limit = 1l; // 1 Response res = resultService.getHashtagStatisticsForSearchTermId(1l, null, limit, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().class returned " + env.getData().getClass().toString() + ", expected: " + HashtagStatisticsForSearchTermId.class.toString(), env.getData(), instanceOf(HashtagStatisticsForSearchTermId.class)); HashtagStatisticsForSearchTermId data = (HashtagStatisticsForSearchTermId) env.getData(); assertTrue("Value pairs returned: " + data.getHashtagIds().size() + ", expected: 2", data.getHashtagIds().size() == limit); // 2 limit = 2l; res = resultService.getHashtagStatisticsForSearchTermId(1l, null, limit, null); env = (Envelope) res.getEntity(); assertThat( "getData().class returned " + env.getData().getClass().toString() + ", expected: " + HashtagStatisticsForSearchTermId.class.toString(), env.getData(), instanceOf(HashtagStatisticsForSearchTermId.class)); data = (HashtagStatisticsForSearchTermId) env.getData(); assertTrue("Value pairs returned: " + data.getHashtagIds().size() + ", expected: 2", data.getHashtagIds().size() == limit); // 3 limit = 3l; res = resultService.getHashtagStatisticsForSearchTermId(1l, null, limit, null); env = (Envelope) res.getEntity(); assertThat( "getData().class returned " + env.getData().getClass().toString() + ", expected: " + HashtagStatisticsForSearchTermId.class.toString(), env.getData(), instanceOf(HashtagStatisticsForSearchTermId.class)); data = (HashtagStatisticsForSearchTermId) env.getData(); assertTrue("Value pairs returned: " + data.getHashtagIds().size() + ", expected: 2", data.getHashtagIds().size() == limit); } /* * Tests whether a hashtag is ignored and not returned in case it equals the * search term */ @Test public void testGetHashtagStatisticsIgnoreSearchTerm() { Response res = resultService.getHashtagStatisticsForSearchTermId(3l, null, 10l, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().class returned " + env.getData().getClass().toString() + ", expected: " + HashtagStatisticsForSearchTermId.class.toString(), env.getData(), instanceOf(HashtagStatisticsForSearchTermId.class)); HashtagStatisticsForSearchTermId data = (HashtagStatisticsForSearchTermId) env.getData(); assertTrue("Value pairs returned: " + data.getHashtagIds().size() + ", expected: 1", data.getHashtagIds().size() == 1); } @Test public void testGetSentimentsInvalidId() { Response res = resultService.getSentiments(-1l, null, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: SentimentData", env.getData(), instanceOf(SentimentData.class)); SentimentData sentData = (SentimentData) env.getData(); assertTrue("sentData.getId() returned " + sentData.getID() + ", expected: -1", sentData.getID() == -1); assertTrue("sentData.getPositive() returned " + sentData.getPositive() + ", expected: 0", sentData.getPositive() == 0); assertTrue("sentData.getNeutral() returned " + sentData.getNeutral() + ", expected: 0", sentData.getNeutral() == 0); assertTrue("sentData.getNegative() returned " + sentData.getNegative() + ", expected: 0", sentData.getNegative() == 0); } @Test(expected = WebApplicationException.class) public void testNullGetSentiments() { resultService.getSentiments(null, null, null); } @Test public void testGetTweet() { Envelope env = resultService.getTweet("1"); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: Tweet", env.getData(), instanceOf(Tweet.class)); Tweet tweet = (Tweet) env.getData(); assertTrue("tweet.getId() returned " + tweet.getId().toString() + ", expected: 1", tweet.getId().equalsIgnoreCase("1")); assertTrue("tweet.getLang().getIsoCode() returned " + tweet.getLang().getIsoCode() + ", expected: de", tweet.getLang().getIsoCode().equalsIgnoreCase("de")); assertNull("tweet.getReplyId() did not return null as expected ", tweet.getReplyId()); assertNull("tweet.getRetweetId() did not return null as expected ", tweet.getRetweetId()); assertTrue("tweet.getSource() returned " + tweet.getSource() + ", expected: www.url.com", tweet.getSource().equalsIgnoreCase("www.url.com")); assertTrue("tweet.getText() returned " + tweet.getText() + ", expected: Merkel", tweet.getText().equalsIgnoreCase("Merkel")); assertTrue("tweet.getUserId() returned " + tweet.getUserId() + ", expected: 1", tweet.getUserId().equalsIgnoreCase("1")); assertTrue( "tweet.getCoordinateLatitude() returned " + tweet.getCoordinateLatitude() + ", expected: 18.9413", tweet.getCoordinateLatitude() == 18.9413f); assertTrue( "tweet.getCoordinateLongitude() returned " + tweet.getCoordinateLongitude() + ", expected: 69.641", tweet.getCoordinateLongitude() == 69.641f); assertTrue("tweet.getRetweetCount() returned " + tweet.getRetweetCount() + ", expected: 2", tweet.getRetweetCount() == 2); assertTrue("tweet.getSentiment().getValue() returned " + tweet.getSentiment().getValue() + ", expected: 0", tweet.getSentiment().getValue() == (float) 0); } @Test public void testGetTweetInvalidId() { Envelope env = resultService.getTweet("-1"); assertNull("getData() did not return null as expected ", env.getData()); } @Test(expected = WebApplicationException.class) public void testNullGetTweet() { resultService.getTweet(null); } @Test public void testGetUser() { Envelope env = resultService.getUser("1"); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: TwitterUser", env.getData(), instanceOf(TwitterUser.class)); TwitterUser user = (TwitterUser) env.getData(); assertTrue("user.getId() returned " + user.getId() + ", expected: 1", user.getId().equalsIgnoreCase("1")); assertTrue("user.getDescription() returned " + user.getDescription() + ", expected: description", user.getDescription().equalsIgnoreCase("description")); assertTrue("user.getFollowersCount() returned " + user.getFollowersCount() + ", expected: 1", user.getFollowersCount() == 1); assertTrue("user.getLang() returned " + user.getLang() + ", expected: de", user.getLang().equalsIgnoreCase("de")); assertTrue("user.getLocation() returned " + user.getLocation() + ", expected: de", user.getLocation().equalsIgnoreCase("de")); assertTrue("user.getName() returned " + user.getName() + ", expected: name", user.getName().equalsIgnoreCase("name")); assertTrue("user.getProfileImageUrl() returned " + user.getProfileImageUrl() + ", expected: image url", user.getProfileImageUrl().equalsIgnoreCase("image url")); assertTrue("user.getScreenName() returned " + user.getScreenName() + ", expected: screen_name", user.getScreenName().equalsIgnoreCase("screen_name")); assertTrue("user.getStatusesCount() returned " + user.getStatusesCount() + ", expected: 1", user.getStatusesCount() == 1); assertTrue("user.getTimeZone() returned " + user.getTimeZone() + ", expected: UTC", user.getTimeZone().equalsIgnoreCase("UTC")); assertTrue("user.getUrl() returned " + user.getUrl() + ", expected: url", user.getUrl().equalsIgnoreCase("url")); assertTrue("user.getVerified() returned " + user.getVerified() + ", expected: 1", user.getVerified() == 1); } @Test public void testGetUserInvalidId() { Envelope env = resultService.getUser("-1"); assertNull("getData() did not return null as expected ", env.getData()); } @Test(expected = WebApplicationException.class) public void testNullGetUser() { resultService.getUser(null); } @Test public void testGetTweetsForSearchTerm() { try { Response res = resultService.getTweets((long) 1, null, null, null, null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 6", tweets.size() == 6); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 1", twu.getTweet().getId().equalsIgnoreCase("1")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 69.641", (twu.getTweet().getCoordinateLongitude() == 69.641f)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 18.9413", (twu.getTweet().getCoordinateLatitude() == 18.9413f)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:04:29.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:04:29.0")); assertTrue("twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 2", (twu.getTweet().getRetweetCount() == 2)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 0", (twu.getTweet().getSentiment().getValue() == 0)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue( "twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } catch (Exception e) { fail(); e.printStackTrace(); } } @Test public void testGetTweetsForSearchTermPositive() { Response res = resultService.getTweets((long) 1, "positive", null, "2014-01-01 11:00:00", null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 2", tweets.size() == 2); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 3", twu.getTweet().getId().equalsIgnoreCase("3")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 0", (twu.getTweet().getCoordinateLongitude() == 0)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 0", (twu.getTweet().getCoordinateLatitude() == 0)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:07:11.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:07:11.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 1", (twu.getTweet().getRetweetCount() == 1)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 1", (twu.getTweet().getSentiment().getValue() == 1)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test public void testGetTweetsForSearchTermNeutral() { Response res = resultService.getTweets((long) 1, "neutral", null, null, null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 1", tweets.size() == 1); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 1", twu.getTweet().getId().equalsIgnoreCase("1")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 69.641", (twu.getTweet().getCoordinateLongitude() == 69.641f)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 18.9413", (twu.getTweet().getCoordinateLatitude() == 18.9413f)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:04:29.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:04:29.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 2", (twu.getTweet().getRetweetCount() == 2)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 0", (twu.getTweet().getSentiment().getValue() == 0)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test public void testGetTweetsForSearchTermNegative() { Response res = resultService.getTweets((long) 1, "negative", null, null, null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 0", tweets.size() == 0); } @Test public void testGetTweetsForSearchTermBefore() { Response res = resultService.getTweets((long) 1, null, null, "2013-12-02T16:05Z", null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 1", tweets.size() == 1); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 1", twu.getTweet().getId().equalsIgnoreCase("1")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 69.641", (twu.getTweet().getCoordinateLongitude() == 69.641f)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 18.9413", (twu.getTweet().getCoordinateLatitude() == 18.9413f)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:04:29.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:04:29.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 2", (twu.getTweet().getRetweetCount() == 2)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 0", (twu.getTweet().getSentiment().getValue() == 0)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test public void testGetTweetsForSearchTermAfter() { Response res = resultService.getTweets((long) 1, null, "2013-12-02T16:05Z", "2014-01-01T11:00:00Z", null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 2", tweets.size() == 2); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 3", twu.getTweet().getId().equalsIgnoreCase("3")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 0", (twu.getTweet().getCoordinateLongitude() == 0)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 0", (twu.getTweet().getCoordinateLatitude() == 0)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:07:11.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:07:11.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 1", (twu.getTweet().getRetweetCount() == 1)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 1", (twu.getTweet().getSentiment().getValue() == 1)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test public void testGetTweetsForSearchTermIntervall() { Response res = resultService.getTweets((long) 1, null, "2013-12-02T16:05:05Z", "2013-12-02T16:07:05Z", null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 1", tweets.size() == 1); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 2", twu.getTweet().getId().equalsIgnoreCase("2")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 0", (twu.getTweet().getCoordinateLongitude() == 0)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 0", (twu.getTweet().getCoordinateLatitude() == 0)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:07:04.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:07:04.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 0", (twu.getTweet().getRetweetCount() == 0)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 1", (twu.getTweet().getSentiment().getValue() == 1)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test public void testGetTweetsForSearchTermLimit() { Response res = resultService.getTweets((long) 1, null, "2013-12-02T16:05:05Z", "2013-12-02T16:08:05Z", null, null, 1, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 1", tweets.size() == 1); TweetWithUser twu = tweets.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 3", twu.getTweet().getId().equalsIgnoreCase("3")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 0", (twu.getTweet().getCoordinateLongitude() == 0)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 0", (twu.getTweet().getCoordinateLatitude() == 0)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:07:11.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:07:11.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 1", (twu.getTweet().getRetweetCount() == 1)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 1", (twu.getTweet().getSentiment().getValue() == 1)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test public void testGetTweetsForSearchTermInvalidId() { Response res = resultService.getTweets((long) -1, null, null, null, null, null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().Class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 0", tweets.size() == 0); } /* * Database contains two "count" tweets with language code "en" */ @Test public void testGetTweetsForSearchTermLanguage() { Response res = resultService.getTweets(5l, null, null, null, "en", null, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> tweets = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned " + tweets.size() + ", expected: 2", tweets.size() == 2); for (TweetWithUser tweet : tweets) { assertTrue("tweet.getLang().getIsoCode() returned " + tweet.getTweet().getLang().getIsoCode() + ", expected: en", tweet.getTweet().getLang().getIsoCode().equals("en")); } } @Test(expected = WebApplicationException.class) public void testNullForTweets() { resultService.getTweets(null, null, null, null, null, null, null, null); } @Test public void testTagCloud() { Response res = resultService.getTagCloud(5l, null, 100l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: QueryWithText", env.getData(), instanceOf(TweetTexts.class)); TweetTexts query = (TweetTexts) env.getData(); assertTrue("getCount() returned " + query.getCount() + ", expected: 6", query.getCount().longValue() == 6l); assertTrue( "getText() returned " + query.getText() + ", expected: Counts1 Counts Counts Counts Counts Counts ", query.getText().equals("Counts1 Counts Counts Counts Counts Counts ")); } @Test public void testTagCloudLimited() { try { Response res = resultService.getTagCloud(5l, null, 3l, null); Envelope env = (Envelope) res.getEntity(); assertThat( "getData().class returned " + env.getData().getClass().toString() + ", expected: QueryWithText", env.getData(), instanceOf(TweetTexts.class)); TweetTexts query = (TweetTexts) env.getData(); assertTrue("getCount() returned " + query.getCount() + ", expected: 3", query.getCount().longValue() == 3); assertTrue("getText() returned " + query.getText() + ", expected: Counts1 Counts Counts ", query.getText().equals("Counts1 Counts Counts ")); } catch (Exception e) { e.printStackTrace(); } } @Test(expected = WebApplicationException.class) public void testTagCloudNull() { resultService.getTagCloud(null, null, null, null); } @Test public void testTagCloudNonexistentQuery() { Response res = resultService.getTagCloud(100l, null, 100l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: QueryWithText", env.getData(), instanceOf(TweetTexts.class)); TweetTexts query = (TweetTexts) env.getData(); assertTrue("getCount() returned " + query.getCount() + ", expected: 0", query.getCount().longValue() == 0); assertTrue("getText() returned " + query.getText() + ", expected: ", query.getText().equals("")); } /* * count only contains four German tweets */ @Test public void testTagCloudLanguage() { Response res = resultService.getTagCloud(5l, "de", 100l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: QueryWithText", env.getData(), instanceOf(TweetTexts.class)); TweetTexts query = (TweetTexts) env.getData(); assertTrue("getCount() returned " + query.getCount() + ", expected: 4", query.getCount().longValue() == 4); } /* * one "Merkel" tweet (id=1) is a retweet (is_retweet_of_id != null), so we * expect 2 instead of 3 results */ @Test public void testTagCloudIgnoreRetweets() { Response res = resultService.getTagCloud(1l, null, 100l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: QueryWithText", env.getData(), instanceOf(TweetTexts.class)); TweetTexts query = (TweetTexts) env.getData(); assertTrue("getCount() returned " + query.getCount() + ", expected: 5", query.getCount().longValue() == 5); } @Test public void testGetDataGroupsQuery() { resultService.setUseRestTestDBForDataGrouping(true); Response res = resultService.dataGroupingAlternative((long) 1, "en", 100, null); Envelope env = (Envelope) res.getEntity(); DataGroupingResult dgr = (DataGroupingResult) env.getData(); ArrayList<Series> series = dgr.getSeries(); assertTrue(series.get(0).getName().equals("Cluster 1")); } /* * For search term "count" (id=5) there are four German and two English * tweets */ @Test public void testGetLanguages() { Response res = resultService.getLanguages(5l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<LanguageCount> data = (ArrayList<LanguageCount>) env.getData(); assertTrue("List.size() returned: " + data.size() + ", expected: 2", data.size() == 2); assertTrue("First entry language: " + data.get(0).getIsoCode() + ", expected: de", data.get(0).getIsoCode().equals("de")); assertTrue("First entry count: " + data.get(0).getCount() + ", expected: 4", data.get(0).getCount() == 4); assertTrue("Second entry language: " + data.get(1).getIsoCode() + ", expected: en", data.get(1).getIsoCode().equals("en")); assertTrue("Second entry count: " + data.get(1).getCount() + ", expected: 2", data.get(1).getCount() == 2); } /* * The id 100 doesn't exist in our data base */ @Test public void testGetLanguagesInvalidId() { Response res = resultService.getLanguages(100l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<LanguageCount> data = (ArrayList<LanguageCount>) env.getData(); assertTrue("List.size() returned: " + data.size() + ", expected: 0", data.size() == 0); } /* * Search term 4 contains only one tweet without language (= null) */ @Ignore public void testGetLanguagesNull() { Response res = resultService.getLanguages(4l, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<LanguageCount> data = (ArrayList<LanguageCount>) env.getData(); assertTrue("List.size() returned: " + data.size() + ", expected: 1", data.size() == 1); assertNull("First entry language expected to be null", data.get(0).getIsoCode()); } @Test public void testGetHashtagTweets() { Response res = resultService.getTweets((long) 1, null, null, null, null, 3l, 100, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: List", env.getData(), instanceOf(List.class)); @SuppressWarnings("unchecked") ArrayList<TweetWithUser> data = (ArrayList<TweetWithUser>) env.getData(); assertTrue("List.size() returned: " + data.size() + ", expected: 1", data.size() == 1); TweetWithUser twu = data.get(0); assertTrue("twu.getTweet().getId() returned " + twu.getTweet().getId() + ", expected: 1", twu.getTweet().getId().equalsIgnoreCase("1")); assertTrue("twu.getTweet().getText() returned " + twu.getTweet().getText() + ", expected: Merkel", twu.getTweet().getText().equalsIgnoreCase("Merkel")); assertTrue("twu.getTweet().getCoordinateLongitude() returned " + twu.getTweet().getCoordinateLongitude() + ", expected: 69.641", (twu.getTweet().getCoordinateLongitude() == 69.641f)); assertTrue("twu.getTweet().getCoordinateLatitude() returned " + twu.getTweet().getCoordinateLatitude() + ", expected: 18.9413", (twu.getTweet().getCoordinateLatitude() == 18.9413f)); assertTrue( "twu.getTweet().getCreatedAt() returned " + twu.getTweet().getCreatedAt() + ", expected: 2013-12-02 16:04:29.0", twu.getTweet().getCreatedAt().equalsIgnoreCase("2013-12-02 16:04:29.0")); assertTrue( "twu.getTweet().getRetweetCount() returned " + twu.getTweet().getRetweetCount() + ", expected: 2", (twu.getTweet().getRetweetCount() == 2)); assertTrue("twu.getTweet().getLang().getIsoCode() returned " + twu.getTweet().getLang().getIsoCode() + ", expected: de", twu.getTweet().getLang().getIsoCode().equalsIgnoreCase("de")); assertTrue("twu.getTweet().getSentiment().getValue() returned " + twu.getTweet().getSentiment().getValue() + ", expected: 0", (twu.getTweet().getSentiment().getValue() == 0)); assertTrue("twu.getUser().getId() returned " + twu.getUser().getId() + ", expected: 1", twu.getUser().getId().equalsIgnoreCase("1")); assertTrue("twu.getUser().getName() returned " + twu.getUser().getName() + ", expected: name", twu.getUser().getName().equalsIgnoreCase("name")); assertTrue("twu.getUser().getScreenName() returned " + twu.getUser().getScreenName() + ", expected: screen_name", twu.getUser().getScreenName().equalsIgnoreCase("screen_name")); } @Test(expected = WebApplicationException.class) public void testGetHashtagTweetsIdNull() { resultService.getTweets(null, null, null, null, null, null, 100, null); } @Test public void testGetDaemonStatus() { Envelope env = queryService.getDaemonStatus(); DaemonStatus data = (DaemonStatus) env.getData(); assertTrue("data.getTotalCount() returned: " + data.getTotalCount() + ", expected: 6", data.getTotalCount() == 6); assertTrue("data.getActiveCount() returned: " + data.getActiveCount() + ", expected: 4", data.getActiveCount() == 4); assertTrue("data.getSearchTerms().size() returned: " + data.getSearchTerms().size() + ", expected: 6", data.getSearchTerms().size() == 6); SearchTermStatus searchTerm = data.getSearchTerms().get(0); assertTrue("searchTerm.getName() returned: " + searchTerm.getName() + ", expected: Merkel", searchTerm.getName().equals("Merkel")); assertTrue( "searchTerm.getCreatedAtString() returned: " + searchTerm.getCreatedAt() + ", expected: 2013-10-01 13:37:42.0", searchTerm.getCreatedAt().equalsIgnoreCase("2013-10-01 13:37:42.0")); assertTrue( "searchTerm.getTimeLastFetchedString() returned: " + searchTerm.getTimeLastFetched() + ", expected: 2013-12-04 16:15:35.0", searchTerm.getTimeLastFetched().equalsIgnoreCase("2013-12-04 16:15:35.0")); assertTrue("searchTerm.getIntervalLengthString() returned: " + searchTerm.getIntervalLength() + ", expected: 00:30:00", searchTerm.getIntervalLength().equalsIgnoreCase("00:30:00")); assertTrue("searchTerm.getInIteration() returned: " + searchTerm.getInIteration() + ", expected: true", searchTerm.getInIteration() == true); assertTrue("searchTerm.getPriority() returned: " + searchTerm.getPriority() + ", expected: 1", searchTerm.getPriority() == 1); assertTrue("searchTerm.getActive() returned: " + searchTerm.getActive() + ", expected: true", searchTerm.getActive() == true); searchTerm = data.getSearchTerms().get(1); assertTrue("searchTerm.getName() returned: " + searchTerm.getName() + ", expected: Meer", searchTerm.getName().equals("Meer")); assertTrue( "searchTerm.getCreatedAtString() returned: " + searchTerm.getCreatedAt() + ", expected: 2013-10-02 13:37:42.0", searchTerm.getCreatedAt().equalsIgnoreCase("2013-10-02 13:37:42.0")); assertNull("searchTerm.getTimeLastFetched() expected to be null", searchTerm.getTimeLastFetched()); assertTrue("searchTerm.getIntervalLengthString() returned: " + searchTerm.getIntervalLength() + ", expected: 00:15:00", searchTerm.getIntervalLength().equalsIgnoreCase("00:15:00")); assertTrue("searchTerm.getInIteration() returned: " + searchTerm.getInIteration() + ", expected: false", searchTerm.getInIteration() == false); assertTrue("searchTerm.getPriority() returned: " + searchTerm.getPriority() + ", expected: -2", searchTerm.getPriority() == -2); assertTrue("searchTerm.getActive() returned: " + searchTerm.getActive() + ", expected: false", searchTerm.getActive() == false); } @Test public void testPostPriority() { try { Envelope env = queryService.postPriority(1, -2); env = queryService.getDaemonStatus(); DaemonStatus data = (DaemonStatus) env.getData(); SearchTermStatus searchTerm = data.getSearchTerms().get(0); assertTrue("searchTerm.getName() returned: " + searchTerm.getName() + ", expected: Merkel", searchTerm.getName().equals("Merkel")); assertTrue("searchTerm.getPriority() returned: " + searchTerm.getPriority() + ", expected: -2", searchTerm.getPriority() == -2); } finally { resetDatabase(); } } @Test(expected = WebApplicationException.class) public void testPostPriorityIdNull() { queryService.postPriority(null, -2); } @Test(expected = WebApplicationException.class) public void testPostPriorityNull() { queryService.postPriority(1, null); } @Test(expected = WebApplicationException.class) public void testPostPriorityOutOfRange() { queryService.postPriority(1, 3); } @Test public void testPostActiveFlag() { try { Envelope env = queryService.postActiveFlag(1, false); env = queryService.getDaemonStatus(); DaemonStatus data = (DaemonStatus) env.getData(); SearchTermStatus searchTerm = data.getSearchTerms().get(0); assertTrue("searchTerm.getName() returned: " + searchTerm.getName() + ", expected: Merkel", searchTerm.getName().equals("Merkel")); assertTrue("searchTerm.getActive() returned: " + searchTerm.getActive() + ", expected: false", searchTerm.getActive() == false); } finally { resetDatabase(); } } @Test(expected = WebApplicationException.class) public void testPostActiveFlagIdNull() { queryService.postActiveFlag(null, false); } @Test(expected = WebApplicationException.class) public void testPostActiveFlagNull() { queryService.postActiveFlag(1, null); } /* * getRelatedNews regular with results */ @Test public void testGetFeedsFromTweetstextRegularInput() { // change news provider to existing test file try { String url = (new File("src/test/resources/RSSTestFile.xhtml")).toURI().toURL().toString(); String[][] searchpaths = { { "RSSTestFile", url } }; String[] dateformats = { "" }; NewsUtil.SEARCHPATHS = searchpaths; NewsUtil.DATEFORMATS = dateformats; TopNewsFetcherThread.transactor = this.transactor; } catch (MalformedURLException e) { fail("testfile not found"); e.printStackTrace(); } // get and check news Response res = resultService.getRelatedNews(1l, null, 1, 1, 2014, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: News", env.getData(), instanceOf(News.class)); @SuppressWarnings("unchecked") News data = (News) env.getData(); assertTrue("wrong number of news items returned (expected 2)", data.getNews().size() == 2); assertTrue("wrong elemented was listed top", data.getNews().get(0).getTitle().equals("Bundeskanzlerin ruft Brger zum Handeln auf")); for (NewsItem n : data.getNews()) { assertTrue("all newsitems should be rated", n.getRating() > .0); } } /* * getRelatedNews regular without results */ @Test public void testGetFeedsFromTweetstextRegularInputWithoutNewsResults() { // change news provider to existing test file try { String urlB = (new File("src/test/resources/RSSTestFileEmptyBing.xhtml")).toURI().toURL().toString(); String urlG = (new File("src/test/resources/RSSTestFileEmptyGoogle.xhtml")).toURI().toURL().toString(); String[][] searchpaths = { { "EmptyBing", urlB }, { "EmptyGoogle", urlG } }; String[] dateformats = { "" }; NewsUtil.SEARCHPATHS = searchpaths; NewsUtil.DATEFORMATS = dateformats; TopNewsFetcherThread.transactor = this.transactor; } catch (MalformedURLException e) { fail("testfile not found"); e.printStackTrace(); } // get and check news Response res = resultService.getRelatedNews(1l, null, 1, 1, 2014, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: News", env.getData(), instanceOf(News.class)); @SuppressWarnings("unchecked") News data = (News) env.getData(); assertTrue("wrong number of news items returned (expected 0)", data.getNews().size() == 0); } /* * getRelatedNews InvalidId */ @Test public void testGetFeedsFromTweetstextInvalidId() { // change news provider to existing test file try { String urlB = (new File("src/test/resources/RSSTestFileEmptyBing.xhtml")).toURI().toURL().toString(); String urlG = (new File("src/test/resources/RSSTestFileEmptyGoogle.xhtml")).toURI().toURL().toString(); String[][] searchpaths = { { "EmptyBing", urlB }, { "EmptyGoogle", urlG } }; String[] dateformats = { "" }; NewsUtil.SEARCHPATHS = searchpaths; NewsUtil.DATEFORMATS = dateformats; TopNewsFetcherThread.transactor = this.transactor; } catch (MalformedURLException e) { fail("testfile not found"); e.printStackTrace(); } // get and check news Response res = resultService.getRelatedNews(-1l, null, 1, 1, 2014, null); Envelope env = (Envelope) res.getEntity(); assertThat("getData().class returned " + env.getData().getClass().toString() + ", expected: News", env.getData(), instanceOf(News.class)); @SuppressWarnings("unchecked") News data = (News) env.getData(); assertTrue("wrong number of news items returned (expected 0)", data.getNews().size() == 0); } @Test public void testHasDaemonFetchedTrue() { Envelope env = queryService.hasDaemonFetched(1); Boolean hasFetched = (Boolean) env.getData(); assertTrue("data returned: " + hasFetched + ", expected: true", hasFetched == true); } @Test public void testHasDaemonFetchedFalse() { Envelope env = queryService.hasDaemonFetched(2); Boolean hasFetched = (Boolean) env.getData(); assertTrue("data returned: " + hasFetched + ", expected: false", hasFetched == false); } @Test public void testHasDaemonFetchedInvalidId() { Envelope env = queryService.hasDaemonFetched(-1); Boolean hasFetched = (Boolean) env.getData(); assertNull("data did not return null as expected", hasFetched); } @Ignore public void testNotModifiedCache() { // Entered data = time_last_fetched for search term 1 Response response = resultService.getLanguages(1l, "WED, 04 Dec 2013 15:15:35 GMT"); assertTrue("Response didn't have status HTTP_NOT_MODIFIED as expected.", response.getStatus() == HttpURLConnection.HTTP_NOT_MODIFIED); } }