This commit is contained in:
Sébastien Lucas 2013-10-13 22:23:20 +02:00
commit bbdf4a432e
4 changed files with 276 additions and 3 deletions

View file

@ -140,7 +140,7 @@ function str_format($format) {
* This method is based on this page * This method is based on this page
* http://www.mind-it.info/2010/02/22/a-simple-approach-to-localization-in-php/ * http://www.mind-it.info/2010/02/22/a-simple-approach-to-localization-in-php/
*/ */
function localize($phrase, $count=-1) { function localize($phrase, $count=-1, $reset=false) {
if ($count == 0) if ($count == 0)
$phrase .= ".none"; $phrase .= ".none";
if ($count == 1) if ($count == 1)
@ -150,6 +150,9 @@ function localize($phrase, $count=-1) {
/* Static keyword is used to ensure the file is loaded only once */ /* Static keyword is used to ensure the file is loaded only once */
static $translations = NULL; static $translations = NULL;
if ($reset) {
$translations = NULL;
}
/* If no instance of $translations has occured load the language file */ /* If no instance of $translations has occured load the language file */
if (is_null($translations)) { if (is_null($translations)) {
$lang = "en"; $lang = "en";

View file

@ -11,4 +11,27 @@ class BaseTest extends PHPUnit_Framework_TestCase
$this->assertEquals ("?key=value&db=0", addURLParameter ("?key=value", "db", "0")); $this->assertEquals ("?key=value&db=0", addURLParameter ("?key=value", "db", "0"));
$this->assertEquals ("?key=value&otherKey=&db=0", addURLParameter ("?key=value&otherKey", "db", "0")); $this->assertEquals ("?key=value&otherKey=&db=0", addURLParameter ("?key=value&otherKey", "db", "0"));
} }
public function testLocalize ()
{
$this->assertEquals ("Authors", localize ("authors.title"));
}
public function testLocalizeFr ()
{
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3";
$this->assertEquals ("Auteurs", localize ("authors.title", -1, true));
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "en";
localize ("authors.title", -1, true);
}
public function testLocalizeUnknown ()
{
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "aa";
$this->assertEquals ("Authors", localize ("authors.title", -1, true));
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "en";
localize ("authors.title", -1, true);
}
} }

View file

@ -3,7 +3,7 @@
require_once (dirname(__FILE__) . "/config_test.php"); require_once (dirname(__FILE__) . "/config_test.php");
require_once (dirname(__FILE__) . "/../book.php"); require_once (dirname(__FILE__) . "/../book.php");
class StackTest extends PHPUnit_Framework_TestCase class BookTest extends PHPUnit_Framework_TestCase
{ {
public function testGetBookCount () public function testGetBookCount ()
{ {
@ -83,6 +83,36 @@ class StackTest extends PHPUnit_Framework_TestCase
$this->assertEquals (14, count($entryArray)); $this->assertEquals (14, count($entryArray));
$this->assertEquals (-1, $totalNumber); $this->assertEquals (-1, $totalNumber);
} }
public function testGetAllBooks ()
{
// All books by first letter
$entryArray = Book::getAllBooks ();
$this->assertCount (9, $entryArray);
}
public function testGetBooksByStartingLetter ()
{
// All books by first letter
list ($entryArray, $totalNumber) = Book::getBooksByStartingLetter ("T", -1);
$this->assertCount (3, $entryArray);
}
public function testGetAllRecentBooks ()
{
// All recent books
global $config;
$config['cops_recentbooks_limit'] = 2;
$entryArray = Book::getAllRecentBooks ();
$this->assertCount (2, $entryArray);
$config['cops_recentbooks_limit'] = 50;
$entryArray = Book::getAllRecentBooks ();
$this->assertCount (14, $entryArray);
}
public function testGetBookById () public function testGetBookById ()
{ {
@ -94,7 +124,8 @@ class StackTest extends PHPUnit_Framework_TestCase
$this->assertEquals ("Doyle, Arthur Conan", $book->getAuthorsName ()); $this->assertEquals ("Doyle, Arthur Conan", $book->getAuthorsName ());
$this->assertEquals ("Fiction, Mystery & Detective, Short Stories", $book->getTagsName ()); $this->assertEquals ("Fiction, Mystery & Detective, Short Stories", $book->getTagsName ());
$this->assertEquals ('<p class="description">The Return of Sherlock Holmes is a collection of 13 Sherlock Holmes stories, originally published in 1903-1904, by Arthur Conan Doyle.<br />The book was first published on March 7, 1905 by Georges Newnes, Ltd and in a Colonial edition by Longmans. 30,000 copies were made of the initial print run. The US edition by McClure, Phillips &amp; Co. added another 28,000 to the run.<br />This was the first Holmes collection since 1893, when Holmes had "died" in "The Adventure of the Final Problem". Having published The Hound of the Baskervilles in 19011902 (although setting it before Holmes\' death) Doyle came under intense pressure to revive his famous character.</p>', $book->getComment (false)); $this->assertEquals ('<p class="description">The Return of Sherlock Holmes is a collection of 13 Sherlock Holmes stories, originally published in 1903-1904, by Arthur Conan Doyle.<br />The book was first published on March 7, 1905 by Georges Newnes, Ltd and in a Colonial edition by Longmans. 30,000 copies were made of the initial print run. The US edition by McClure, Phillips &amp; Co. added another 28,000 to the run.<br />This was the first Holmes collection since 1893, when Holmes had "died" in "The Adventure of the Final Problem". Having published The Hound of the Baskervilles in 19011902 (although setting it before Holmes\' death) Doyle came under intense pressure to revive his famous character.</p>', $book->getComment (false));
$this->assertEquals ("English", $book->getLanguages ());
$this->assertEquals ("", $book->getRating ());
} }
} }

216
test/pageTest.php Normal file
View file

@ -0,0 +1,216 @@
<?php
require_once (dirname(__FILE__) . "/config_test.php");
require_once (dirname(__FILE__) . "/../book.php");
class PageTest extends PHPUnit_Framework_TestCase
{
public function testPageIndex ()
{
global $config;
$page = Base::PAGE_INDEX;
$query = NULL;
$search = NULL;
$qid = NULL;
$n = "1";
$database = NULL;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ($config['cops_title_default'], $currentPage->title);
$this->assertCount (6, $currentPage->entryArray);
$this->assertEquals ("Authors", $currentPage->entryArray [0]->title);
$this->assertEquals ("Alphabetical index of the 5 authors", $currentPage->entryArray [0]->content);
$this->assertEquals ("Series", $currentPage->entryArray [1]->title);
$this->assertEquals ("Alphabetical index of the 3 series", $currentPage->entryArray [1]->content);
$this->assertEquals ("Tags", $currentPage->entryArray [2]->title);
$this->assertEquals ("Alphabetical index of the 10 tags", $currentPage->entryArray [2]->content);
$this->assertEquals ("Languages", $currentPage->entryArray [3]->title);
$this->assertEquals ("Alphabetical index of the single language", $currentPage->entryArray [3]->content);
$this->assertEquals ("All books", $currentPage->entryArray [4]->title);
$this->assertEquals ("Alphabetical index of the 14 books", $currentPage->entryArray [4]->content);
$this->assertEquals ("Recent additions", $currentPage->entryArray [5]->title);
$this->assertEquals ("50 most recent books", $currentPage->entryArray [5]->content);
$this->assertFalse ($currentPage->ContainsBook ());
}
public function testPageAllAuthors ()
{
global $config;
$page = Base::PAGE_ALL_AUTHORS;
$query = NULL;
$search = NULL;
$qid = NULL;
$n = "1";
$database = NULL;
$config['cops_author_split_first_letter'] = "0";
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Authors", $currentPage->title);
$this->assertCount (5, $currentPage->entryArray);
$this->assertEquals ("Carroll, Lewis", $currentPage->entryArray [0]->title);
$this->assertFalse ($currentPage->ContainsBook ());
$config['cops_author_split_first_letter'] = 1;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Authors", $currentPage->title);
$this->assertCount (4, $currentPage->entryArray);
$this->assertEquals ("C", $currentPage->entryArray [0]->title);
$this->assertFalse ($currentPage->ContainsBook ());
}
public function testPageAuthorsFirstLetter ()
{
global $config;
$page = Base::PAGE_AUTHORS_FIRST_LETTER;
$query = NULL;
$search = NULL;
$qid = "C";
$n = "1";
$database = NULL;
// Author Lewis Carroll
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("1 author starting with C", $currentPage->title);
$this->assertCount (1, $currentPage->entryArray);
$this->assertFalse ($currentPage->ContainsBook ());
}
public function testPageAuthorsDetail ()
{
global $config;
$page = Base::PAGE_AUTHOR_DETAIL;
$query = NULL;
$search = NULL;
$qid = "1";
$n = "1";
$database = NULL;
$_SERVER['QUERY_STRING'] = "page=" . Base::PAGE_AUTHOR_DETAIL . "&id=1&n=1";
$config['cops_max_item_per_page'] = 2;
// First page
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Doyle, Arthur Conan", $currentPage->title);
$this->assertEquals (4, $currentPage->getMaxPage ());
$this->assertCount (2, $currentPage->entryArray);
$this->assertTrue ($currentPage->ContainsBook ());
$this->assertTrue ($currentPage->IsPaginated ());
$this->assertNull ($currentPage->getPrevLink ());
// Last page
$config['cops_max_item_per_page'] = 5;
$n = "2";
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Doyle, Arthur Conan", $currentPage->title);
$this->assertEquals (2, $currentPage->getMaxPage ());
$this->assertCount (3, $currentPage->entryArray);
$this->assertTrue ($currentPage->ContainsBook ());
$this->assertTrue ($currentPage->IsPaginated ());
$this->assertNull ($currentPage->getNextLink ());
// No pagination
$config['cops_max_item_per_page'] = -1;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Doyle, Arthur Conan", $currentPage->title);
$this->assertCount (8, $currentPage->entryArray);
$this->assertTrue ($currentPage->ContainsBook ());
$this->assertFalse ($currentPage->IsPaginated ());
}
public function testPageAllBooks ()
{
global $config;
$page = Base::PAGE_ALL_BOOKS;
$query = NULL;
$search = NULL;
$qid = NULL;
$n = "1";
$database = NULL;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("All books", $currentPage->title);
$this->assertCount (9, $currentPage->entryArray);
$this->assertEquals ("A", $currentPage->entryArray [0]->title);
$this->assertEquals ("C", $currentPage->entryArray [1]->title);
$this->assertFalse ($currentPage->ContainsBook ());
}
public function testPageAllBooksByLetter ()
{
global $config;
$page = Base::PAGE_ALL_BOOKS_LETTER;
$query = NULL;
$search = NULL;
$qid = "C";
$n = "1";
$database = NULL;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("2 books starting with C", $currentPage->title);
$this->assertCount (2, $currentPage->entryArray);
$this->assertEquals ("The Call of the Wild", $currentPage->entryArray [0]->title);
$this->assertTrue ($currentPage->ContainsBook ());
}
public function testPageAllSeries ()
{
global $config;
$page = Base::PAGE_ALL_SERIES;
$query = NULL;
$search = NULL;
$qid = NULL;
$n = "1";
$database = NULL;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Series", $currentPage->title);
$this->assertCount (3, $currentPage->entryArray);
$this->assertEquals ("D'Artagnan Romances", $currentPage->entryArray [0]->title);
$this->assertFalse ($currentPage->ContainsBook ());
}
public function testPageSeriesDetail ()
{
global $config;
$page = Base::PAGE_SERIE_DETAIL;
$query = NULL;
$search = NULL;
$qid = "1";
$n = "1";
$database = NULL;
$currentPage = Page::getPage ($page, $qid, $query, $n);
$currentPage->InitializeContent ();
$this->assertEquals ("Sherlock Holmes", $currentPage->title);
$this->assertCount (7, $currentPage->entryArray);
$this->assertEquals ("A Study in Scarlet", $currentPage->entryArray [0]->title);
$this->assertTrue ($currentPage->ContainsBook ());
}
}