PluginArchiveorgTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. /**
  3. * PluginArchiveorgTest.php
  4. */
  5. require_once 'plugins/archiveorg/archiveorg.php';
  6. /**
  7. * Class PluginArchiveorgTest
  8. * Unit test for the archiveorg plugin
  9. */
  10. class PluginArchiveorgTest extends PHPUnit_Framework_TestCase
  11. {
  12. /**
  13. * Reset plugin path
  14. */
  15. public function setUp()
  16. {
  17. PluginManager::$PLUGINS_PATH = 'plugins';
  18. }
  19. /**
  20. * Test render_linklist hook on external links.
  21. */
  22. public function testArchiveorgLinklistOnExternalLinks()
  23. {
  24. $str = 'http://randomstr.com/test';
  25. $data = array(
  26. 'title' => $str,
  27. 'links' => array(
  28. array(
  29. 'url' => $str,
  30. 'private' => 0,
  31. 'real_url' => $str
  32. )
  33. )
  34. );
  35. $data = hook_archiveorg_render_linklist($data);
  36. $link = $data['links'][0];
  37. // data shouldn't be altered
  38. $this->assertEquals($str, $data['title']);
  39. $this->assertEquals($str, $link['url']);
  40. // plugin data
  41. $this->assertEquals(1, count($link['link_plugin']));
  42. $this->assertNotFalse(strpos($link['link_plugin'][0], $str));
  43. }
  44. /**
  45. * Test render_linklist hook on internal links.
  46. */
  47. public function testArchiveorgLinklistOnInternalLinks()
  48. {
  49. $internalLink1 = 'http://shaarli.shaarli/?qvMAqg';
  50. $internalLinkRealURL1 = '?qvMAqg';
  51. $internalLink2 = 'http://shaarli.shaarli/?2_7zww';
  52. $internalLinkRealURL2 = '?2_7zww';
  53. $internalLink3 = 'http://shaarli.shaarli/?z7u-_Q';
  54. $internalLinkRealURL3 = '?z7u-_Q';
  55. $data = array(
  56. 'title' => $internalLink1,
  57. 'links' => array(
  58. array(
  59. 'url' => $internalLink1,
  60. 'private' => 0,
  61. 'real_url' => $internalLinkRealURL1
  62. ),
  63. array(
  64. 'url' => $internalLink1,
  65. 'private' => 1,
  66. 'real_url' => $internalLinkRealURL1
  67. ),
  68. array(
  69. 'url' => $internalLink2,
  70. 'private' => 0,
  71. 'real_url' => $internalLinkRealURL2
  72. ),
  73. array(
  74. 'url' => $internalLink2,
  75. 'private' => 1,
  76. 'real_url' => $internalLinkRealURL2
  77. ),
  78. array(
  79. 'url' => $internalLink3,
  80. 'private' => 0,
  81. 'real_url' => $internalLinkRealURL3
  82. ),
  83. array(
  84. 'url' => $internalLink3,
  85. 'private' => 1,
  86. 'real_url' => $internalLinkRealURL3
  87. )
  88. )
  89. );
  90. $data = hook_archiveorg_render_linklist($data);
  91. // Case n°1: first link type, public
  92. $link = $data['links'][0];
  93. $this->assertEquals(1, count($link['link_plugin']));
  94. $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink1));
  95. // Case n°2: first link type, private
  96. $link = $data['links'][1];
  97. $this->assertArrayNotHasKey('link_plugin', $link);
  98. // Case n°3: second link type, public
  99. $link = $data['links'][2];
  100. $this->assertEquals(1, count($link['link_plugin']));
  101. $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink2));
  102. // Case n°4: second link type, private
  103. $link = $data['links'][3];
  104. $this->assertArrayNotHasKey('link_plugin', $link);
  105. // Case n°5: third link type, public
  106. $link = $data['links'][4];
  107. $this->assertEquals(1, count($link['link_plugin']));
  108. $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink3));
  109. // Case n°6: third link type, private
  110. $link = $data['links'][5];
  111. $this->assertArrayNotHasKey('link_plugin', $link);
  112. }
  113. }