xmlsitemap_i18n.test 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. // $Id: xmlsitemap_i18n.test,v 1.5 2010/01/24 03:56:51 davereid Exp $
  3. /**
  4. * @file
  5. * Unit tests for the xmlsitemap_i18n module.
  6. */
  7. /**
  8. * Common base test class for XML sitemap internationalization tests.
  9. */
  10. class XMLSitemapI18nWebTestCase extends XMLSitemapTestHelper {
  11. protected $admin_user;
  12. /**
  13. * Set up an administrative user account and testing keys.
  14. */
  15. function setUp() {
  16. // Call parent::setUp() allowing test cases to pass further modules.
  17. $modules = func_get_args();
  18. $modules = array_merge(array('locale', 'translation', 'i18n', 'xmlsitemap_i18n'), $modules);
  19. call_user_func_array(array('parent', 'setUp'), $modules);
  20. // Add predefined language and reset the locale cache.
  21. require_once DRUPAL_ROOT . '/includes/locale.inc';
  22. locale_add_language('fr', NULL, NULL, LANGUAGE_LTR, '', 'fr');
  23. variable_set('xmlsitemap_languages', array('en', 'fr'));
  24. variable_set('language_negotiation', LANGUAGE_NEGOTIATION_PATH);
  25. }
  26. }
  27. class XMLSitemapI18nTest extends XMLSitemapI18nWebTestCase {
  28. public static function getInfo() {
  29. return array(
  30. 'name' => 'XML sitemap i18n tests',
  31. 'description' => 'Functional and integration tests for the XML sitemap and internationalization modules.',
  32. 'group' => 'XML sitemap',
  33. 'dependencies' => array('i18n'),
  34. );
  35. }
  36. function testLanguageSelection() {
  37. // Create our three different language nodes.
  38. $node = $this->addSitemapLink(array('type' => 'node', 'language' => LANGUAGE_NONE));
  39. $node_en = $this->addSitemapLink(array('type' => 'node', 'language' => 'en'));
  40. $node_fr = $this->addSitemapLink(array('type' => 'node', 'language' => 'fr'));
  41. // Create three non-node language nodes.
  42. $link = $this->addSitemapLink(array('language' => LANGUAGE_NONE));
  43. $link_en = $this->addSitemapLink(array('language' => 'en'));
  44. $link_fr = $this->addSitemapLink(array('language' => 'fr'));
  45. variable_set('i18n_selection_mode', 'off');
  46. $this->regenerateSitemap();
  47. $this->drupalGetSitemap('en');
  48. $this->assertRawSitemapLinks($node, $node_en, $node_fr, $link, $link_en, $link_fr);
  49. $this->drupalGetSitemap('fr');
  50. $this->assertRawSitemapLinks($node, $node_en, $node_fr, $link, $link_en, $link_fr);
  51. variable_set('i18n_selection_mode', 'simple');
  52. $this->regenerateSitemap();
  53. $this->drupalGetSitemap('en');
  54. $this->assertRawSitemapLinks($node, $node_en, $link, $link_en);
  55. $this->assertNoRawSitemapLinks($node_fr, $link_fr);
  56. $this->drupalGetSitemap('fr');
  57. $this->assertRawSitemapLinks($node, $node_fr, $link, $link_fr);
  58. $this->assertNoRawSitemapLinks($node_en, $link_en);
  59. variable_set('i18n_selection_mode', 'mixed');
  60. $this->regenerateSitemap();
  61. $this->drupalGetSitemap('en');
  62. $this->assertRawSitemapLinks($node, $node_en, $link, $link_en);
  63. $this->assertNoRawSitemapLinks($node_fr, $link_fr);
  64. $this->drupalGetSitemap('fr');
  65. $this->assertRawSitemapLinks($node, $node_en, $node_fr, $link, $link_en, $link_fr);
  66. variable_set('i18n_selection_mode', 'default');
  67. $this->regenerateSitemap();
  68. $this->drupalGetSitemap('en');
  69. $this->assertRawSitemapLinks($node, $node_en, $link, $link_en);
  70. $this->assertNoRawSitemapLinks($node_fr, $link_fr);
  71. $this->drupalGetSitemap('fr');
  72. $this->assertRawSitemapLinks($node, $node_en, $link, $link_en);
  73. $this->assertNoRawSitemapLinks($node_fr, $link_fr);
  74. // With strict mode, the language neutral node should not be found, but the
  75. // language neutral non-node should be.
  76. variable_set('i18n_selection_mode', 'strict');
  77. $this->regenerateSitemap();
  78. $this->drupalGetSitemap('en');
  79. $this->assertRawSitemapLinks($node_en, $link, $link_en);
  80. $this->assertNoRawSitemapLinks($node, $node_fr, $link_fr);
  81. $this->drupalGetSitemap('fr');
  82. $this->assertRawSitemapLinks($node_fr, $link, $link_fr);
  83. $this->assertNoRawSitemapLinks($node, $node_en, $link_en);
  84. }
  85. }
  86. class XMLSitemapI18nNodeTest extends XMLSitemapI18nWebTestCase {
  87. public static function getInfo() {
  88. return array(
  89. 'name' => 'XML sitemap i18n node tests',
  90. 'description' => 'Functional and integration tests for the XML sitemap node and internationalization modules.',
  91. 'group' => 'XML sitemap',
  92. 'dependencies' => array('i18n'),
  93. );
  94. }
  95. function setUp() {
  96. parent::setUp('xmlsitemap_node');
  97. variable_set('language_content_type_page', 1);
  98. $this->admin_user = $this->drupalCreateUser(array('administer nodes'));
  99. $this->drupalLogin($this->admin_user);
  100. }
  101. function testNodeLanguageData() {
  102. $node = $this->drupalCreateNode(array());
  103. $this->drupalPost('node/' . $node->nid . '/edit', array('language' => 'en'), t('Save'));
  104. $node = node_load($node->nid, NULL, TRUE);
  105. $this->assertIdentical($node->xmlsitemap['language'], 'en');
  106. $this->drupalPost('node/' . $node->nid . '/edit', array('language' => 'fr'), t('Save'));
  107. $node = node_load($node->nid, NULL, TRUE);
  108. $this->assertIdentical($node->xmlsitemap['language'], 'fr');
  109. }
  110. }