]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tests/utils/ReferenceLinkDB.php
Unit Test for the new ID system
[github/shaarli/Shaarli.git] / tests / utils / ReferenceLinkDB.php
index 59ba671fc703274db61bbebae926ec350d2ac0f4..6b16c9e8759600ef0e9430408ad8bf5b69dd1ca3 100644 (file)
  */
 class ReferenceLinkDB
 {
-    private $links = array();
-    private $publicCount = 0;
-    private $privateCount = 0;
+    public static $NB_LINKS_TOTAL = 8;
+
+    private $_links = array();
+    private $_publicCount = 0;
+    private $_privateCount = 0;
 
     /**
      * Populates the test DB with reference data
      */
-    function __construct()
+    public function __construct()
     {
         $this->addLink(
-            'Free as in Freedom 2.0',
+            41,
+            'Link title: @website',
+            '?WDWyig',
+            'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this. #hashtag',
+            0,
+            DateTime::createFromFormat('Ymd_His', '20150310_114651'),
+            'sTuff',
+            null,
+            'WDWyig'
+        );
+
+        $this->addLink(
+            42,
+            'Note: I have a big ID but an old date',
+            '?WDWyig',
+            'Used to test links reordering.',
+            0,
+            DateTime::createFromFormat('Ymd_His', '20100310_101010'),
+            'ut'
+        );
+
+        $this->addLink(
+            8,
+            'Free as in Freedom 2.0 @website',
             'https://static.fsf.org/nosvn/faif-2.0.pdf',
-            'Richard Stallman and the Free Software Revolution',
+            'Richard Stallman and the Free Software Revolution. Read this. #hashtag',
             0,
-            '20150310_114633',
-            'free gnu software stallman'
+            DateTime::createFromFormat('Ymd_His', '20150310_114633'),
+            'free gnu software stallman -exclude stuff hashtag',
+            DateTime::createFromFormat('Ymd_His', '20160803_093033')
         );
 
         $this->addLink(
+            7,
             'MediaGoblin',
             'http://mediagoblin.org/',
-            'A free software media publishing platform',
+            'A free software media publishing platform #hashtagOther',
             0,
-            '20130614_184135',
-            'gnu media web'
+            DateTime::createFromFormat('Ymd_His', '20130614_184135'),
+            'gnu media web .hidden hashtag',
+            null,
+            'IuWvgA'
         );
 
         $this->addLink(
+            6,
             'w3c-markup-validator',
             'https://dvcs.w3.org/hg/markup-validator/summary',
-            'Mercurial repository for the W3C Validator',
+            'Mercurial repository for the W3C Validator #private',
             1,
-            '20141125_084734',
+            DateTime::createFromFormat('Ymd_His', '20141125_084734'),
             'css html w3c web Mercurial'
         );
 
         $this->addLink(
+            4,
             'UserFriendly - Web Designer',
             'http://ars.userfriendly.org/cartoons/?id=20121206',
-            'Naming conventions...',
+            'Naming conventions... #private',
             0,
-            '20121206_142300',
+            DateTime::createFromFormat('Ymd_His', '20121206_142300'),
             'dev cartoon web'
         );
 
         $this->addLink(
+            1,
             'UserFriendly - Samba',
             'http://ars.userfriendly.org/cartoons/?id=20010306',
             'Tropical printing',
             0,
-            '20121206_172539',
+            DateTime::createFromFormat('Ymd_His', '20121206_172539'),
             'samba cartoon web'
         );
 
         $this->addLink(
+            0,
             'Geek and Poke',
             'http://geek-and-poke.com/',
             '',
             1,
-            '20121206_182539',
-            'dev cartoon'
+            DateTime::createFromFormat('Ymd_His', '20121206_182539'),
+            'dev cartoon tag1  tag2   tag3  tag4   '
         );
     }
 
     /**
      * Adds a new link
      */
-    protected function addLink($title, $url, $description, $private, $date, $tags)
+    protected function addLink($id, $title, $url, $description, $private, $date, $tags, $updated = '', $shorturl = '')
     {
         $link = array(
+            'id' => $id,
             'title' => $title,
             'url' => $url,
             'description' => $description,
             'private' => $private,
-            'linkdate' => $date,
             'tags' => $tags,
+            'created' => $date,
+            'updated' => $updated,
+            'shorturl' => $shorturl ? $shorturl : smallHash($date->format('Ymd_His') . $id),
         );
-        $this->links[$date] = $link;
+        $this->_links[$id] = $link;
 
         if ($private) {
-            $this->privateCount++;
+            $this->_privateCount++;
             return;
         }
-        $this->publicCount++;
+        $this->_publicCount++;
     }
 
     /**
@@ -97,7 +133,7 @@ class ReferenceLinkDB
     {
         file_put_contents(
             $filename,
-            '<?php /* '.base64_encode(gzdeflate(serialize($this->links))).' */ ?>'
+            '<?php /* '.base64_encode(gzdeflate(serialize($this->_links))).' */ ?>'
         );
     }
 
@@ -106,7 +142,7 @@ class ReferenceLinkDB
      */
     public function countLinks()
     {
-        return $this->publicCount + $this->privateCount;
+        return $this->_publicCount + $this->_privateCount;
     }
 
     /**
@@ -114,7 +150,7 @@ class ReferenceLinkDB
      */
     public function countPublicLinks()
     {
-        return $this->publicCount;
+        return $this->_publicCount;
     }
 
     /**
@@ -122,7 +158,21 @@ class ReferenceLinkDB
      */
     public function countPrivateLinks()
     {
-        return $this->privateCount;
+        return $this->_privateCount;
+    }
+
+    public function getLinks()
+    {
+        return $this->_links;
+    }
+
+    /**
+     * Setter to override link creation.
+     *
+     * @param array $links List of links.
+     */
+    public function setLinks($links)
+    {
+        $this->_links = $links;
     }
 }
-?>