Setting IDs do not need to be unique across the entire system.. just the group.

This commit is contained in:
Justin Shreve 2016-09-07 15:24:04 -07:00
parent 49676d1781
commit b665f5e1c6
2 changed files with 24 additions and 1 deletions

View File

@ -139,7 +139,7 @@ class WC_REST_Settings_Options_Controller extends WC_REST_Controller {
// Get the option value
if ( is_array( $option_key ) ) {
$option = get_option( $option_key[0] );
$setting['value'] = $option[ $option_key[1] ];
$setting['value'] = isset( $option[ $option_key[1] ] ) ? $option[ $option_key[1] ] : '';
} else {
$setting['value'] = WC_Admin_Settings::get_option( $option_key );
}

View File

@ -603,6 +603,29 @@ class Settings extends WC_REST_Unit_Test_Case {
'tip' => 'This controls the email subject line. Leave blank to use the default subject: <code>[{site_title}] New customer order ({order_number}) - {order_date}</code>.',
'value' => 'This is my subject',
), $setting );
// test updating another subject and making sure it works with a "similar" id
$request = new WP_REST_Request( 'GET', sprintf( '/wc/v1/settings/%s/%s', 'email_customer_new_account', 'subject' ) );
$response = $this->server->dispatch( $request );
$setting = $response->get_data();
$this->assertEmpty( $setting['value'] );
// test update
$request = new WP_REST_Request( 'PUT', sprintf( '/wc/v1/settings/%s/%s', 'email_customer_new_account', 'subject' ) );
$request->set_body_params( array(
'value' => 'This is my new subject',
) );
$response = $this->server->dispatch( $request );
$setting = $response->get_data();
$this->assertEquals( 'This is my new subject', $setting['value'] );
// make sure the other is what we left it
$response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/settings/email_new_order/subject' ) );
$setting = $response->get_data();
$this->assertEquals( 'This is my subject', $setting['value'] );
}
}