/**
  * @NoAdminRequired
  * @NoCSRFRequired
  *
  * @param int $page
  * @return JSONResponse
  */
 public function get($page = 1)
 {
     $rows = $this->manager->getAnnouncements(self::PAGE_LIMIT, self::PAGE_LIMIT * (max(1, $page) - 1));
     $announcements = [];
     foreach ($rows as $row) {
         $displayName = $row['author'];
         $user = $this->userManager->get($displayName);
         if ($user instanceof IUser) {
             $displayName = $user->getDisplayName();
         }
         $announcements[] = ['id' => $row['id'], 'author' => $displayName, 'author_id' => $row['author'], 'time' => $row['time'], 'subject' => $row['subject'], 'message' => $row['message']];
     }
     return new JSONResponse($announcements);
 }
 public function testAnnouncement()
 {
     $subject = 'subject' . "\n<html>";
     $message = 'message' . "\n<html>";
     $author = 'author';
     $time = time() - 10;
     $announcement = $this->manager->announce($subject, $message, $author, $time);
     $this->assertInternalType('int', $announcement['id']);
     $this->assertGreaterThan(0, $announcement['id']);
     $this->assertSame('subject &lt;html&gt;', $announcement['subject']);
     $this->assertSame('message<br />&lt;html&gt;', $announcement['message']);
     $this->assertSame('author', $announcement['author']);
     $this->assertSame($time, $announcement['time']);
     $this->assertEquals($announcement, $this->manager->getAnnouncement($announcement['id']));
     $this->assertEquals($announcement, $this->manager->getAnnouncement($announcement['id']));
     $this->assertEquals([$announcement], $this->manager->getAnnouncements(1));
     $this->manager->delete($announcement['id']);
     try {
         $this->manager->getAnnouncement($announcement['id']);
         $this->fail('Failed to delete the announcement');
     } catch (\InvalidArgumentException $e) {
         $this->assertInstanceOf('InvalidArgumentException', $e);
     }
 }