public function test_it_doesnt_reload_duplicate_items()
 {
     $testFeed = $this->testFeedUrl;
     FeedReader::shouldReceive('read')->twice()->with([$testFeed])->andReturn(self::$sampleFeed);
     Artisan::call('feeds:load', ['feed_url' => $testFeed]);
     Artisan::call('feeds:load', ['feed_url' => $testFeed]);
     $sampleItem = self::$sampleFeed->get_item();
     $expected_count = 1;
     $actual_count = \App\RssItem::where('guid', $sampleItem->get_id())->count();
     $this->assertEquals($expected_count, $actual_count);
 }
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $urls = explode(',', $this->argument('feed_url'));
     $urls = array_map('trim', $urls);
     $feed = FeedReader::read($urls);
     if ($feed->error()) {
         $this->error($feed->error());
         return 2;
     }
     $items = $feed->get_items();
     $this->comment('Found ' . count($items) . ' items...');
     $result = RssItem::fromSimplePie($items);
     $this->comment('Skipped ' . $result['skipped'] . ' previously loaded items...');
     $this->info('Loaded ' . $result['loaded'] . ' new items.');
     return 1;
 }
 public function testPageTwoLoadsCorrectItems()
 {
     factory(App\RssItem::class, 25)->create();
     $items = \App\RssItem::pagedJson(25);
     $this->visit('items.json/?page=2')->dontseeJson(['title' => $items['items'][0]])->dontseeJson(['title' => $items['items'][9]])->seeJson($items['items'][10])->seeJson($items['items'][19])->dontseeJson(['title' => $items['items'][20]]);
 }
 /**
  * Mark an item as viewed.
  * @param  Request $request
  * @return void
  */
 public function viewedItem(Request $request)
 {
     $id = $request->get('id');
     RssItem::where('id', $id)->update(['viewed' => true]);
 }