public function testMostPopularQuery() { $manager = new \FelixOnline\Core\ArticleManager(); $faker = Faker\Factory::create(); $title1 = $faker->sentence(); $title2 = $faker->sentence(); $content1 = $faker->text(); $content2 = $faker->text(); // create a new article $article = new \FelixOnline\Core\Article(); $article->setTitle($title1)->setContent($content1)->setTeaser($title1)->setCategory(1)->save(); $articlevisit = new \FelixOnline\Core\ArticlePublication(); $articlevisit->setArticle($article)->setPublicationDate(time())->setPublishedBy(new \FelixOnline\Core\User('felix'))->setRepublished(0)->save(); $article->logVisit(); $article2 = new \FelixOnline\Core\Article(); $article2->setTitle($title2)->setContent($content2)->setTeaser($title2)->setCategory(1)->save(); $articlevisit = new \FelixOnline\Core\ArticlePublication(); $articlevisit->setArticle($article2)->setPublicationDate(time())->setPublishedBy(new \FelixOnline\Core\User('felix'))->setRepublished(0)->save(); $article2->logVisit(); $article2->logVisit(); $articles = $manager->getMostPopular(5); $this->assertCount(2, $articles); $this->assertInstanceOf('FelixOnline\\Core\\Article', $articles[0]); $this->assertEquals($articles[0]->getTitle(), $title2); }
public function testLogVisitRepeat() { $app = \FelixOnline\Core\App::getInstance(); $pdo = $this->getConnection()->getConnection(); $article = new \FelixOnline\Core\Article(1); $article->logVisit(); $stm = $pdo->prepare("SELECT COUNT(article) AS hits FROM article_visit WHERE repeat_visit = 0 AND article = :id"); $stm->execute(array(':id' => 1)); $row = $stm->fetch(); $this->assertEquals((int) $row['hits'], 2); $this->assertEquals(3, $this->getConnection()->getRowCount('article_visit')); $stm2 = $pdo->prepare("SELECT COUNT(*) as count FROM article_visit WHERE repeat_visit = 1"); $stm2->execute(array()); $row = $stm2->fetch(); $this->assertEquals((int) $row['count'], 1); $article->logVisit(); $this->assertEquals(4, $this->getConnection()->getRowCount('article_visit')); $stm->execute(array(':id' => 1)); $row = $stm->fetch(); $this->assertEquals((int) $row['hits'], 2); $stm2 = $pdo->prepare("SELECT COUNT(*) as count FROM article_visit WHERE repeat_visit = 1"); $stm2->execute(array()); $row = $stm2->fetch(); $this->assertEquals((int) $row['count'], 2); }
public function testReplyCommentNotification() { $faker = Faker\Factory::create(); $content = $faker->text; $article = new \FelixOnline\Core\Article(1); $user = new \FelixOnline\Core\User('jk708'); $comment = new \FelixOnline\Core\Comment(); $replyingto = new \FelixOnline\Core\Comment(1); $count = 0; $test = $this; $emailMock = $this->mock('\\Swift_Mailer')->send(function ($message) use($test, $article, $user, $replyingto, &$count) { // reply email is sent first if ($count == 0) { $test->assertGreaterThanOrEqual(0, strpos($message->getSubject(), $article->getTitle())); $test->assertGreaterThanOrEqual(0, strpos($message->getSubject(), $user->getName())); $test->assertNotEmpty($message->getBody()); $test->assertArrayHasKey($replyingto->getUser()->getEmail(), $message->getTo()); } $count++; return true; }, $this->exactly(2))->new(); $this->app['email'] = $emailMock; $comment = $comment->setUser($user)->setComment($content)->setArticle($article)->setReply($replyingto); $comment->save(); $comment->emailAuthors(); $comment->emailReply(); }