PageRenderTime 43ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/TestOfDashboardController.php

https://github.com/dagda/ThinkUp
PHP | 238 lines | 219 code | 12 blank | 7 comment | 0 complexity | e8e083f768b5a082c7692172374ae9e4 MD5 | raw file
  1. <?php
  2. require_once dirname(__FILE__).'/init.tests.php';
  3. require_once THINKUP_ROOT_PATH.'webapp/_lib/extlib/simpletest/autorun.php';
  4. require_once THINKUP_ROOT_PATH.'webapp/config.inc.php';
  5. require_once THINKUP_ROOT_PATH.'webapp/plugins/twitter/model/class.TwitterOAuthThinkUp.php';
  6. require_once THINKUP_ROOT_PATH.'webapp/plugins/twitter/model/class.TwitterPlugin.php';
  7. /**
  8. * Test of DashboardController
  9. *
  10. * @author Gina Trapani <ginatrapani[at]gmail[dot]com>
  11. *
  12. */
  13. class TestOfDashboardController extends ThinkUpUnitTestCase {
  14. public function __construct() {
  15. $this->UnitTestCase('DashboardController class test');
  16. }
  17. public function setUp(){
  18. parent::setUp();
  19. $webapp = Webapp::getInstance();
  20. $webapp->registerPlugin('twitter', 'TwitterPlugin');
  21. }
  22. public function testConstructor() {
  23. $controller = new DashboardController(true);
  24. $this->assertTrue(isset($controller), 'constructor test');
  25. $this->assertIsA($controller, 'DashboardController');
  26. }
  27. public function testNoInstanceNotLoggedIn() {
  28. $controller = new DashboardController(true);
  29. $results = $controller->go();
  30. $v_mgr = $controller->getViewManager();
  31. $this->assertEqual($v_mgr->getTemplateDataItem('infomsg'),
  32. "There are no public accounts set up in this ThinkUp installation.");
  33. }
  34. public function testNoInstancesLoggedIn() {
  35. //Add owner
  36. $owner_builder = FixtureBuilder::build('owners', array('id'=>1, 'full_name'=>'ThinkUp J. User',
  37. 'email'=>'me@example.com', 'is_activated'=>1) );
  38. $this->simulateLogin('me@example.com');
  39. $controller = new DashboardController(true);
  40. $results = $controller->go();
  41. $v_mgr = $controller->getViewManager();
  42. $this->assertPattern("/You have no accounts configured./", $v_mgr->getTemplateDataItem('infomsg'));
  43. $this->assertPattern("/Set up an account now/", $v_mgr->getTemplateDataItem('infomsg'));
  44. }
  45. public function testNotLoggedInNoUserOrViewSpecified() {
  46. $builders = $this->buildData();
  47. $controller = new DashboardController(true);
  48. $results = $controller->go();
  49. $v_mgr = $controller->getViewManager();
  50. $config = Config::getInstance();
  51. $v_mgr = $controller->getViewManager();
  52. $this->assertEqual($v_mgr->getTemplateDataItem('controller_title'), "ev's Dashboard");
  53. $instance = $v_mgr->getTemplateDataItem('instance');
  54. $this->assertEqual($instance->network_username, 'ev');
  55. $config = Config::getInstance();
  56. $this->assertEqual($controller->getCacheKeyString(), 'dashboard.tpl-', $controller->getCacheKeyString());
  57. $this->assertFalse($v_mgr->getTemplateDataItem('is_searchable'));
  58. }
  59. public function testLoggedInUserSpecifiedNoViewSpecified() {
  60. $builders = $this->buildData();
  61. //must be logged in
  62. $this->simulateLogin('me@example.com');
  63. //required params
  64. $_GET['u'] = 'ev';
  65. $_GET['n'] = 'twitter';
  66. //default view
  67. $controller = new DashboardController(true);
  68. $results = $controller->go();
  69. //test if view variables were set correctly
  70. $v_mgr = $controller->getViewManager();
  71. $instance = $v_mgr->getTemplateDataItem('instance');
  72. $this->assertEqual($instance->network_username, 'ev');
  73. $config = Config::getInstance();
  74. $this->assertEqual($controller->getCacheKeyString(), 'dashboard.tpl-me@example.com-ev-twitter',
  75. 'Cache key');
  76. }
  77. public function testNotLoggedInPosts() {
  78. $builders = $this->buildData();
  79. $_GET['u'] = 'ev';
  80. $_GET['n'] = 'twitter';
  81. $_GET['v'] = 'tweets-all';
  82. $controller = new DashboardController(true);
  83. $results = $controller->go();
  84. //test if view variables were set correctly
  85. $v_mgr = $controller->getViewManager();
  86. $this->assertEqual($v_mgr->getTemplateDataItem('header'), 'All Tweets', 'Header');
  87. $this->assertEqual($v_mgr->getTemplateDataItem('description'), 'All tweets', 'Description');
  88. $this->assertIsA($v_mgr->getTemplateDataItem('all_tweets'), 'array', 'Array of tweets');
  89. $this->assertEqual(sizeof($v_mgr->getTemplateDataItem('all_tweets')), 15, '15 posts in listing');
  90. $this->assertFalse($v_mgr->getTemplateDataItem('is_searchable'));
  91. }
  92. public function testLoggedInPosts() {
  93. $builders = $this->buildData();
  94. $this->simulateLogin('me@example.com');
  95. //required params
  96. $_GET['u'] = 'ev';
  97. $_GET['n'] = 'twitter';
  98. $_GET['v'] = 'tweets-all';
  99. $controller = new DashboardController(true);
  100. $results = $controller->go();
  101. //test if view variables were set correctly
  102. $v_mgr = $controller->getViewManager();
  103. $this->assertEqual($v_mgr->getTemplateDataItem('header'), 'All Tweets', 'Header');
  104. $this->assertEqual($v_mgr->getTemplateDataItem('description'), 'All tweets', 'Description');
  105. $this->assertIsA($v_mgr->getTemplateDataItem('all_tweets'), 'array', 'Array of tweets');
  106. $this->assertEqual(sizeof($v_mgr->getTemplateDataItem('all_tweets')), 15, '15 posts in listing');
  107. $config = Config::getInstance();
  108. $this->assertEqual($controller->getCacheKeyString(), 'dashboard.tpl-me@example.com-ev-twitter-tweets-all',
  109. 'Cache key');
  110. $this->assertTrue($v_mgr->getTemplateDataItem('is_searchable'));
  111. }
  112. public function testLoggedInConversations() {
  113. $builders = $this->buildData();
  114. //must be logged in
  115. $this->simulateLogin('me@example.com');
  116. //required params
  117. $_GET['u'] = 'ev';
  118. $_GET['n'] = 'twitter';
  119. $_GET['v'] = 'tweets-convo';
  120. $controller = new DashboardController(true);
  121. $results = $controller->go();
  122. //test if view variables were set correctly
  123. $v_mgr = $controller->getViewManager();
  124. $this->assertEqual($v_mgr->getTemplateDataItem('header'), 'Conversations', 'Header');
  125. $this->assertIsA($v_mgr->getTemplateDataItem('author_replies'), 'array', 'Array of tweets');
  126. $this->assertEqual(sizeof($v_mgr->getTemplateDataItem('author_replies')), 1, '1 posts in listing');
  127. $config = Config::getInstance();
  128. $this->assertEqual($controller->getCacheKeyString(), 'dashboard.tpl-me@example.com-ev-twitter-tweets-convo',
  129. 'Cache key');
  130. }
  131. public function testLoggedInPeople() {
  132. $builders = $this->buildData();
  133. //first, add some people
  134. $user1_builder = FixtureBuilder::build('users', array(
  135. 'user_name'=>'ginatrapani',
  136. 'user_id'=>'930061',
  137. 'network'=>'twitter')
  138. );
  139. $user2_builder = FixtureBuilder::build('users', array(
  140. 'user_name'=>'anildash',
  141. 'user_id'=>'123456',
  142. 'network'=>'twitter')
  143. );
  144. $follower_builders = array();
  145. $follower_builders[] = FixtureBuilder::build('follows', array('user_id'=>'930061', 'follower_id'=>'13'));
  146. $follower_builders[] = FixtureBuilder::build('follows', array('user_id'=>'123456', 'follower_id'=>'13'));
  147. //must be logged in
  148. $this->simulateLogin('me@example.com');
  149. //required params
  150. $_GET['u'] = 'ev';
  151. $_GET['n'] = 'twitter';
  152. $_GET['v'] = 'friends-mostactive';
  153. $controller = new DashboardController(true);
  154. $results = $controller->go();
  155. //test if view variables were set correctly
  156. $v_mgr = $controller->getViewManager();
  157. $this->assertEqual($v_mgr->getTemplateDataItem('header'), 'Chatterboxes', 'Header');
  158. $this->assertEqual($v_mgr->getTemplateDataItem('description'), '', 'Description');
  159. $this->assertIsA($v_mgr->getTemplateDataItem('people'), 'array', 'Array of users');
  160. $this->assertEqual(sizeof($v_mgr->getTemplateDataItem('people')), 2, '2 users in listing');
  161. $config = Config::getInstance();
  162. $this->assertEqual($controller->getCacheKeyString(),
  163. 'dashboard.tpl-me@example.com-ev-twitter-friends-mostactive', 'Cache key');
  164. }
  165. private function buildData() {
  166. //Add owner
  167. $owner_builder = FixtureBuilder::build('owners', array('id'=>1, 'full_name'=>'ThinkUp J. User',
  168. 'email'=>'me@example.com', 'is_activated'=>1) );
  169. //Add instance_owner
  170. $instance_owner_builder = FixtureBuilder::build('owner_instances', array('owner_id'=>1, 'instance_id'=>1));
  171. //Insert test data into test table
  172. $user_builder_1 = FixtureBuilder::build('users', array('user_id'=>13, 'user_name'=>'ev',
  173. 'full_name'=>'Ev Williams', 'last_updated'=>'-1d'));
  174. $user_builder_2 = FixtureBuilder::build('users', array('user_id'=>12, 'user_name'=>'jack',
  175. 'last_updated'=>'-5d'));
  176. //Make public
  177. $instance_builder = FixtureBuilder::build('instances', array('id'=>1, 'network_user_id'=>13,
  178. 'network_username'=>'ev', 'is_public'=>1));
  179. $post_builders = array();
  180. //Add a bunch of posts
  181. $counter = 0;
  182. while ($counter < 40) {
  183. $pseudo_minute = str_pad($counter, 2, "0", STR_PAD_LEFT);
  184. $post_builders[] = FixtureBuilder::build('posts', array('post_id'=>$counter, 'author_user_id'=>13,
  185. 'author_username'=>'ev', 'author_fullname'=>'Ev Williams', 'post_text'=>'This is post '.$counter,
  186. 'pub_date'=>'2006-01-01 00:'.$pseudo_minute.':00'));
  187. $counter++;
  188. }
  189. $post_builders[] = FixtureBuilder::build('posts', array('post_id'=>41, 'author_user_id'=>13,
  190. 'author_username'=>'ev', 'author_fullname'=>'Ev Williams',
  191. 'post_text'=>'This post is in reply to jacks post 50', 'in_reply_to_post_id'=>50, 'network'=>'twitter',
  192. 'in_reply_to_user_id'=>12));
  193. $post_builders[] = FixtureBuilder::build('posts', array('post_id'=>50, 'author_user_id'=>12,
  194. 'author_username'=>'jack', 'author_fullname'=>'Jack Dorsey', 'post_text'=>'Ev replies to this post',
  195. 'network'=>'twitter'));
  196. return array($owner_builder, $instance_owner_builder, $user_builder_1, $user_builder_2, $instance_builder,
  197. $post_builders);
  198. }
  199. }