Fixed Activity filter and added Activity Unit Test

This commit is contained in:
Justin Foell
2019-10-04 15:50:08 -05:00
parent 319b220aa3
commit 00812e55e8
11 changed files with 130 additions and 64 deletions
+21 -13
View File
@@ -47,19 +47,6 @@ class WPStrava {
private function __construct() {
$this->settings = new WPStrava_Settings();
$this->auth = WPStrava_Auth::get_auth( 'refresh' );
$this->auth->hook();
if ( is_admin() ) {
$this->settings->hook();
} else {
add_action( 'init', array( $this, 'register_shortcodes' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts' ) );
}
// Register widgets.
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
}
/**
@@ -75,6 +62,27 @@ class WPStrava {
return self::$instance;
}
/**
* Function to install hooks at WP runtime.
*
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function hook() {
$this->auth->hook();
if ( is_admin() ) {
$this->settings->hook();
} else {
add_action( 'init', array( $this, 'register_shortcodes' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts' ) );
}
// Register widgets.
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
}
/**
* Magic method to access activity, routes, settings, etc.
*
+1 -1
View File
@@ -78,7 +78,7 @@ abstract class WPStrava_Auth {
return rawurlencode( admin_url( "options-general.php?page={$page_name}" ) );
}
// was fetch_token();
// Was fetch_token();
private function token_exchange_initial( $code ) {
$settings = WPStrava::get_instance()->settings;
$client_id = $settings->client_id;
-1
View File
@@ -111,7 +111,6 @@ class WPStrava_RouteShortcode {
private function get_table( $route_details, $som ) {
$strava_som = WPStrava_SOM::get_som( $som );
$elevation_title = '<th>' . __( 'Elevation Gain', 'wp-strava' ) . '</th>';
$elevation = '<td>' . $strava_som->elevation( $route_details->elevation_gain ) . '</td>';
$elevation_label = '<td>' . $strava_som->get_elevation_label() . '</td>';
+6 -6
View File
@@ -14,17 +14,17 @@ class WPStrava_SOMEnglish extends WPStrava_SOM {
* @return string Distance in miles.
*/
public function distance( $m ) {
return number_format( $m / 1609.344, 2 );
return number_format_i18n( $m / 1609.344, 2 );
}
/**
* Change miles to meters.
*
* @param float|string $dist Distance in miles.
* @return string Distance in meters.
* @param float $dist Distance in miles.
* @return float Distance in meters.
*/
public function distance_inverse( $dist ) {
return number_format( $dist * 1609.344, 2 );
return (float) number_format( $dist * 1609.344, 2, '.', '' );
}
/**
@@ -43,7 +43,7 @@ class WPStrava_SOMEnglish extends WPStrava_SOM {
* @return string Miles per hour.
*/
public function speed( $mps ) {
return number_format( $mps * 2.2369, 2 );
return number_format_i18n( $mps * 2.2369, 2 );
}
/**
@@ -93,7 +93,7 @@ class WPStrava_SOMEnglish extends WPStrava_SOM {
* @return string Elevation in feet.
*/
public function elevation( $m ) {
return number_format( $m / 0.3048, 2 );
return number_format_i18n( $m / 0.3048, 2 );
}
/**
+6 -6
View File
@@ -14,17 +14,17 @@ class WPStrava_SOMMetric extends WPStrava_SOM {
* @return string Distance in kilometers.
*/
public function distance( $m ) {
return number_format( $m / 1000, 2 );
return number_format_i18n( $m / 1000, 2 );
}
/**
* Change kilometers to meters.
*
* @param float|string $dist Distance in kilometers.
* @return string Distance in meters.
* @param float $dist Distance in kilometers.
* @return float Distance in meters.
*/
public function distance_inverse( $dist ) {
return number_format( $dist * 1000, 2 );
return (float) number_format( $dist * 1000, 2, '.', '' );
}
/**
@@ -43,7 +43,7 @@ class WPStrava_SOMMetric extends WPStrava_SOM {
* @return string Kilometers per hour.
*/
public function speed( $mps ) {
return number_format( $mps * 3.6, 2 );
return number_format_i18n( $mps * 3.6, 2 );
}
/**
@@ -94,7 +94,7 @@ class WPStrava_SOMMetric extends WPStrava_SOM {
* @return string Elevation in meters.
*/
public function elevation( $m ) {
return number_format( $m, 2 );
return number_format_i18n( $m, 2 );
}
/**
+22 -31
View File
@@ -16,17 +16,6 @@ class WPStrava_Settings {
private $option_page = 'wp-strava-settings-group';
private $adding_athlete = true;
/**
* Settings constructor.
*
* @author Justin Foell <justin@foell.org>
* @since 2.0
*/
public function __construct() {
$this->ids = $this->get_ids();
}
/**
* Register actions & filters for menus and authentication.
*
@@ -34,6 +23,9 @@ class WPStrava_Settings {
* @since 0.62
*/
public function hook() {
// Load IDs for any subsequent actions.
$this->ids = $this->get_ids();
add_action( 'admin_init', array( $this, 'register_strava_settings' ) );
add_action( 'admin_menu', array( $this, 'add_strava_menu' ) );
add_filter( 'plugin_action_links_' . WPSTRAVA_PLUGIN_NAME, array( $this, 'settings_link' ) );
@@ -260,7 +252,7 @@ class WPStrava_Settings {
*
* @param string $client_secret
* @return string
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 1.2.0
*/
public function sanitize_client_secret( $client_secret ) {
@@ -574,12 +566,12 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Update options with new Client ID and Info.
*
* @param int $id Strava API Client ID
* @param string $secret Strava API Client Secret
* @param stdClass $info
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function save_info( $id, $secret, $info ) {
@@ -595,7 +587,7 @@ class WPStrava_Settings {
*
* @param int $key Strava Client ID
* @return boolean True if Client ID is in $this->ids, false otherwise.
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function filter_by_id( $key ) {
@@ -606,10 +598,9 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Remove the client ID and Secret (they're saved in the strava_info option).
*
* @return void
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function delete_id_secret() {
@@ -618,11 +609,11 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Check to see if settings have been updated.
*
* @param [type] $value
* @param array $value Data array from pre_set_transient_settings_errors filter.
* @return boolean
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function is_settings_updated( $value ) {
@@ -630,10 +621,10 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Whether or not we're on the options page.
*
* @return boolean
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function is_option_page() {
@@ -641,10 +632,10 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Whether or not we're on the WP-Strava settings page.
*
* @return boolean
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function is_settings_page() {
@@ -652,10 +643,10 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Get the WP-Strava settings page name.
*
* @return string
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function get_page_name() {
@@ -663,10 +654,10 @@ class WPStrava_Settings {
}
/**
* Undocumented function
* Whether or not we're adding a new athlete.
*
* @return boolean
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
private function is_adding_athlete() {
@@ -707,7 +698,7 @@ class WPStrava_Settings {
*
* @param array $data Plugin data with readme additions.
* @param array $response Response from wp.org.
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 1.7.3
*/
public function plugin_update_message( $data, $response ) {
@@ -721,7 +712,7 @@ class WPStrava_Settings {
*
* @param string $file Relative path to plugin, i.e. wp-strava/wp-strava.php.
* @param array $plugin Plugin data with readme additions.
* @author Justin Foell <justin.foell@webdevstudios.com>
* @author Justin Foell <justin@foell.org>
* @since 1.7.3
*/
public function ms_plugin_update_message( $file, $plugin ) {
+57
View File
@@ -0,0 +1,57 @@
<?php
use \WP_Mock\Tools\TestCase;
class WPStrava_ActivityTest extends TestCase {
private $activity;
private $activities;
public function setUp() : void {
\WP_Mock::setUp();
$this->activity = new WPStrava_Activity();
$activity0 = new stdClass();
$activity1 = new stdClass();
$activity2 = new stdClass();
$activity0->distance = 100;
$activity1->distance = 1600;
$activity2->distance = 45000;
$this->activities = array(
$activity0,
$activity1,
$activity2,
);
}
public function tearDown() : void {
\WP_Mock::tearDown();
}
public function test_object() {
$this->assertInstanceOf( 'WPStrava_Activity', $this->activity );
}
/**
* Test that we only get the 45,000 meter activity when filtering greater than 10.00 kilometers.
*
* @author Justin Foell <justin@foell.org>
* @since 2.0.0
*/
public function test_get_activities_longer_than() {
\WP_Mock::userFunction(
'get_option',
array(
'args' => 'strava_som',
'times' => 1,
'return' => 'metric',
)
);
$expected = array( $this->activities[2] );
$actual = $this->activity->get_activities_longer_than( $this->activities, '10' );
$this->assertEquals( $expected, $actual );
}
}
+7 -3
View File
@@ -7,9 +7,14 @@ class WPStrava_SOMEnglishTest extends TestCase {
private $som;
public function setUp() : void {
\WP_Mock::setUp();
$this->som = new WPStrava_SOMEnglish();
}
public function tearDown() : void {
\WP_Mock::tearDown();
}
public function test_object() {
$this->assertInstanceOf( 'WPStrava_SOMEnglish', $this->som );
}
@@ -26,14 +31,13 @@ class WPStrava_SOMEnglishTest extends TestCase {
}
/**
* Test that 6.213712 miles is 10,000.00 meters using both string and float inputs.
* Test that 6.213712 miles is 10,000.00 meters using float input.
*
* @author Justin Foell <justin@foell.org>
* @since 1.7.1
*/
public function test_distance_inverse() {
$this->assertEquals( '10,000.00', $this->som->distance_inverse( '6.213712' ) );
$this->assertEquals( '10,000.00', $this->som->distance_inverse( 6.213712 ) );
$this->assertEquals( 10000.00, $this->som->distance_inverse( 6.213712 ) );
}
/**
+2 -3
View File
@@ -26,14 +26,13 @@ class WPStrava_SOMMetricTest extends TestCase {
}
/**
* Test that 42.195 km is 42,195.00 meters using both string and float inputs.
* Test that 42.195 km is 42,195.00 meters using float input.
*
* @author Justin Foell <justin@foell.org>
* @since 1.7.1
*/
public function test_distance_inverse() {
$this->assertEquals( '42,195.00', $this->som->distance_inverse( '42.195' ) );
$this->assertEquals( '42,195.00', $this->som->distance_inverse( 42.195 ) );
$this->assertEquals( 42195.00, $this->som->distance_inverse( 42.195 ) );
}
/**
+7
View File
@@ -8,3 +8,10 @@ require_once dirname( __FILE__ ) . '/../includes/autoload.php';
require_once dirname( __FILE__ ) . '/../vendor/autoload.php';
WP_Mock::bootstrap();
// Pseudo mocks for WP functions.
if ( ! function_exists( 'number_format_i18n' ) ) :
function number_format_i18n( $number, $decimals ) {
return number_format( $number, $decimals );
}
endif;
+1
View File
@@ -44,3 +44,4 @@ function wpstrava_load_plugin_textdomain() {
add_action( 'plugins_loaded', 'wpstrava_load_plugin_textdomain' );
$wpstrava = WPStrava::get_instance();
$wpstrava->hook();