diff options
| -rw-r--r-- | tests/extension/acp.php | 73 | ||||
| -rw-r--r-- | tests/extension/metadata_manager_test.php | 101 | 
2 files changed, 107 insertions, 67 deletions
diff --git a/tests/extension/acp.php b/tests/extension/acp.php index 78a770343b..790df77c0d 100644 --- a/tests/extension/acp.php +++ b/tests/extension/acp.php @@ -119,59 +119,40 @@ class acp_test extends phpbb_functional_test_case  	{          $crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=details&ext_name=foo&sid=' . $this->sid); +        $validation = array( +        	'DISPLAY_NAME'		=> 'phpBB Foo Extension', +        	'CLEAN_NAME'		=> 'foo/example', +        	'DESCRIPTION'		=> 'An example/sample extension to be used for testing purposes in phpBB Development.', +        	'VERSION'	  		=> '1.0.0', +        	'TIME'				=> '2012-02-15 01:01:01', +        	'LICENCE'			=> 'GPL-2.0', +        	'PHPBB_VERSION'		=> '3.1.0-dev', +        	'PHP_VERSION'		=> '>=5.3', +        	'AUTHOR_NAME'		=> 'Nathan Guse', +        	'AUTHOR_EMAIL'		=> 'email@phpbb.com', +        	'AUTHOR_HOMEPAGE'	=> 'http://lithiumstudios.org', +        	'AUTHOR_ROLE'		=> 'N/A', +        ); +          for ($i = 0; $i < $crawler->filter('dl')->count(); $i++)          {          	$text = $crawler->filter('dl')->eq($i)->text(); -        	switch (true) -        	{ -        		case (strpos($text, $this->lang('DISPLAY_NAME')) === 0): -        			$this->assertContains('phpBB Foo Extension', $text); -        		break; - -        		case (strpos($text, $this->lang('CLEAN_NAME')) === 0): -        			$this->assertContains('foo/example', $text); -        		break; - -        		case (strpos($text, $this->lang('DESCRIPTION')) === 0): -        			$this->assertContains('An example/sample extension to be used for testing purposes in phpBB Development.', $text); -        		break; - -        		case (strpos($text, $this->lang('VERSION')) === 0): -        			$this->assertContains('1.0.0', $text); -        		break; - -        		case (strpos($text, $this->lang('TIME')) === 0): -        			$this->assertContains('2012-02-15 01:01:01', $text); -        		break; +        	$match = false; -        		case (strpos($text, $this->lang('LICENCE')) === 0): -        			$this->assertContains('GNU GPL v2', $text); -        		break; - -        		case (strpos($text, $this->lang('PHPBB_VERSION')) === 0): -        			$this->assertContains('3.1.0-dev', $text); -        		break; - -        		case (strpos($text, $this->lang('PHP_VERSION')) === 0): -        			$this->assertContains('>=5.3', $text); -        		break; - -        		case (strpos($text, $this->lang('AUTHOR_NAME')) === 0): -        			$this->assertContains('Nathan Guse', $text); -        		break; - -        		case (strpos($text, $this->lang('AUTHOR_EMAIL')) === 0): -        			$this->assertContains('email@phpbb.com', $text); -        		break; +        	foreach ($validation as $language_key => $expected) +        	{ +        		if (strpos($text, $this->lang($language_key)) === 0) +        		{ +        			$match = true; -        		case (strpos($text, $this->lang('AUTHOR_HOMEPAGE')) === 0): -        			$this->assertContains('http://lithiumstudios.org', $text); -        		break; +        			$this->assertContains($expected, $text); +				} +			} -        		case (strpos($text, $this->lang('AUTHOR_ROLE')) === 0): -        			$this->assertContains('N/A', $text); -        		break; +			if (!$match) +			{ +				$this->fail('Unexpected field: "' . $text . '"');  			}  		}  	} diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 801d4dbeca..9865f14314 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -93,7 +93,7 @@ class metadata_manager_test extends phpbb_database_test_case  		$this->assertEquals($metadata, $json);  	} -	public function test_validator() +	public function test_validator_non_existant()  	{  		$ext_name = 'validator'; @@ -103,37 +103,57 @@ class metadata_manager_test extends phpbb_database_test_case  		try  		{  			$manager->validate('name'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Required meta field \'name\' has not been set.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Required meta field \'name\' has not been set.');  		try  		{  			$manager->validate('type'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Required meta field \'type\' has not been set.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Required meta field \'type\' has not been set.');  		try  		{  			$manager->validate('licence'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Required meta field \'licence\' has not been set.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Required meta field \'licence\' has not been set.');  		try  		{  			$manager->validate('version'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Required meta field \'version\' has not been set.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Required meta field \'version\' has not been set.');  		try  		{  			$manager->validate_authors(); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Required meta field \'authors\' has not been set.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Required meta field \'authors\' has not been set.');  		$manager->merge_metadata(array(  			'authors'	=> array( @@ -144,10 +164,21 @@ class metadata_manager_test extends phpbb_database_test_case  		try  		{  			$manager->validate_authors(); + +			$this->fail('Exception not triggered');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Required meta field \'author name\' has not been set.'); +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Required meta field \'author name\' has not been set.'); +		} +	} + + +	public function test_validator_invalid() +	{ +		$ext_name = 'validator'; +		$manager = $this->get_metadata_manager($ext_name);  		// Invalid data  		$manager->set_metadata(array( @@ -160,31 +191,53 @@ class metadata_manager_test extends phpbb_database_test_case  		try  		{  			$manager->validate('name'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Meta field \'name\' is invalid.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Meta field \'name\' is invalid.');  		try  		{  			$manager->validate('type'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Meta field \'type\' is invalid.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Meta field \'type\' is invalid.');  		try  		{  			$manager->validate('licence'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Meta field \'licence\' is invalid.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Meta field \'licence\' is invalid.');  		try  		{  			$manager->validate('version'); + +			$this->fail('Exception not triggered'); +		} +		catch(phpbb_extension_exception $e) +		{ +			$this->assertEquals((string) $e, 'Meta field \'version\' is invalid.');  		} -		catch(phpbb_extension_exception $e) {} -		$this->assertEquals((string) $e, 'Meta field \'version\' is invalid.'); +	} + +	public function test_validator_valid() +	{ +		$ext_name = 'validator'; +		$manager = $this->get_metadata_manager($ext_name);  		// Valid data  		$manager->set_metadata(array( @@ -202,8 +255,14 @@ class metadata_manager_test extends phpbb_database_test_case  		{  			$this->fail($e);  		} +	} +	public function test_validator_requirements() +	{ +		$ext_name = 'validator'; + +		$manager = $this->get_metadata_manager($ext_name);  		// Too high of requirements  		$manager->merge_metadata(array(  			'require'		=> array(  | 
