assertEquals( 'ASC', bp_esc_sql_order( 'ASC' ) );
}
/**
* @group bp_esc_sql_order
*/
public function test_bp_esc_sql_order_DESC() {
$this->assertEquals( 'DESC', bp_esc_sql_order( 'DESC' ) );
}
/**
* @group bp_esc_sql_order
*/
public function test_bp_esc_sql_order_desc_lowercase() {
$this->assertEquals( 'DESC', bp_esc_sql_order( 'desc' ) );
}
/**
* @group bp_esc_sql_order
*/
public function test_bp_esc_sql_order_desc_whitespace() {
$this->assertEquals( 'DESC', bp_esc_sql_order( ' desc ' ) );
}
/**
* @group bp_esc_sql_order
*/
public function test_bp_esc_sql_order_invalid() {
$this->assertEquals( 'ASC', bp_esc_sql_order( 'In ur base killin ur d00dz' ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_years_months() {
$now = time();
$then = $now - ( 3 * YEAR_IN_SECONDS ) - ( 3 * 30 * DAY_IN_SECONDS );
$this->assertEquals( '3 years, 3 months ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_years_nomonths() {
$now = time();
$then = $now - ( 3 * YEAR_IN_SECONDS );
$this->assertEquals( '3 years ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_months_weeks() {
$now = time();
$then = $now - ( 3 * 30 * DAY_IN_SECONDS ) - ( 3 * WEEK_IN_SECONDS );
$this->assertEquals( '3 months, 3 weeks ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_months_noweeks() {
$now = time();
$then = $now - ( 3 * 30 * DAY_IN_SECONDS );
$this->assertEquals( '3 months ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_weeks_days() {
$now = time();
$then = $now - ( 3 * WEEK_IN_SECONDS ) - ( 3 * DAY_IN_SECONDS );
$this->assertEquals( '3 weeks, 3 days ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_weeks_nodays() {
$now = time();
$then = $now - ( 3 * WEEK_IN_SECONDS );
$this->assertEquals( '3 weeks ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_days_hours() {
$now = time();
$then = $now - ( 3 * DAY_IN_SECONDS ) - ( 3 * HOUR_IN_SECONDS );
$this->assertEquals( '3 days, 3 hours ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_days_nohours() {
$now = time();
$then = $now - ( 3 * DAY_IN_SECONDS );
$this->assertEquals( '3 days ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_hours_minutes() {
$now = time();
$then = $now - ( 3 * HOUR_IN_SECONDS ) - ( 3 * MINUTE_IN_SECONDS );
$this->assertEquals( '3 hours, 3 minutes ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_hours_nominutes() {
$now = time();
$then = $now - ( 3 * HOUR_IN_SECONDS );
$this->assertEquals( '3 hours ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
* @ticket BP5017
*/
public function test_bp_core_time_since_minutes_seconds() {
$now = time();
$then = $now - ( 3 * MINUTE_IN_SECONDS ) - 3;
$this->assertEquals( '3 minutes ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_minutes_noseconds() {
$now = time();
$then = $now - ( 3 * MINUTE_IN_SECONDS );
$this->assertEquals( '3 minutes ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_seconds() {
$now = time();
$then = $now - 3;
$this->assertEquals( '3 seconds ago', bp_core_time_since( $then, $now ) );
}
/**
* Sanity check for the singular version of 'year'
*
* @group bp_core_time_since
*/
public function test_bp_core_time_since_year() {
$now = time();
$then = $now - YEAR_IN_SECONDS;
$this->assertEquals( '1 year ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_rightnow() {
$now = time();
$then = $now;
$this->assertEquals( 'right now', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_future() {
$now = time();
$then = $now + 100;
$this->assertEquals( 'sometime ago', bp_core_time_since( $then, $now ) );
}
/**
* @group bp_format_time
*/
public function test_bp_format_time_gmt_offset_no_timezone_string() {
$time = 1395169200;
$gmt_offset = '-6';
$just_date = false;
$localize_time = true;
update_option( 'date_format', 'F j, Y' );
update_option( 'time_format', 'g:i a' );
update_option( 'gmt_offset', $gmt_offset );
update_option( 'timezone_string', '' );
$this->assertEquals( 'March 18, 2014 at 1:00 pm', bp_format_time( $time, $just_date, $localize_time ) );
}
/**
* @group bp_format_time
*/
public function test_bp_format_time_timezone_string_no_gmt_offset() {
$time = 1395169200;
$timzone_string = 'America/Chicago';
$just_date = false;
$localize_time = true;
update_option( 'date_format', 'F j, Y' );
update_option( 'time_format', 'g:i a' );
update_option( 'timezone_string', $timzone_string );
update_option( 'gmt_offset', '0' );
$this->assertEquals( 'March 18, 2014 at 2:00 pm', bp_format_time( $time, $just_date, $localize_time ) );
}
/**
* @group bp_format_time
*/
public function test_bp_format_time_gmt_offset_no_localize() {
$time = 1395169200;
$gmt_offset = '-6';
$just_date = false;
$localize_time = false;
update_option( 'date_format', 'F j, Y' );
update_option( 'time_format', 'g:i a' );
update_option( 'gmt_offset', $gmt_offset );
update_option( 'timezone_string', '' );
$this->assertEquals( 'March 18, 2014 at 7:00 pm', bp_format_time( $time, $just_date, $localize_time ) );
}
/**
* @group bp_format_time
*/
public function test_bp_format_time_timezone_string_no_localize() {
$time = 1395169200;
$timzone_string = 'America/Chicago';
$just_date = false;
$localize_time = false;
update_option( 'date_format', 'F j, Y' );
update_option( 'time_format', 'g:i a' );
update_option( 'timezone_string', $timzone_string );
update_option( 'gmt_offset', '0' );
$this->assertEquals( 'March 18, 2014 at 7:00 pm', bp_format_time( $time, $just_date, $localize_time ) );
}
/**
* @group bp_core_get_iso8601_date
*/
public function test_bp_core_get_iso8601_date_invalid_date() {
$this->assertEquals( '', bp_core_get_iso8601_date( 'Not a date' ) );
}
/**
* @group bp_sort_by_key
*/
public function test_bp_sort_by_key_arrays_num() {
$items = array(
array(
'foo' => 'bar',
'value' => 5,
),
array(
'foo' => 'bar',
'value' => 10,
),
array(
'foo' => 'bar',
'value' => 1,
),
);
$expected = array(
array(
'foo' => 'bar',
'value' => 1,
),
array(
'foo' => 'bar',
'value' => 5,
),
array(
'foo' => 'bar',
'value' => 10,
),
);
$this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num' ) );
}
/**
* @group bp_sort_by_key
*/
public function test_bp_sort_by_key_objects_num() {
$items = array(
new stdClass,
new stdClass,
new stdClass,
);
$items[0]->foo = 'bar';
$items[0]->value = 5;
$items[1]->foo = 'bar';
$items[1]->value = 10;
$items[2]->foo = 'bar';
$items[2]->value = 1;
$expected = array(
new stdClass,
new stdClass,
new stdClass,
);
$expected[0]->foo = 'bar';
$expected[0]->value = 1;
$expected[1]->foo = 'bar';
$expected[1]->value = 5;
$expected[2]->foo = 'bar';
$expected[2]->value = 10;
$this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num' ) );
}
/**
* @group bp_sort_by_key
*/
public function test_bp_sort_by_key_num_should_respect_0() {
$items = array(
array(
'foo' => 'bar',
'value' => 2,
),
array(
'foo' => 'bar',
'value' => 0,
),
array(
'foo' => 'bar',
'value' => 4,
),
);
$expected = array(
array(
'foo' => 'bar',
'value' => 0,
),
array(
'foo' => 'bar',
'value' => 2,
),
array(
'foo' => 'bar',
'value' => 4,
),
);
$this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num' ) );
}
/**
* @group bp_alpha_sort_by_key
*/
public function test_bp_alpha_sort_by_key_arrays() {
$items = array(
array(
'foo' => 'bar',
'name' => 'alpha',
),
array(
'foo' => 'bar',
'name' => 'charlie',
),
array(
'foo' => 'bar',
'name' => 'beta',
),
);
$expected = array(
array(
'foo' => 'bar',
'name' => 'alpha',
),
array(
'foo' => 'bar',
'name' => 'beta',
),
array(
'foo' => 'bar',
'name' => 'charlie',
),
);
$this->assertEquals( $expected, bp_alpha_sort_by_key( $items, 'name' ) );
}
/**
* @group bp_alpha_sort_by_key
*/
public function test_bp_alpha_sort_by_key_objects() {
$items = array(
new stdClass,
new stdClass,
new stdClass,
);
$items[0]->foo = 'bar';
$items[0]->name = 'alpha';
$items[1]->foo = 'bar';
$items[1]->name = 'charlie';
$items[2]->foo = 'bar';
$items[2]->name = 'beta';
$expected = array(
new stdClass,
new stdClass,
new stdClass,
);
$expected[0]->foo = 'bar';
$expected[0]->name = 'alpha';
$expected[1]->foo = 'bar';
$expected[1]->name = 'beta';
$expected[2]->foo = 'bar';
$expected[2]->name = 'charlie';
$this->assertEquals( $expected, bp_alpha_sort_by_key( $items, 'name' ) );
}
/**
* @group bp_sort_by_key
*/
public function test_bp_sort_by_key_arrays_num_preserve_keys() {
$items = array(
'p' => array(
'foo' => 'bar',
'value' => 5,
),
'q' => array(
'foo' => 'bar',
'value' => 10,
),
'r' => array(
'foo' => 'bar',
'value' => 1,
),
);
$expected = array(
'r' => array(
'foo' => 'bar',
'value' => 1,
),
'p' => array(
'foo' => 'bar',
'value' => 5,
),
'q' => array(
'foo' => 'bar',
'value' => 10,
),
);
$this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num', true ) );
}
/**
* @group bp_sort_by_key
*/
public function test_bp_sort_by_key_num_should_respect_0_preserve_keys() {
$items = array(
's' => array(
'foo' => 'bar',
'value' => 2,
),
't' => array(
'foo' => 'bar',
'value' => 0,
),
'u' => array(
'foo' => 'bar',
'value' => 4,
),
);
$expected = array(
't' => array(
'foo' => 'bar',
'value' => 0,
),
's' => array(
'foo' => 'bar',
'value' => 2,
),
'u' => array(
'foo' => 'bar',
'value' => 4,
),
);
$this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num', true ) );
}
/**
* @group pagination
* @group bp_sanitize_pagination_arg
*/
public function test_bp_sanitize_pagination_arg_zero() {
$request = $_REQUEST;
$arg = 'bp_pagination_test';
$page = 1;
$_REQUEST[ $arg ] = '0';
$value = bp_sanitize_pagination_arg( $arg, $page );
$this->assertEquals( $value, $page );
$_REQUEST = $request;
}
/**
* @group pagination
* @group bp_sanitize_pagination_arg
*/
public function test_bp_sanitize_pagination_arg_negative() {
$request = $_REQUEST;
$arg = 'bp_pagination_test';
$page = 25;
$_REQUEST[ $arg ] = '-25';
$value = bp_sanitize_pagination_arg( $arg, $page );
$this->assertEquals( $value, $page );
$_REQUEST = $request;
}
/**
* @group bp_core_get_directory_pages
*/
public function test_bp_core_get_directory_pages_after_page_edit() {
// Set the cache
$pages = bp_core_get_directory_pages();
// Update one of the posts
switch_to_blog( bp_get_root_blog_id() );
// grab the first one
foreach ( $pages as $page ) {
$p = $page;
break;
}
$post = get_post( $p->id );
$post->post_title .= ' Foo';
wp_update_post( $post );
restore_current_blog();
$this->assertFalse( wp_cache_get( 'directory_pages', 'bp' ) );
}
/**
* @group bp_core_get_root_options
*/
public function test_bp_core_get_root_options_cache_invalidate() {
$keys = array_keys( bp_get_default_options() );
$keys[] = 'registration';
$keys[] = 'avatar_default';
foreach ( $keys as $key ) {
// prime cache
$root_options = bp_core_get_root_options();
bp_update_option( $key, 'foo' );
$this->assertFalse( wp_cache_get( 'root_blog_options', 'bp' ), 'Cache not invalidated after updating "' . $key . '"' );
}
if ( is_multisite() ) {
$ms_keys = array(
'tags_blog_id',
'sitewide_tags_blog',
'registration',
'fileupload_mask',
);
foreach ( $ms_keys as $ms_key ) {
$root_options = bp_core_get_root_options();
update_site_option( $ms_key, 'foooooooo' );
$this->assertFalse( wp_cache_get( 'root_blog_options', 'bp' ), 'Cache not invalidated after updating "' . $ms_key . '"' );
}
}
}
/**
* @group bp_core_get_root_option
*/
public function test_bp_core_get_root_option_with_unpopulated_cache() {
// Back up and unset global cache.
$old_options = buddypress()->site_options;
unset( buddypress()->site_options );
$this->assertSame( $old_options['avatar_default'], bp_core_get_root_option( 'avatar_default' ) );
// Clean up.
buddypress()->site_options = $old_options;
}
/**
* @group bp_core_get_root_option
*/
public function test_bp_core_get_root_option_with_populated_cache() {
// Back up and unset global cache.
$old_options = buddypress()->site_options;
buddypress()->site_options = bp_core_get_root_options();
$expected = buddypress()->site_options['avatar_default'];
$this->assertSame( $expected, bp_core_get_root_option( 'avatar_default' ) );
}
/**
* @group bp_core_add_root_component
*/
public function test_add_root_component_not_in_bp_pages() {
buddypress()->foo = new stdClass;
buddypress()->foo->id = 'foo';
buddypress()->foo->slug = 'foo';
bp_core_add_root_component( 'foo' );
$this->assertTrue( in_array( 'foo', buddypress()->add_root ) );
$this->assertTrue( buddypress()->foo->has_directory );
$this->assertNotEmpty( buddypress()->loaded_components['foo'] );
}
/**
* @group bp_core_time_since
* @group bp_core_current_time
*/
public function test_bp_core_time_since_timezone_minute_ago() {
// backup timezone
$tz_backup = date_default_timezone_get();
// set timezone to something other than UTC
date_default_timezone_set( 'Europe/Paris' );
$this->assertSame( '1 minute ago', bp_core_time_since( time() - 60 ) );
// revert timezone back to normal
if ( $tz_backup ) {
date_default_timezone_set( $tz_backup );
}
}
/**
* @group bp_core_time_since
* @group bp_core_current_time
*/
public function test_bp_core_time_since_timezone() {
// backup timezone
$tz_backup = date_default_timezone_get();
// set timezone to something other than UTC
date_default_timezone_set( 'Europe/Paris' );
$this->assertSame( '1 hour ago', bp_core_time_since( time() - 60*60 ) );
// revert timezone back to normal
if ( $tz_backup ) {
date_default_timezone_set( $tz_backup );
}
}
/**
* @group bp_core_time_since
*/
public function test_bp_core_time_since_mysql_and_unix_timestamp_return_same_value() {
$mysql_date = '2008-03-25 17:13:55';
$ts_mysql = bp_core_time_since( $mysql_date );
$ts_timestamp = bp_core_time_since( strtotime( $mysql_date ) );
$this->assertSame( $ts_mysql, $ts_timestamp );
}
/**
* @group bp_attachments
* @group bp_upload_dir
*/
public function test_bp_upload_dir() {
$expected_upload_dir = wp_upload_dir();
if ( is_multisite() ) {
$b = self::factory()->blog->create();
switch_to_blog( $b );
}
$tested_upload_dir = bp_upload_dir();
if ( is_multisite() ) {
restore_current_blog();
}
$this->assertSame( $expected_upload_dir, $tested_upload_dir );
}
/**
* @group bp_is_active
*/
public function test_bp_is_active_component() {
$bp = buddypress();
$reset_active_components = $bp->active_components;
$this->assertTrue( bp_is_active( 'members' ) );
$this->assertFalse( bp_is_active( 'foo' ) );
// Create and activate the foo component
$bp->foo = new BP_Component;
$bp->foo->id = 'foo';
$bp->foo->slug = 'foo';
$bp->foo->name = 'Foo';
$bp->active_components[ $bp->foo->id ] = 1;
$this->assertTrue( bp_is_active( 'foo' ) );
add_filter( 'bp_is_active', '__return_false' );
$this->assertFalse( bp_is_active( 'foo' ) );
remove_filter( 'bp_is_active', '__return_false' );
// Reset buddypress() vars
$bp->active_components = $reset_active_components;
}
/**
* @group bp_is_active
*/
public function test_bp_is_active_feature() {
$bp = buddypress();
$reset_active_components = $bp->active_components;
// Create and activate the foo component
$bp->foo = new BP_Component;
$bp->foo->id = 'foo';
$bp->foo->slug = 'foo';
$bp->foo->name = 'Foo';
$bp->active_components[ $bp->foo->id ] = 1;
// foo did not register 'bar' as a feature
$this->assertFalse( bp_is_active( 'foo', 'bar' ) );
// fake registering the 'bar' feature
$bp->foo->features = array( 'bar' );
$this->assertTrue( bp_is_active( 'foo', 'bar' ) );
// test the feature filter
add_filter( 'bp_is_foo_bar_active', '__return_false' );
$this->assertFalse( bp_is_active( 'foo', 'bar' ) );
remove_filter( 'bp_is_foo_bar_active', '__return_false' );
// test the main component filter
add_filter( 'bp_is_active', '__return_false' );
$this->assertFalse( bp_is_active( 'foo', 'bar' ) );
remove_filter( 'bp_is_active', '__return_false' );
// Reset buddypress() vars
$bp->active_components = $reset_active_components;
}
/**
* @group bp_attachments
*/
public function test_bp_attachments_get_allowed_types() {
$supported = array( 'jpeg', 'gif', 'png' );
$avatar = bp_attachments_get_allowed_types( 'avatar' );
$this->assertSame( $supported, $avatar );
$cover_image = bp_attachments_get_allowed_types( 'cover_image' );
$this->assertSame( $supported, $cover_image );
$images = bp_attachments_get_allowed_types( 'image/' );
foreach ( $images as $image ) {
if ( 'image' !== wp_ext2type( $image ) ) {
$not_image = $image;
}
}
$this->assertTrue( empty( $not_image ) );
}
public function test_emails_should_have_correct_link_color() {
$appearance = bp_email_get_appearance_settings();
$content = 'example';
$link_color = 'style="color: ' . esc_attr( $appearance['highlight_color'] ) . ';';
$result = bp_email_add_link_color_to_template( $content, 'template', 'add-content' );
$this->assertContains( $link_color, $result );
$content = 'example';
$link_color .= 'display: block';
$result = bp_email_add_link_color_to_template( $content, 'template', 'add-content' );
$this->assertContains( $link_color, $result );
}
/**
* @group bp_core_add_page_mappings
*/
public function test_bp_core_add_page_mappings() {
$bp = buddypress();
$reset_bp_pages = $bp->pages;
$expected = array( 'activity', 'groups', 'members' );
if ( is_multisite() ) {
$expected = array( 'activity', 'blogs', 'groups', 'members' );
}
bp_core_add_page_mappings( $bp->active_components );
$bp_pages = array_keys( bp_get_option( 'bp-pages' ) );
sort( $bp_pages );
$this->assertEquals( $expected, $bp_pages );
$bp->pages = $reset_bp_pages;
}
/**
* @group bp_core_add_page_mappings
* @ticket 8187
*/
public function test_bp_core_add_page_mappings_in_multisite_subdirectory() {
if ( ! is_multisite() || is_subdomain_install() ) {
$this->markTestSkipped();
}
$bp = buddypress();
$reset_bp_pages = $bp->pages;
$reset_bp_active_components = $bp->active_components;
$reset_option = bp_get_option( 'bp-pages' );
$b = self::factory()->blog->create( array(
'path' => '/newcomponent/',
) );
$bp->active_components['newcomponent'] = 1;
add_filter( 'bp_core_get_directory_page_default_titles', array( $this, 'add_newcomponent_page_title' ) );
bp_core_add_page_mappings( $bp->active_components );
remove_filter( 'bp_core_get_directory_page_default_titles', array( $this, 'add_newcomponent_page_title' ) );
$bp_pages = bp_get_option( 'bp-pages' );
$new_component_page_id = $bp_pages['newcomponent'];
$this->assertNotSame( 'newcomponent', get_post_field( 'post_name', $new_component_page_id ), 'The component slug should not conflict with subsite name.' );
// Reset the page mapping.
bp_update_option( 'bp-pages', $reset_option );
wp_delete_post( $bp_pages['newcomponent'], true );
$bp->pages = $reset_bp_pages;
$bp->active_components = $reset_bp_active_components;
}
public function add_newcomponent_page_title( $page_default_titles = array() ) {
return array_merge( $page_default_titles, array( 'newcomponent' => 'NewComponent' ) );
}
}