PageRenderTime 53ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 1ms

/dmCorePlugin/test/unit/dmFrontLinkTagTest.php

https://github.com/leszek/diem
PHP | 237 lines | 161 code | 66 blank | 10 comment | 0 complexity | d6694351664f656262d6852d750c4128 MD5 | raw file
Possible License(s): MIT
  1. <?php
  2. require_once(dirname(__FILE__).'/helper/dmUnitTestHelper.php');
  3. $helper = new dmUnitTestHelper();
  4. $helper->boot('front');
  5. $t = new lime_test(45);
  6. dm::loadHelpers(array('Dm'));
  7. sfConfig::set('sf_no_script_name', false);
  8. dmDb::table('DmPage')->checkBasicPages();
  9. $sc = $helper->get('service_container');
  10. $sc->mergeParameter('link_tag_record.options', array(
  11. 'current_span'=> false
  12. ))->mergeParameter('link_tag_page.options', array(
  13. 'current_span'=> false
  14. ));
  15. $t->diag('link current_span is false');
  16. $home = dmDb::table('DmPage')->getTree()->fetchRoot();
  17. $helper->get('context')->setPage($home);
  18. $t->diag($home->name.' is the current page');
  19. $testPage = dmDb::create('DmPage', array(
  20. 'module' => 'main',
  21. 'action' => 'test'.dmString::random(12),
  22. 'name' => 'I am a root child',
  23. 'slug' => dmString::random()
  24. ));
  25. $testPage->Node->insertAsLastChildOf($home);
  26. $scriptName = $helper->get('request')->getScriptName();
  27. $t->diag('Current cli script name = '.$scriptName);
  28. $t->is((string)_link('http://c2.com/cgi/wiki?DontRepeatYourself')->text('DRY'), $expected = '<a class="link" href="http://c2.com/cgi/wiki?DontRepeatYourself">DRY</a>', $expected);
  29. $t->like(£link()->render(), '|<a class="link dm_current|', '£link() has class dm_current');
  30. $t->like(£link()->set('current_class', 'my_current')->render(), '|<a class="link my_current|', '£link() has class my_current');
  31. $t->is((string)£link($home), (string)£link(), '£link($home) is £link()');
  32. $t->is((string)£link('@homepage'), (string)£link($home), '£link("@homepage") is £link()');
  33. $t->is((string)£link('main/root'), (string)£link($home), '£link("main/root") is £link()');
  34. $t->is(£link()->getHref(), $scriptName, 'root href is '.$scriptName);
  35. $t->is(£link()->getText(), $home->name, 'root link text is '.$home->name);
  36. $expected = $helper->get('controller')->genUrl('dmAuth/signin');
  37. $t->is(£link('+/dmAuth/signin')->getHref(), $expected, '+/dmAuth/signin href is '.$expected);
  38. $rootLink = sprintf('<a class="%s" href="%s">%s</a>', 'link dm_current', $scriptName, $home->name);
  39. $t->is((string)£link(), $rootLink, 'root link is '.$rootLink);
  40. $rootLink = sprintf('<a class="%s" href="%s">%s</a>', 'link dm_current', $scriptName, $home->name);
  41. $t->is((string)$helper->get('helper')->link(), $rootLink, 'use the helper service : root link is '.$rootLink);
  42. $hrefWithParam = $scriptName.'?var=val&other=value';
  43. $t->is((string)£link()->param('var', 'val')->param('other', 'value')->getHref(), $hrefWithParam, $hrefWithParam);
  44. $t->is((string)£link()->params(array('var' => 'val', 'other' => 'value'))->getHref(), $hrefWithParam, $hrefWithParam);
  45. $absoluteHrefWithParam = 'http://'.$scriptName.'?var=val';
  46. $t->is((string)£link()->param('var', 'val')->getAbsoluteHref(), $absoluteHrefWithParam, $absoluteHrefWithParam);
  47. $absoluteHrefWithParam2 = 'http://'.$scriptName.'?var=val&var2=val2';
  48. $t->is((string)£link($absoluteHrefWithParam)->param('var2', 'val2')->getHref(), $absoluteHrefWithParam2, $absoluteHrefWithParam2);
  49. $absoluteHrefWithParam3 = 'http://'.$scriptName.'?var=val&var2=changed_value';
  50. $t->is((string)£link($absoluteHrefWithParam)->param('var2', 'changed_value')->getHref(), $absoluteHrefWithParam3, $absoluteHrefWithParam3);
  51. $linkWithParam2 = sprintf('<a class="%s" href="%s">%s</a>', 'link', str_replace('&', '&amp;', $absoluteHrefWithParam2), 'abs link with params');
  52. $t->is((string)£link($absoluteHrefWithParam2)->text('abs link with params'), $linkWithParam2, $linkWithParam2);
  53. $testPageLink = sprintf('<a class="%s" href="%s">%s</a>', 'link', $scriptName.'/'.$testPage->slug, $testPage->name);
  54. $t->is((string)£link($testPage), $testPageLink, 'page link is '.$testPageLink);
  55. $testPageLink = sprintf('<a class="%s" href="%s">%s</a>', 'link', $scriptName.'/'.$testPage->slug, $testPage->name);
  56. $t->is((string)$helper->get('helper')->link($testPage), $testPageLink, 'with helper service, page link is '.$testPageLink);
  57. $helper->get('context')->setPage($testPage);
  58. $t->diag($testPage->name.' is the current page');
  59. $t->like(£link($testPage)->render(), '|<a class="link dm_current|', '£link($testPage) has class dm_current');
  60. $t->like(£link($testPage)->set('current_class', 'my_current')->render(), '|<a class="link my_current|', '£link($testPage) has class my_current');
  61. $t->like(£link()->render(), '|<a class="link dm_parent|', '£link() has class dm_parent');
  62. $t->like(£link()->set('parent_class', 'my_parent')->render(), '|<a class="link my_parent|', '£link() has class my_parent');
  63. $testPageLink = sprintf('<a class="%s" href="%s">%s</a>', 'link dm_current', $scriptName.'/'.$testPage->slug, $testPage->name);
  64. $t->is((string)£link($testPage), $testPageLink, 'page link is '.$testPageLink);
  65. $rootLink = sprintf('<a class="%s" href="%s">%s</a>', 'link dm_parent', $scriptName, $home->name);
  66. $t->is((string)£link(), $rootLink, 'root link is '.$rootLink);
  67. $sc->mergeParameter('link_tag_record.options', array(
  68. 'current_span'=> true
  69. ))->mergeParameter('link_tag_page.options', array(
  70. 'current_span'=> true
  71. ));
  72. $t->diag('link current_span is true');
  73. $testPageLink = sprintf('<span class="%s">%s</span>', 'link dm_current', $testPage->name);
  74. $t->is((string)£link($testPage), $testPageLink, 'page link is '.$testPageLink);
  75. $testPageLink = sprintf('<span class="%s">%s</span>', 'link dm_current', $testPage->name);
  76. $t->is((string)£link('page:'.$testPage->id), $testPageLink, 'page:'.$testPage->id.' link is '.$testPageLink);
  77. $testPage->Node->delete();
  78. //$t->diag('Switch app');
  79. //
  80. //$adminUrl = 'http://symfony/admin.php';
  81. //$t->is(£link('app:admin')->getHref(), $adminUrl, $adminUrl);
  82. //
  83. //$adminUrl2 = 'http://symfony/admin.php/main/test';
  84. //$t->is(£link('app:admin/main/test')->getHref(), $adminUrl2, $adminUrl2);
  85. //
  86. //$adminUrl3 = 'http://symfony/admin.php?var1=val2';
  87. //$t->is(£link('app:admin?var1=val2')->getHref(), $adminUrl3, $adminUrl3);
  88. $t->diag('blank');
  89. $blankLink = sprintf('<a class="link" href="%s" target="%s">%s</a>', 'http://diem-project.org', '_blank', 'http://diem-project.org');
  90. $t->is((string)£link('http://diem-project.org')->target('blank'), $blankLink, 'blank link is '.$blankLink);
  91. $blankLink = sprintf('<a class="link" href="%s">%s</a>', 'http://diem-project.org', 'http://diem-project.org');
  92. $t->is((string)£link('http://diem-project.org')->target('blank')->target(false), $blankLink, 'canceled blank link is '.$blankLink);
  93. $t->diag('media links');
  94. dmDb::table('DmMediaFolder')->checkRoot();
  95. $t->comment('Create a test image media');
  96. $mediaFileName = 'test_image_'.dmString::random().'.jpg';
  97. copy(
  98. dmOs::join(sfConfig::get('dm_core_dir'), 'data/image/defaultMedia.jpg'),
  99. dmOs::join(sfConfig::get('sf_upload_dir'), $mediaFileName)
  100. );
  101. $media = dmDb::create('DmMedia', array(
  102. 'file' => $mediaFileName,
  103. 'dm_media_folder_id' => dmDb::table('DmMediaFolder')->checkRoot()->id
  104. ))->saveGet();
  105. $t->ok($media->exists(), 'A test media has been created');
  106. $mediaLink = sprintf('<a class="link" href="%s">%s</a>', $helper->get('request')->getAbsoluteUrlRoot().'/'.$media->webPath, $media->file);
  107. $t->is((string)£link($media), $mediaLink, '$media -> '.$mediaLink);
  108. $t->is((string)£link('media:'.$media->id), $mediaLink, 'media:'.$media->id.' -> '.$mediaLink);
  109. $t->is((string)£link('/'.$media->webPath)->text($media->file), $expected = str_replace($helper->get('request')->getAbsoluteUrlRoot(), '', $mediaLink), $media->webPath.' -> '.$expected);
  110. sfConfig::set('sf_debug', true);
  111. $badSource = dmString::random().'/'.dmString::random();
  112. $errorText = '[EXCEPTION] '.$badSource.' is not a valid link resource';
  113. $expr = '_^<a class="link" href="\?dm\_debug=1" title="[^"]+">'.preg_quote($errorText, '_').'</a>$_';
  114. $errorLink = (string)£link($badSource);
  115. $t->like($errorLink, $expr, $errorLink);
  116. sfConfig::set('sf_debug', false);
  117. $badSource = dmString::random().'/'.dmString::random();
  118. $errorLink = '<a class="link"></a>';
  119. $t->is($errorLink, $errorLink, $errorLink);
  120. $media->delete();
  121. $t->is((string)£link('mailto:test@mail.com')->text('email'), $html = '<a class="link" href="mailto:test@mail.com">email</a>', 'mailto: '.$html);
  122. $t->comment('Test use_beaf');
  123. $helper->getServiceContainer()->mergeParameter('link_tag_uri.options', array('use_beaf' => true));
  124. $expected = sprintf(
  125. '<a class="link beafh" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>',
  126. 'http://diem-project.org', 'http://diem-project.org'
  127. );
  128. $t->is((string)£link('http://diem-project.org')->set('.beafh'), $expected, 'beafh link is '.$expected);
  129. $expected = sprintf(
  130. '<a class="link beafv" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>',
  131. 'http://diem-project.org', 'http://diem-project.org'
  132. );
  133. $t->is((string)£link('http://diem-project.org')->set('.beafv'), $expected, 'beafh link is '.$expected);
  134. $expected = sprintf(
  135. '<a class="link beafh myclass" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>',
  136. 'http://diem-project.org', 'http://diem-project.org'
  137. );
  138. $t->is((string)£link('http://diem-project.org')->set('.beafh.myclass'), $expected, 'beafh link is '.$expected);
  139. $expected = sprintf(
  140. '<a class="link beafv myclass" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>',
  141. 'http://diem-project.org', 'http://diem-project.org'
  142. );
  143. $t->is((string)£link('http://diem-project.org')->set('.beafv.myclass'), $expected, 'beafh link is '.$expected);
  144. $expected = sprintf(
  145. '<a class="link" href="%s">%s</a>',
  146. $helper->getContext()->getRequest()->getPathInfoPrefix().'/simple-url',
  147. 'simple route url'
  148. );
  149. $t->is((string)£link('@link_test_route_1')->text('simple route url'), $expected, 'route link is '.$expected);
  150. $expected = sprintf(
  151. '<a class="link" href="%s">%s</a>',
  152. $helper->getContext()->getRequest()->getPathInfoPrefix().'/simple-url?var1=value1',
  153. 'simple route url with extra query string'
  154. );
  155. $t->is((string)£link('@link_test_route_1')->param('var1', 'value1')->text('simple route url with extra query string'), $expected, 'route link is '.$expected);
  156. $expected = sprintf(
  157. '<a class="link" href="%s">%s</a>',
  158. $helper->getContext()->getRequest()->getPathInfoPrefix().'/advanced-parametered-url/value1/value2',
  159. 'advanced parametered route url'
  160. );
  161. $t->is((string)£link('@link_test_route_2')->params(array('var1'=> 'value1', 'var2' => 'value2'))->text('advanced parametered route url'), $expected, 'route link is '.$expected);
  162. $expected = sprintf(
  163. '<a class="link" href="%s">%s</a>',
  164. $helper->getContext()->getRequest()->getPathInfoPrefix().'/advanced-parametered-url/value1/value2?var3=value3',
  165. 'advanced parametered route url with extrauery string'
  166. );
  167. $t->is((string)£link('@link_test_route_2')->params(array('var1'=> 'value1', 'var2' => 'value2'))->param('var3', 'value3')->text('advanced parametered route url with extrauery string'), $expected, 'route link is '.$expected);
  168. sfConfig::set('sf_debug', true);
  169. $expected = 'The "/advanced-parametered-url/:var1/:var2" route has some missing mandatory parameters (:var1, :var2).';
  170. $t->is((string)£link('@link_test_route_2')->text('advanced parametered route url'), $expected, 'route link is '.$expected);
  171. sfConfig::set('sf_debug', false);