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]); }