/** * Returns Gravatar-Image-tag * * @param string $email * @param array $params * @return string */ public function Gravatar($email, $size = null, $rating = null, $default = null, $ssl = null, $separator = '&', array $params = array()) { $params['src'] = $this->_service->getUri($email, $size, $rating, $default, $ssl, $separator); if (!isset($params['alt'])) { $params['alt'] = 'Gravatar ' . $this->_service->getGravatarHash($email); } $image = '<img '; $image .= $this->_htmlAttribs($params); $image .= $this->getClosingBracket(); return $image; }
/** * @covers Robo47_View_Helper_Gravatar::Gravatar * @dataProvider gravatarProvider */ public function testGravatar($email, $size, $rating, $default, $ssl, $separator, $params) { $view = new Zend_View(); $view->setEncoding('utf-8'); $view->Doctype(Zend_View_Helper_Doctype::XHTML1_STRICT); $service = new Robo47_Service_Gravatar(); $helper = new Robo47_View_Helper_Gravatar($service); $helper->setView($view); $gravatarImageTag = $helper->Gravatar($email, $size, $rating, $default, $ssl, $separator, $params); $src = $service->getUri($email, $size, $rating, $default, $ssl, $separator); $alt = 'Gravatar ' . $service->getGravatarHash($email); libxml_use_internal_errors(true); $dom = new DOMDocument(); $dom->loadHTML('<html><head><title></title></head><body>' . $gravatarImageTag . '</body></html>'); libxml_use_internal_errors(false); $nodes = $dom->getElementsByTagName('img'); $this->assertEquals(1, $nodes->length); $image = $nodes->item(0); $this->assertTrue($image->hasAttribute('src'), 'Image has no attribute "href"'); $this->assertTrue($image->hasAttribute('alt'), 'Image has no alt'); foreach ($params as $param => $value) { $this->assertTrue($image->hasAttribute($param), 'Image has no attribute "' . $param . '"'); $this->assertEquals($value, $image->getAttribute($param), 'Image attribute "' . $param . '" has wrong value'); } $srcAttribute = $image->getAttribute('src'); $this->assertEquals($src, $srcAttribute, 'Image attribute "src" has wrong value'); if (isset($params['alt'])) { $altAttribute = $image->getAttribute('alt'); $this->assertEquals($params['alt'], $altAttribute, 'Image attribute "alt" has wrong value'); } else { $altAttribute = $image->getAttribute('alt'); $this->assertEquals($alt, $altAttribute, 'Image attribute "alt" has wrong value'); } }
/** * @covers Robo47_Service_Gravatar::getUri * @covers Robo47_Service_Gravatar::_getUri * @covers Robo47_Service_Gravatar::_filterSsl * @covers Robo47_Service_Gravatar::_filterSize * @covers Robo47_Service_Gravatar::_filterRating * @covers Robo47_Service_Gravatar::_filterDefault */ public function testGetUriWithoutSSL() { $options = array('default' => 'http://www.example.com/foo.jpg', 'rating' => Robo47_Service_Gravatar::RATING_X, 'size' => 200); $service = new Robo47_Service_Gravatar($options); $uri = $service->getUri('*****@*****.**', null, null, null, null, '&'); $parts = parse_url($uri); $this->assertEquals('http', $parts['scheme'], 'wrong scheme'); $this->assertEquals('www.gravatar.com', $parts['host'], 'wrong host'); $this->assertEquals('/avatar/' . md5('*****@*****.**'), $parts['path'], 'wrong path'); $queryParts = array(); parse_str($parts['query'], $queryParts); $this->assertArrayHasKey('r', $queryParts, 'Query misses variable for rating (r)'); $this->assertArrayHasKey('d', $queryParts, 'Query misses variable for default (d)'); $this->assertArrayHasKey('s', $queryParts, 'Query misses variable for size (s)'); $this->assertEquals($queryParts['r'], 'x', 'variable for rating has wrong value'); $this->assertEquals($queryParts['s'], '200', 'variable for size has wrong value'); $this->assertEquals($queryParts['d'], urldecode($options['default']), 'variable for default has wrong value'); }