ia = elgg_set_ignore_access(TRUE); parent::__construct(); // all __construct() code should come after here } /** * Called before each test method. */ public function setUp() { } /** * Called after each test method. */ public function tearDown() { // do not allow SimpleTest to interpret Elgg notices as exceptions $this->swallowErrors(); } /** * Called after each test object. */ public function __destruct() { elgg_set_ignore_access($this->ia); // all __destruct() code should go above here parent::__destruct(); } /** * Get the link for a user's wire page * * @param string $username Username * @return string */ protected function getUserWireLink($username) { $url = "thewire/owner/$username"; $url = elgg_normalize_url($url); return "@$username"; } /** * Get the link for a hashtag page * * @param string $tag Tag string * @return string */ protected function getHashtagLink($tag) { $url = "thewire/tag/$tag"; $url = elgg_normalize_url($url); return "#$tag"; } /** * Get a link for an email address mailto * * @param string $address Email address * @return string */ protected function getEmailLink($address) { return "$address"; } /** * Get the html for a link * * @param string $address URL * @return string */ protected function getLink($address) { return parse_urls($address); } /** * Usernames: @user */ public function testReplaceUsernames() { // beginning of text $text = "@user test"; $expected = $this->getUserWireLink('user') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // after space $text = "test @user test"; $expected = "test " . $this->getUserWireLink('user') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by comma $text = "test @user, test"; $expected = "test " . $this->getUserWireLink('user') . ", test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // preceded by comma $text = "test ,@user test"; $expected = "test ," . $this->getUserWireLink('user') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // include digit $text = "@3user test"; $expected = $this->getUserWireLink('3user') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // include underscore $text = "@user_name test"; $expected = $this->getUserWireLink('user_name') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // parentheses $text = "test (@user) test"; $expected = "test (" . $this->getUserWireLink('user') . ") test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // utf8 characters $text = "@tyúkanyó"; $expected = $this->getUserWireLink('tyúkanyó'); $result = thewire_filter($text); $this->assertEqual($result, $expected); } /** * Hashtags: #tag */ public function testReplaceHashtags() { // tag at beginning $text = "#tag test"; $expected = $this->getHashtagLink('tag') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // tag not at beginning $text = "test #tag test"; $expected = "test " . $this->getHashtagLink('tag') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by comma $text = "test #tag, test"; $expected = "test " . $this->getHashtagLink('tag') . ", test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // preceded by comma $text = "test,#tag test"; $expected = "test," . $this->getHashtagLink('tag') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by period $text = "test #tag. test"; $expected = "test " . $this->getHashtagLink('tag') . ". test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // parentheses $text = "test (#tag) test"; $expected = "test (" . $this->getHashtagLink('tag') . ") test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // include number $text = "test #tag2000 test"; $expected = "test " . $this->getHashtagLink('tag2000') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // cannot be just a number $text = "test #1 test"; $expected = $text; $result = thewire_filter($text); $this->assertEqual($result, $expected); } /** * Email: johndoe@gmail.com */ public function testReplaceEmailAddress() { // email at beginning of text $text = "test@test.com test"; $expected = $this->getEmailLink('test@test.com') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // after space $text = "test test@test.com test"; $expected = "test " . $this->getEmailLink('test@test.com') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by comma $text = "test test@test.com, test"; $expected = "test " . $this->getEmailLink('test@test.com') . ", test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // preceded by comma $text = "test,test@test.com test"; $expected = "test," . $this->getEmailLink('test@test.com') . " test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by period $text = "test test@test.com. test"; $expected = "test " . $this->getEmailLink('test@test.com') . ". test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // parentheses $text = "test (test@test.com) test"; $expected = "test (" . $this->getEmailLink('test@test.com') . ") test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); // includes digits $text = "user1@domain1.com"; $expected = $this->getEmailLink('user1@domain1.com'); $result = thewire_filter($text); $this->assertEqual($result, $expected); // includes underscore $text = "user_name@domain.com"; $expected = $this->getEmailLink('user_name@domain.com'); $result = thewire_filter($text); $this->assertEqual($result, $expected); // includes period $text = "user.name@domain.com"; $expected = $this->getEmailLink('user.name@domain.com'); $result = thewire_filter($text); $this->assertEqual($result, $expected); // includes subdomains $text = "user.name@domain.com.uk"; $expected = $this->getEmailLink('user.name@domain.com.uk'); $result = thewire_filter($text); $this->assertEqual($result, $expected); } /** * Links: http://www.example.org/ */ public function testReplaceLinks() { // beginning of text $text = "http://www.test.org"; $expected = $this->getLink('http://www.test.org'); $result = thewire_filter($text); $this->assertEqual($result, $expected); // not at beginning of text $text = "test http://www.test.org"; $expected = 'test ' . $this->getLink('http://www.test.org'); $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by comma $text = "test http://www.test.org, test"; $expected = 'test ' . $this->getLink('http://www.test.org') . ', test'; $result = thewire_filter($text); $this->assertEqual($result, $expected); // preceeded by comma $text = "test,http://www.test.org test"; $expected = 'test,' . $this->getLink('http://www.test.org') . ' test'; $result = thewire_filter($text); $this->assertEqual($result, $expected); // followed by period $text = "test http://www.test.org. test"; $expected = 'test ' . $this->getLink('http://www.test.org') . '. test'; $result = thewire_filter($text); $this->assertEqual($result, $expected); // surrounded by parentheses $text = "test (http://www.test.org) test"; $expected = 'test (' . $this->getLink('http://www.test.org') . ') test'; $result = thewire_filter($text); $this->assertEqual($result, $expected); // no http:// $text = "test www.test.org test"; $expected = 'test ' . $this->getLink('www.test.org') . ' test'; $result = thewire_filter($text); $this->assertEqual($result, $expected); } }