user->create( array(
'user_login' => 'foobarbaz',
'user_nicename' => 'foobarbaz',
) );
$u2 = self::factory()->user->create( array(
'user_login' => 'foo2',
'user_nicename' => 'foo2',
) );
$u1_mention_name = bp_activity_get_user_mentionname( $u1 );
$u1_domain = bp_core_get_user_domain( $u1 );
$u2_mention_name = bp_activity_get_user_mentionname( $u2 );
$u2_domain = bp_core_get_user_domain( $u2 );
// mentions normal text should be replaced
$at_name_in_text = sprintf( 'Hello @%s', $u1_mention_name );
$at_name_in_text_final = "Hello @$u1_mention_name";
$this->assertEquals( $at_name_in_text_final, bp_activity_at_name_filter( $at_name_in_text ) );
// mentions inside links sholudn't be replaced
// inside href
$at_name_in_mailto = sprintf( "Send messages to Foo Bar Baz", $u1_mention_name );
$at_name_in_mailto_final = sprintf( "Send messages to Foo Bar Baz", $u1_mention_name );
$this->assertEquals( $at_name_in_mailto_final, bp_activity_at_name_filter( $at_name_in_mailto ) );
// inside linked text
$at_name_in_link = sprintf( '@%1$s', $u1_mention_name );
$at_name_in_link_final = sprintf( '@%1$s', $u1_mention_name );
$this->assertEquals( $at_name_in_link_final, bp_activity_at_name_filter( $at_name_in_link ) );
// Don't link non-existent users
$text = "Don't link @non @existent @users";
$this->assertSame( $text, bp_activity_at_name_filter( $text ) );
// Don't link the domain name of the site
preg_match( '|https?://([^/]+)|', home_url(), $matches );
if ( ! empty( $matches[1] ) ) {
$text = $matches[1] . " Don't link the domain name " . $matches[1];
}
$this->assertSame( $text, bp_activity_at_name_filter( $text ) );
// Multiples
$at_name_in_mailto = sprintf( "Send messages to @%s Foo Bar Baz. Please CC @foo2.", $u1_mention_name, $u1_mention_name, $u2_mention_name, $u2_mention_name );
$at_name_in_mailto_final = sprintf( 'Send messages to @%s Foo Bar Baz. Please CC @%s.', $u1_domain, $u1_mention_name, $u1_mention_name, $u2_mention_name, $u2_mention_name );
$this->assertEquals( $at_name_in_mailto_final, bp_activity_at_name_filter( $at_name_in_mailto ) );
}
}