diff --git a/base.php b/base.php index ce9e460..9382aa0 100644 --- a/base.php +++ b/base.php @@ -140,7 +140,7 @@ function str_format($format) { * This method is based on this page * 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) $phrase .= ".none"; 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 $translations = NULL; + if ($reset) { + $translations = NULL; + } /* If no instance of $translations has occured load the language file */ if (is_null($translations)) { $lang = "en"; diff --git a/test/baseTest.php b/test/baseTest.php index 2e60c99..7b37b48 100644 --- a/test/baseTest.php +++ b/test/baseTest.php @@ -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&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); + } } \ No newline at end of file diff --git a/test/bookTest.php b/test/bookTest.php index c439563..7dff03d 100644 --- a/test/bookTest.php +++ b/test/bookTest.php @@ -3,7 +3,7 @@ require_once (dirname(__FILE__) . "/config_test.php"); require_once (dirname(__FILE__) . "/../book.php"); -class StackTest extends PHPUnit_Framework_TestCase +class BookTest extends PHPUnit_Framework_TestCase { public function testGetBookCount () { @@ -83,6 +83,36 @@ class StackTest extends PHPUnit_Framework_TestCase $this->assertEquals (14, count($entryArray)); $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 () { @@ -94,7 +124,8 @@ class StackTest extends PHPUnit_Framework_TestCase $this->assertEquals ("Doyle, Arthur Conan", $book->getAuthorsName ()); $this->assertEquals ("Fiction, Mystery & Detective, Short Stories", $book->getTagsName ()); $this->assertEquals ('

The Return of Sherlock Holmes is a collection of 13 Sherlock Holmes stories, originally published in 1903-1904, by Arthur Conan Doyle.
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 & Co. added another 28,000 to the run.
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 1901–1902 (although setting it before Holmes\' death) Doyle came under intense pressure to revive his famous character.

', $book->getComment (false)); - + $this->assertEquals ("English", $book->getLanguages ()); + $this->assertEquals ("", $book->getRating ()); } } \ No newline at end of file diff --git a/test/pageTest.php b/test/pageTest.php new file mode 100644 index 0000000..5fd7ddf --- /dev/null +++ b/test/pageTest.php @@ -0,0 +1,216 @@ +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 ()); + } + +} \ No newline at end of file