'Metatag unit tests', 'description' => 'Test basic meta tag functionality for entities.', 'group' => 'Metatag', 'dependencies' => array('ctools', 'token'), ); } /** * Test the metatag_config_load_with_defaults() function. */ public function testConfigLoadDefaults() { // Load the global defaults, inc the fake entity. $defaults = metatag_config_load_with_defaults('test:foo'); // Load the example values and verify they're the same as the globals. $extra_tags = array( // Fake meta tag. 'test:foo' => array('value' => 'foobar'), ); $new_values = array_merge($extra_tags, $this->getTestDefaults()); // Confirm that the values are equal. $this->assertEqual($defaults, $new_values); } /** * Test the basic entity handling. */ public function testEntitySupport() { $test_cases[1] = array('type' => 'node', 'bundle' => 'article', 'expected' => TRUE); $test_cases[2] = array('type' => 'node', 'bundle' => 'page', 'expected' => TRUE); $test_cases[3] = array('type' => 'node', 'bundle' => 'invalid-bundle', 'expected' => FALSE); $test_cases[4] = array('type' => 'user', 'expected' => TRUE); $test_cases[5] = array('type' => 'taxonomy_term', 'bundle' => 'tags', 'expected' => TRUE); $test_cases[6] = array('type' => 'taxonomy_term', 'bundle' => 'invalid-bundle', 'expected' => FALSE); foreach ($test_cases as $test_case) { $test_case += array('bundle' => NULL); $this->assertMetatagEntitySupportsMetatags($test_case['type'], $test_case['bundle'], $test_case['expected']); } // Disable meta tags for these. metatag_entity_type_disable('node', 'page'); metatag_entity_type_disable('user'); $test_cases[2]['expected'] = FALSE; $test_cases[4]['expected'] = FALSE; $test_cases[6]['expected'] = FALSE; foreach ($test_cases as $test_case) { $test_case += array('bundle' => NULL); $this->assertMetatagEntitySupportsMetatags($test_case['type'], $test_case['bundle'], $test_case['expected']); } } /** * Confirm an entity supports meta tags. * * @param string $entity_type * The name of the entity type to test. * @param string $bundle * The name of the entity bundle to test. * @param array $expected * The expected results. * * @return object * An assertion. */ function assertMetatagEntitySupportsMetatags($entity_type, $bundle, $expected) { $entity = entity_create_stub_entity($entity_type, array(0, NULL, $bundle)); return $this->assertEqual( metatag_entity_supports_metatags($entity_type, $bundle), $expected, t("metatag_entity_supports_metatags(:type, :bundle) is :expected", array( ':type' => var_export($entity_type, TRUE), ':bundle' => var_export($bundle, TRUE), ':expected' => var_export($expected, TRUE), )) ); } /** * Test the metatag_config_instance_label() function. */ public function testConfigLabels() { $test_cases = array( 'node' => 'Node', 'node:article' => 'Node: Article', 'node:article:c' => 'Node: Article: Unknown (c)', 'node:b' => 'Node: Unknown (b)', 'node:b:c' => 'Node: Unknown (b): Unknown (c)', 'a' => 'Unknown (a)', 'a:b' => 'Unknown (a): Unknown (b)', 'a:b:c' => 'Unknown (a): Unknown (b): Unknown (c)', 'a:b:c:d' => 'Unknown (a): Unknown (b): Unknown (c): Unknown (d)', ); foreach ($test_cases as $input => $expected_output) { drupal_static_reset('metatag_config_instance_label'); $actual_output = metatag_config_instance_label($input); $this->assertEqual($actual_output, $expected_output); } } /** * Test the _metatag_config_instance_sort() function. */ public function testConfigInstanceSort() { $input = array( 'node:article', 'global:frontpage', 'file', 'node:page', 'global', 'node', 'global:404', ); usort($input, '_metatag_config_instance_sort'); $this->assertIdentical($input, array( 'global', 'global:404', 'global:frontpage', 'file', 'node', 'node:article', 'node:page', )); } }