diff --git a/src/Lunr/Spark/Twitter/Tests/TweetBaseTest.php b/src/Lunr/Spark/Twitter/Tests/TweetBaseTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..4c97123a9deb0cba167a13be2c9bfb9917999703
--- /dev/null
+++ b/src/Lunr/Spark/Twitter/Tests/TweetBaseTest.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file contains the TweetBaseTest class.
+ *
+ * PHP Version 5.4
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Tests
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @copyright  2013, M2Mobi BV, Amsterdam, The Netherlands
+ * @license    http://lunr.nl/LICENSE MIT License
+ */
+
+namespace Lunr\Spark\Twitter\Tests;
+
+use Lunr\Spark\Twitter\Tweet;
+use Lunr\Halo\LunrBaseTest;
+use ReflectionClass;
+
+/**
+ * This class contains the tests for the Tweet.
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Tests
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @covers     Lunr\Spark\Twitter\Tweet
+ */
+class TweetBaseTest extends TweetTest
+{
+
+    /**
+     * Test that the data is initially empty.
+     */
+    public function testCasIsSetCorrectly()
+    {
+        $this->assertPropertyEmpty('data');
+    }
+
+    /**
+     * Tests that set_data() sets the property data.
+     *
+     * @covers Lunr\Spark\Twitter\Tweet::set_data
+     */
+    public function testSetData()
+    {
+        $this->class->set_data(['test']);
+
+        $this->assertPropertyEquals('data', ['test']);
+    }
+
+}
+
+?>
diff --git a/src/Lunr/Spark/Twitter/Tests/TweetGetTweetDataTest.php b/src/Lunr/Spark/Twitter/Tests/TweetGetTweetDataTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6e27dd7ec9dd7e8a99cd46d20da19cd0b18a2d81
--- /dev/null
+++ b/src/Lunr/Spark/Twitter/Tests/TweetGetTweetDataTest.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * This file contains the TweetGetTweetDataTest class.
+ *
+ * PHP Version 5.4
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Tests
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @copyright  2013, M2Mobi BV, Amsterdam, The Netherlands
+ * @license    http://lunr.nl/LICENSE MIT License
+ */
+
+namespace Lunr\Spark\Twitter\Tests;
+
+use Lunr\Spark\Twitter\Tweet;
+use Lunr\Spark\DataError;
+use Lunr\Halo\LunrBaseTest;
+use ReflectionClass;
+
+/**
+ * This class contains the tests for the Twitter Tweet class.
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Tests
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @covers     Lunr\Spark\Twitter\Tweet
+ */
+class TweetGetTweetDataTest extends TweetTest
+{
+
+    /**
+     * Test that getting tweet data returns the data if it is present.
+     *
+     * @param String $field Field name
+     *
+     * @dataProvider tweetFieldsProvider
+     * @covers       Lunr\Spark\Twitter\Tweet::__call
+     */
+    public function testGetTweetDataReturnsDataIfPresent($field)
+    {
+        $this->set_reflection_property_value('data', [ $field => 'Value' ]);
+
+        $this->assertEquals('Value', $this->class->{'get_' . $field}());
+    }
+
+    /**
+     * Test that getting tweet data returns NOT_AVAILABLE if it is not present.
+     *
+     * @param String $field Field name
+     *
+     * @dataProvider tweetFieldsProvider
+     * @covers       Lunr\Spark\Twitter\Tweet::__call
+     */
+    public function testGetTweetDataReturnsNotAvailableIfNotPresent($field)
+    {
+        $this->assertSame(DataError::NOT_AVAILABLE, $this->class->{'get_' . $field}());
+    }
+
+}
+
+?>
diff --git a/src/Lunr/Spark/Twitter/Tests/TweetTest.php b/src/Lunr/Spark/Twitter/Tests/TweetTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..548b677fe5b69e25dc12543ca181eda1a66aa11c
--- /dev/null
+++ b/src/Lunr/Spark/Twitter/Tests/TweetTest.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * This file contains the Tweet class.
+ *
+ * PHP Version 5.4
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Tests
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @copyright  2013, M2Mobi BV, Amsterdam, The Netherlands
+ * @license    http://lunr.nl/LICENSE MIT License
+ */
+
+namespace Lunr\Spark\Twitter\Tests;
+
+use Lunr\Spark\Twitter\Tweet;
+use Lunr\Halo\LunrBaseTest;
+use ReflectionClass;
+
+/**
+ * This class contains the tests for the Twitter Tweet class.
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Tests
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @covers     Lunr\Spark\Twitter\Tweet
+ */
+abstract class TweetTest extends LunrBaseTest
+{
+
+    /**
+     * Testcase Constructor.
+     */
+    public function setUp()
+    {
+        $this->class      = new Tweet();
+        $this->reflection = new ReflectionClass('Lunr\Spark\Twitter\Tweet');
+    }
+
+    /**
+     * Testcase Destructor.
+     */
+    public function tearDown()
+    {
+        unset($this->class);
+        unset($this->reflection);
+    }
+
+    /**
+     * Unit test data provider for tweet fields.
+     *
+     * @return array $fields Array of fields.
+     */
+    public function tweetFieldsProvider()
+    {
+        $fields   = [];
+        $fields[] = [ 'annotations' ];
+        $fields[] = [ 'contributors' ];
+        $fields[] = [ 'coordinates' ];
+        $fields[] = [ 'created_at' ];
+        $fields[] = [ 'current_user_retweet' ];
+        $fields[] = [ 'entities' ];
+        $fields[] = [ 'favorite_count' ];
+        $fields[] = [ 'favorited' ];
+        $fields[] = [ 'filter_level' ];
+        $fields[] = [ 'id' ];
+        $fields[] = [ 'id_str' ];
+        $fields[] = [ 'in_replay_to_screen_name' ];
+        $fields[] = [ 'in_replay_to_status_id' ];
+        $fields[] = [ 'in_replay_to_status_id_str' ];
+        $fields[] = [ 'in_replay_to_user_id' ];
+        $fields[] = [ 'in_replay_to_user_id_str' ];
+        $fields[] = [ 'lang' ];
+        $fields[] = [ 'place' ];
+        $fields[] = [ 'possibly_sensitive' ];
+        $fields[] = [ 'scopes' ];
+        $fields[] = [ 'retweeted' ];
+        $fields[] = [ 'retweeted_status' ];
+        $fields[] = [ 'source' ];
+        $fields[] = [ 'text' ];
+        $fields[] = [ 'truncated' ];
+        $fields[] = [ 'user' ];
+        $fields[] = [ 'withheld_copyright' ];
+        $fields[] = [ 'withheld_in_countries' ];
+        $fields[] = [ 'withheld_scope' ];
+
+        return $fields;
+    }
+
+}
+
+?>
diff --git a/src/Lunr/Spark/Twitter/Tweet.php b/src/Lunr/Spark/Twitter/Tweet.php
new file mode 100644
index 0000000000000000000000000000000000000000..30e632293735c29c571f7a75a9aa22973d8ae0b4
--- /dev/null
+++ b/src/Lunr/Spark/Twitter/Tweet.php
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * This file contains Tweet support for Twitter.
+ *
+ * PHP Version 5.4
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Twitter
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @copyright  2013, M2Mobi BV, Amsterdam, The Netherlands
+ * @license    http://lunr.nl/LICENSE MIT License
+ */
+
+namespace Lunr\Spark\Twitter;
+
+use Lunr\Spark\DataError;
+
+/**
+ * Twitter Tweet Support for Spark
+ *
+ * @category   Libraries
+ * @package    Spark
+ * @subpackage Twitter
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ */
+class Tweet
+{
+
+    /**
+     * Tweet data.
+     * @var Array
+     */
+     protected $data;
+
+    /**
+     * Constructor.
+     */
+    public function __construct()
+    {
+        $this->data = [];
+    }
+
+    /**
+     * Destructor.
+     */
+    public function __destruct()
+    {
+        unset($this->data);
+    }
+
+    /**
+     * Retrieve user profile info.
+     *
+     * @param String $name      Name of the field to get
+     * @param Array  $arguments Arguments passed on call (Ignored)
+     *
+     * @return mixed $value Field value
+     */
+    public function __call($name, $arguments)
+    {
+        $item = str_replace('get_', '', $name);
+
+        switch ($item)
+        {
+            case 'annotations':
+            case 'contributors':
+            case 'coordinates':
+            case 'created_at':
+            case 'current_user_retweet':
+            case 'entities':
+            case 'favorite_count':
+            case 'favorited':
+            case 'filter_level':
+            case 'id':
+            case 'id_str':
+            case 'in_replay_to_screen_name':
+            case 'in_replay_to_status_id':
+            case 'in_replay_to_status_id':
+            case 'in_replay_to_status_id_str':
+            case 'in_replay_to_user_id':
+            case 'in_replay_to_user_id_str':
+            case 'lang':
+            case 'place':
+            case 'possibly_sensitive':
+            case 'scopes':
+            case 'retweeted':
+            case 'retweeted_status':
+            case 'source':
+            case 'text':
+            case 'truncated':
+            case 'user':
+            case 'withheld_copyright':
+            case 'withheld_in_countries':
+            case 'withheld_scope':
+                return isset($this->data[$item]) ? $this->data[$item] : DataError::NOT_AVAILABLE;
+            default:
+                return DataError::UNKNOWN_FIELD;
+        }
+
+        return isset($this->data[$item]) ? $this->data[$item] : DataError::NOT_AVAILABLE;
+    }
+
+    /**
+     * Sets the tweet data with the given information.
+     *
+     * @param array $data Array with tweet data.
+     *
+     * @return void
+     */
+    public function set_data($data)
+    {
+        $this->data = $data;
+    }
+
+}
+
+?>
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index 460ba71dc589004dd4f65581661de2cd1213b218..618491d2bf96c086b06393203df47de00daf9a33 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -214,6 +214,8 @@
             <file>src/Lunr/Spark/Twitter/Tests/ApiGetJsonResultsTest.php</file>
             <file>src/Lunr/Spark/Twitter/Tests/AuthenticationApiTest.php</file>
             <file>src/Lunr/Spark/Twitter/Tests/AuthenticationBaseTest.php</file>
+            <file>src/Lunr/Spark/Twitter/Tests/TweetBaseTest.php</file>
+            <file>src/Lunr/Spark/Twitter/Tests/TweetGetTweetDataTest.php</file>
         </testsuite>
         <testsuite name="Spawn">
             <file>src/Lunr/Spawn/Tests/ResqueJobDispatcherBaseTest.php</file>
