예제 #1
0
 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);
 }
예제 #2
0
 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);
 }
예제 #3
0
 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();
 }