private function _prepareEvent($feed, $index)
 {
     $item = new tubepress_api_media_MediaItem('id');
     $mockProvider = $this->mock(tubepress_spi_media_MediaProviderInterface::_);
     $mockProvider->shouldReceive('getName')->andReturn('vimeo');
     $item->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_PROVIDER, $mockProvider);
     $unserialized = json_decode($feed, true);
     $videoArray = array();
     /*
      * Is this just a single video?
      */
     if (!isset($unserialized['data'])) {
         $videoArray = (array) $unserialized->video;
     } else {
         $videoArray = (array) $unserialized['data'];
     }
     $event = new tubepress_event_impl_tickertape_EventBase($item);
     $event->setArgument('decodedJson', $unserialized);
     $event->setArgument('videoArray', $videoArray);
     $event->setArgument('zeroBasedIndex', $index);
     $this->_mockAttributeFormatter->shouldReceive('formatNumberAttribute')->once()->with($item, tubepress_api_media_MediaItem::ATTRIBUTE_LIKES_COUNT, tubepress_api_media_MediaItem::ATTRIBUTE_LIKES_COUNT, 0);
     $this->_mockAttributeFormatter->shouldReceive('formatNumberAttribute')->once()->with($item, tubepress_api_media_MediaItem::ATTRIBUTE_VIEW_COUNT, tubepress_api_media_MediaItem::ATTRIBUTE_VIEW_COUNT, 0);
     $this->_mockAttributeFormatter->shouldReceive('truncateStringAttribute')->once()->with($item, tubepress_api_media_MediaItem::ATTRIBUTE_DESCRIPTION, tubepress_api_media_MediaItem::ATTRIBUTE_DESCRIPTION, tubepress_api_options_Names::META_DESC_LIMIT);
     $this->_mockAttributeFormatter->shouldReceive('formatDurationAttribute')->once()->with($item, tubepress_api_media_MediaItem::ATTRIBUTE_DURATION_SECONDS, tubepress_api_media_MediaItem::ATTRIBUTE_DURATION_FORMATTED);
     $this->_mockAttributeFormatter->shouldReceive('formatDateAttribute')->once()->with($item, tubepress_api_media_MediaItem::ATTRIBUTE_TIME_PUBLISHED_UNIXTIME, tubepress_api_media_MediaItem::ATTRIBUTE_TIME_PUBLISHED_FORMATTED);
     $this->_mockAttributeFormatter->shouldReceive('implodeArrayAttribute')->once()->with($item, tubepress_api_media_MediaItem::ATTRIBUTE_KEYWORD_ARRAY, tubepress_api_media_MediaItem::ATTRIBUTE_KEYWORDS_FORMATTED, ', ');
     return $event;
 }
 public function testVideoFound()
 {
     $this->_mockLogger->shouldReceive('isEnabled')->once()->andReturn(true);
     $this->_mockLogger->shouldReceive('debug')->atLeast(1);
     $queryParams = array('foo' => 'bar', 'a' => 'b');
     $this->_mockHttpRequestParameterService->shouldReceive('getParamValue')->once()->with('tubepress_options')->andReturn($queryParams);
     $this->_mockHttpRequestParameterService->shouldReceive('getParamValue')->once()->with('tubepress_item')->andReturn('-video-');
     $this->_mockExecutionContext->shouldReceive('setEphemeralOptions')->once()->with($queryParams);
     $this->_mockExecutionContext->shouldReceive('get')->once()->with(tubepress_api_options_Names::EMBEDDED_LAZYPLAY)->andReturn(false);
     $mockVideo = new tubepress_api_media_MediaItem('id');
     $mockVideo->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_TITLE, 'video title');
     $this->_mockTemplating->shouldReceive('renderTemplate')->once()->with('gallery/player/ajax', array(tubepress_api_template_VariableNames::MEDIA_ITEM => $mockVideo))->andReturn('player-html');
     $this->_mockVideoCollector->shouldReceive('collectSingle')->once()->andReturn($mockVideo);
     $this->_mockResponseCode->shouldReceive('setResponseCode')->once()->with(200);
     $this->expectOutputString('{"mediaItem":{"id":"id","title":"video title"},"html":"player-html"}');
     $this->_mockAjaxEvent->shouldReceive('setArgument')->once()->with('handled', true);
     $this->_sut->onAjax($this->_mockAjaxEvent);
     $this->assertTrue(true);
 }
 /**
  * {@inheritdoc}
  */
 public function implodeArrayAttribute(tubepress_api_media_MediaItem $item, $sourceAttributeName, $destinationAttributeName, $glue)
 {
     if (!$item->hasAttribute($sourceAttributeName)) {
         return;
     }
     $array = $item->getAttribute($sourceAttributeName);
     $formatted = implode($glue, $array);
     $item->setAttribute($destinationAttributeName, $formatted);
 }
 public function testBlacklist()
 {
     $this->_mockLogger->shouldReceive('debug')->atLeast(1);
     $this->_mockContext->shouldReceive('get')->once()->with(tubepress_api_options_Names::FEED_ITEM_ID_BLACKLIST)->andReturn('xxx');
     $mockVideoProvider = $this->mock(tubepress_spi_media_MediaProviderInterface::_);
     $mockVideo1 = new tubepress_api_media_MediaItem('p');
     $mockVideo1->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_PROVIDER, $mockVideoProvider);
     $mockVideo2 = new tubepress_api_media_MediaItem('y');
     $mockVideo2->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_PROVIDER, $mockVideoProvider);
     $mockVideo3 = new tubepress_api_media_MediaItem('xxx');
     $mockVideo3->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_PROVIDER, $mockVideoProvider);
     $mockVideo4 = new tubepress_api_media_MediaItem('yyy');
     $mockVideo4->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_PROVIDER, $mockVideoProvider);
     $videoArray = array($mockVideo1, $mockVideo2, $mockVideo3, $mockVideo4);
     $providerResult = new tubepress_api_media_MediaPage();
     $providerResult->setItems($videoArray);
     $event = $this->mock('tubepress_api_event_EventInterface');
     $event->shouldReceive('getSubject')->times(2)->andReturn($providerResult);
     $this->_sut->blacklist($event);
     $this->assertEquals(array($mockVideo1, $mockVideo2, $mockVideo4), $providerResult->getItems());
 }
 public function testSetGetAuthor()
 {
     $this->_vid->setAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_AUTHOR_USER_ID, 'hough');
     $this->assertEquals($this->_vid->getAttribute(tubepress_api_media_MediaItem::ATTRIBUTE_AUTHOR_USER_ID), 'hough');
 }