Break “legacy” setting to “new” conversion into it’s own method.
This commit is contained in:
parent
6c53cfa167
commit
1fc539992c
|
@ -56,33 +56,49 @@ class WC_Register_Legacy_Settings {
|
||||||
foreach ( $legacy_sections as $legacy_section => $legacy_section_label ) {
|
foreach ( $legacy_sections as $legacy_section => $legacy_section_label ) {
|
||||||
$legacy_settings = $this->page->get_settings( $legacy_section );
|
$legacy_settings = $this->page->get_settings( $legacy_section );
|
||||||
foreach ( $legacy_settings as $legacy_setting ) {
|
foreach ( $legacy_settings as $legacy_setting ) {
|
||||||
if ( ! isset( $legacy_setting['id'] ) ) {
|
$new_setting = $this->new_setting_from_legacy( $legacy_setting );
|
||||||
continue;
|
if ( $new_setting ) {
|
||||||
|
$settings[] = $new_setting;
|
||||||
}
|
}
|
||||||
$new_setting = array(
|
|
||||||
'id' => $legacy_setting['id'],
|
|
||||||
'label' => ( ! empty( $legacy_setting['title'] ) ? $legacy_setting['title'] : '' ),
|
|
||||||
'description' => ( ! empty( $legacy_setting['desc'] ) ? $legacy_setting['desc'] : '' ),
|
|
||||||
'type' => $legacy_setting['type'],
|
|
||||||
);
|
|
||||||
if ( isset( $legacy_setting['default'] ) ) {
|
|
||||||
$new_setting['default'] = $legacy_setting['default'];
|
|
||||||
}
|
|
||||||
if ( isset( $legacy_setting['options'] ) ) {
|
|
||||||
$new_setting['options'] = $legacy_setting['options'];
|
|
||||||
}
|
|
||||||
if ( isset( $legacy_setting['desc_tip'] ) ) {
|
|
||||||
if ( true === $legacy_setting['desc_tip'] ) {
|
|
||||||
$new_setting['tip'] = $legacy_setting['desc'];
|
|
||||||
} else if ( ! empty( $legacy_setting['desc_tip'] ) ) {
|
|
||||||
$new_setting['tip'] = $legacy_setting['desc_tip'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$settings[] = $new_setting;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $settings;
|
return $settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a "legacy" setting (WC_Settings_Page::get_settings()) into the format expected
|
||||||
|
* for the REST API Settings Controller
|
||||||
|
*
|
||||||
|
* @param $legacy_setting Settings array, as produced by a subclass of WC_Settings_Page.
|
||||||
|
*
|
||||||
|
* @return array|bool Boolean false if legacy setting has no ID, Array of converted new setting otherwise.
|
||||||
|
*/
|
||||||
|
public function new_setting_from_legacy( $legacy_setting ) {
|
||||||
|
if ( ! isset( $legacy_setting['id'] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$new_setting = array(
|
||||||
|
'id' => $legacy_setting['id'],
|
||||||
|
'label' => ( ! empty( $legacy_setting['title'] ) ? $legacy_setting['title'] : '' ),
|
||||||
|
'description' => ( ! empty( $legacy_setting['desc'] ) ? $legacy_setting['desc'] : '' ),
|
||||||
|
'type' => $legacy_setting['type'],
|
||||||
|
);
|
||||||
|
if ( isset( $legacy_setting['default'] ) ) {
|
||||||
|
$new_setting['default'] = $legacy_setting['default'];
|
||||||
|
}
|
||||||
|
if ( isset( $legacy_setting['options'] ) ) {
|
||||||
|
$new_setting['options'] = $legacy_setting['options'];
|
||||||
|
}
|
||||||
|
if ( isset( $legacy_setting['desc_tip'] ) ) {
|
||||||
|
if ( true === $legacy_setting['desc_tip'] ) {
|
||||||
|
$new_setting['tip'] = $legacy_setting['desc'];
|
||||||
|
} else if ( ! empty( $legacy_setting['desc_tip'] ) ) {
|
||||||
|
$new_setting['tip'] = $legacy_setting['desc_tip'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $new_setting;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -54,4 +54,94 @@ class WC_Tests_Register_Legacy_Settings extends WC_Unit_Test_Case {
|
||||||
$this->assertEquals( $expected, $actual );
|
$this->assertEquals( $expected, $actual );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function new_setting_from_legacy_provider() {
|
||||||
|
return array(
|
||||||
|
// No "id" case
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'type' => 'some-type-with-no-id',
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
),
|
||||||
|
// All optional properties except 'desc_tip'
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'title' => 'Setting Name',
|
||||||
|
'desc' => 'Setting Description',
|
||||||
|
'default' => 'one',
|
||||||
|
'options' => array( 'one', 'two' ),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'label' => 'Setting Name',
|
||||||
|
'description' => 'Setting Description',
|
||||||
|
'default' => 'one',
|
||||||
|
'options' => array( 'one', 'two' ),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Boolean 'desc_tip' defaulting to 'desc' value
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'title' => 'Setting Name',
|
||||||
|
'desc' => 'Setting Description',
|
||||||
|
'desc_tip' => true,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'label' => 'Setting Name',
|
||||||
|
'description' => 'Setting Description',
|
||||||
|
'tip' => 'Setting Description',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// String 'desc_tip'
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'title' => 'Setting Name',
|
||||||
|
'desc' => 'Setting Description',
|
||||||
|
'desc_tip' => 'Setting Tip',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'label' => 'Setting Name',
|
||||||
|
'description' => 'Setting Description',
|
||||||
|
'tip' => 'Setting Tip',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Empty 'title' and 'desc'
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'setting-id',
|
||||||
|
'type' => 'select',
|
||||||
|
'label' => '',
|
||||||
|
'description' => '',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider new_setting_from_legacy_provider
|
||||||
|
* @covers WC_Register_Legacy_Settings::new_setting_from_legacy
|
||||||
|
*/
|
||||||
|
public function test_new_setting_from_legacy( $input, $expected ) {
|
||||||
|
$legacy_settings = new WC_Register_Legacy_Settings( $this->page );
|
||||||
|
|
||||||
|
$actual = $legacy_settings->new_setting_from_legacy( $input );
|
||||||
|
|
||||||
|
$this->assertEquals( $expected, $actual );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue