コード例 #1
0
ファイル: TalkControllerTest.php プロジェクト: noahd1/opencfp
 /**
  * Test that the index page grabs a collection of talks
  * and successfully displays them
  *
  * @test
  */
 public function indexPageDisplaysTalksCorrectly()
 {
     $app = new Application(BASE_PATH, Environment::testing());
     ob_start();
     $app->run();
     ob_end_clean();
     // Create a pretend user
     $user = m::mock('StdClass');
     $user->shouldReceive('hasPermission')->with('admin')->andReturn(true);
     $user->shouldReceive('getId')->andReturn(1);
     // Create a test double for Sentry
     $sentry = m::mock('StdClass');
     $sentry->shouldReceive('check')->andReturn(true);
     $sentry->shouldReceive('getUser')->andReturn($user);
     $app['sentry'] = $sentry;
     // Create an in-memory database
     $cfg = new \Spot\Config();
     $cfg->addConnection('sqlite', ['dbname' => 'sqlite::memory', 'driver' => 'pdo_sqlite']);
     $app['spot'] = new \Spot\Locator($cfg);
     // Create a fake request
     $req = m::mock('Symfony\\Component\\HttpFoundation\\Request');
     $req->shouldReceive('get')->with('page')->andReturn(1);
     $req->shouldReceive('get')->with('sort')->andReturn('title');
     $req->shouldReceive('getRequestUri')->andReturn('foo');
     $this->createTestData($app['spot']);
     $controller = new \OpenCFP\Http\Controller\Admin\TalksController();
     $controller->setApplication($app);
     $response = $controller->indexAction($req, $app);
     $this->assertContains('Test Title', (string) $response);
     $this->assertContains('Test User', (string) $response);
 }
コード例 #2
0
 /**
  * Test that the index page grabs a collection of talks
  * and successfully displays them
  *
  * @test
  */
 public function indexPageDisplaysTalksCorrectly()
 {
     $userId = $this->app['user']->getId();
     // Create our fake talk
     $talk = m::mock(\OpenCFP\Domain\Entity\Talk::class);
     $talk->shouldReceive('save');
     $talk->shouldReceive('set')->with($this->app['user'])->andSet('speaker', $this->app['user']);
     $userDetails = ['id' => $userId, 'first_name' => 'Test', 'last_name' => 'User'];
     $talkData = [0 => ['id' => 1, 'title' => 'Test Title', 'description' => "The title should contain this & that", 'meta' => ['rating' => 5], 'type' => 'regular', 'level' => 'entry', 'category' => 'other', 'desired' => 0, 'slides' => '', 'other' => '', 'sponsor' => '', 'user_id' => $userId, 'created_at' => date('Y-m-d'), 'user' => $userDetails, 'favorite' => null, 'selected' => null]];
     $userMapper = m::mock(\OpenCFP\Domain\Entity\Mapper\User::class);
     $userMapper->shouldReceive('migrate');
     $userMapper->shouldReceive('build')->andReturn($this->app['user']);
     $userMapper->shouldReceive('save')->andReturn(true);
     $talkMapper = m::mock(\OpenCFP\Domain\Entity\Mapper\Talk::class);
     $talkMapper->shouldReceive('migrate');
     $talkMapper->shouldReceive('build')->andReturn($talk);
     $talkMapper->shouldReceive('save');
     $talkMapper->shouldReceive('getAllPagerFormatted')->andReturn($talkData);
     // Overide our DB mappers to return doubles
     $spot = m::mock('Spot\\Locator');
     $spot->shouldReceive('mapper')->with(\OpenCFP\Domain\Entity\User::class)->andReturn($userMapper);
     $spot->shouldReceive('mapper')->with(\OpenCFP\Domain\Entity\Talk::class)->andReturn($talkMapper);
     $this->app['spot'] = $spot;
     $req = m::mock('Symfony\\Component\\HttpFoundation\\Request');
     $paramBag = m::mock('Symfony\\Component\\HttpFoundation\\ParameterBag');
     $queryParams = ['page' => 1, 'per_page' => 20, 'sort' => 'ASC', 'order_by' => 'title', 'filter' => null];
     $paramBag->shouldReceive('all')->andReturn($queryParams);
     $req->shouldReceive('get')->with('page')->andReturn($queryParams['page']);
     $req->shouldReceive('get')->with('per_page')->andReturn($queryParams['per_page']);
     $req->shouldReceive('get')->with('sort')->andReturn($queryParams['sort']);
     $req->shouldReceive('get')->with('order_by')->andReturn($queryParams['order_by']);
     $req->shouldReceive('get')->with('filter')->andReturn($queryParams['filter']);
     $req->query = $paramBag;
     $req->shouldReceive('getRequestUri')->andReturn('foo');
     /* @var Twig_Environment $twig */
     $twig = $this->app['twig'];
     $twig->addGlobal('user_is_admin', $this->app['sentry']->getUser()->hasAccess('admin'));
     ob_start();
     $this->app->run();
     ob_end_clean();
     $controller = new \OpenCFP\Http\Controller\Admin\TalksController();
     $controller->setApplication($this->app);
     $response = $controller->indexAction($req);
     $this->assertContains('Test Title', (string) $response);
     $this->assertContains('Test User', (string) $response);
 }