})->setName('admin_channel_delete'); $app->group('/admin/channels/{slug}', function () { $this->get('', function ($request, $response, $args) { $parsedBody = $request->getParsedBody(); $channel = $this->get('tvlistings.channel.repository')->findOneBySlug($args['slug']); $listings = $this->get('tvlistings.listing.repository')->findBy($channel); $this->view->render($response, 'admin/show.html.twig', array('channel' => $channel, 'listings' => $listings)); return $response; })->setName('admin_channel_show'); $this->map(['GET', 'POST'], '/listings/new', function ($request, $response, $args) { $channel = $this->get('tvlistings.channel.repository')->findOneBySlug($args['slug']); if ($request->isPost()) { $parsedBody = $request->getParsedBody(); $listingRepository = $this->get('tvlistings.listing.repository'); $listing = new Listing($channel, $parsedBody['title'], new \DateTime($parsedBody['programDate'])); $listing->programAt($parsedBody['programAt']); $listing->setDescription($parsedBody['description']); $listingRepository->persist($listing); if ($parsedBody['video_source']) { $videoProxyService = $this->get('tvlistings.video_proxy.service'); $videoProxyUuid = $videoProxyService->createFromSource($parsedBody['video_source']); $listing->changeResourceLink($videoProxyUuid); $listingRepository->persist($listing); } $uri = $this->router->pathFor('admin_channel_show', array('slug' => $channel->getSlug())); return $response->withRedirect((string) $uri, 301); } $this->view->render($response, 'admin/Listing/new.html.twig', array('channel' => $channel)); return $response; })->setName('admin_listing_new'); $this->map(['GET', 'POST'], '/edit', function ($request, $response, $args) {
/** * @test * @expectedException \InvalidArgumentException */ public function it_should_guard_againts_programmed_time_null_value() { $listing = new Listing($this->channel, "News", new \DateTime("2015-11-28 18:00")); $listing->programAt(null); }
/** * @test */ public function it_should_order_by_programmed_time() { $em = new DoctrineEntityManager($this->em); $channel = new Channel("MNB", "mnb.png"); $em->persist($channel); $todayListing = new Listing($channel, "Morning News", new \DateTime()); $todayListing->programAt('7:00'); $em->persist($todayListing); $todayListing = new Listing($channel, "Afternoon News", new \DateTime()); $todayListing->programAt('12:00'); $em->persist($todayListing); $todayListing = new Listing($channel, "Evening News", new \DateTime()); $todayListing->programAt('21:00'); $em->persist($todayListing); $criteria = array('orderBy' => array('builder' => function ($alias) { return sprintf("%s.programDate", $alias); }, 'value' => 'ASC')); $listings = $em->findBy(Listing::class, $criteria); $this->assertEquals('7:00', $listings[0]->getProgrammedTime()); $this->assertEquals("Morning News", $listings[0]->getTitle()); $this->assertEquals('12:00', $listings[1]->getProgrammedTime()); $this->assertEquals("Afternoon News", $listings[1]->getTitle()); }