use of com.twitter.hbc.httpclient.BasicClient in project textdb by TextDB.
the class TwitterFeedOperatorTest method testWithMockClient.
/**
* Mock the TwitterConnector class and the BasicClient class inside it to test the TwitterFeedOperator alone.
* Use the pre-defined queue with a Json formatted tweet to generate a tuple.
* Check if the tuple is well-formatted.
*/
@Test
public void testWithMockClient() throws Exception {
TwitterConnector mockTwitterConnector = mock(TwitterConnector.class);
queue.add(inputStream);
TwitterFeedSourcePredicate predicate = new TwitterFeedSourcePredicate(1, keywordList, "", null, null, null, null, null);
TwitterFeedOperator operator = new TwitterFeedOperator(predicate, mockTwitterConnector);
operator.setTimeout(timeOut);
BasicClient mockClient = mock(BasicClient.class);
when(mockTwitterConnector.getClient()).thenReturn(mockClient);
when(mockTwitterConnector.getMsgQueue()).thenReturn(queue);
TupleSink tupleSink = new TupleSink();
tupleSink.setInputOperator(operator);
tupleSink.open();
List<Tuple> exactResults = tupleSink.collectAllTuples();
tupleSink.close();
JsonNode tweet = new ObjectMapper().readValue(inputStream, JsonNode.class);
Tuple expectedTuple = new Tuple(TwitterUtils.TwitterSchema.TWITTER_SCHEMA, new TextField(TwitterUtils.getText(tweet)), new StringField(TwitterUtils.getMediaLink(tweet)), new StringField(TwitterUtils.getTweetLink(tweet)), new StringField(TwitterUtils.getUserLink(tweet)), new TextField(TwitterUtils.getUserScreenName(tweet)), new TextField(TwitterUtils.getUserName(tweet)), new TextField(TwitterUtils.getUserDescription(tweet)), new IntegerField(TwitterUtils.getUserFollowerCnt(tweet)), new IntegerField(TwitterUtils.getUserFriendsCnt(tweet)), new TextField(TwitterUtils.getUserLocation(tweet)), new StringField(TwitterUtils.getCreateTime(tweet)), new TextField(TwitterUtils.getPlaceName(tweet)), new StringField(TwitterUtils.getCoordinates(tweet)), new StringField(TwitterUtils.getLanguage(tweet)));
String exactID = exactResults.get(0).getFields().get(0).getValue().toString();
String expectedID = exactResults.get(0).getField(SchemaConstants._ID).getValue().toString();
Assert.assertEquals(exactResults.size(), 1);
Assert.assertEquals(exactID, expectedID);
Assert.assertTrue(TwitterFeedTestHelper.compareTuple(exactResults, expectedTuple));
}
Aggregations