/** * Sanitizes the setting data. * * @param string[][] $data Settings data. * * @return string[][] */ public function sanitize($data) { if (!$this->settings_page->current_user_can('edit')) { $error = $this->settings_error_factory->create('no-permission-to-edit'); $error->add(); $data = $this->option->get(); return $data; } $sanitized_data = array(); foreach ($data as $source => $targets) { if (!is_string($source) || $source === '') { $error = $this->settings_error_factory->create('invalid-taxonomy'); $error->add(); } else { foreach ($targets as $target => $link) { if (!is_string($target) || $target === '') { $error = $this->settings_error_factory->create('invalid-taxonomy'); $error->add(); } else { switch ((int) $link) { case 1: $sanitized_data = $this->add_link($sanitized_data, $source, $target); break; case 2: $sanitized_data = $this->add_link($sanitized_data, $source, $target, TRUE); break; } } } } } return $sanitized_data; }
/** * @covers tfrommen\LinkedTaxonomies\SettingsError\Factory::create * @dataProvider provide_create_data * * @param string $expected * @param string $type * * @return void */ public function test_create($expected, $type) { $testee = new Testee(); WP_Mock::wpPassthruFunction('_x', array('args' => array(Mockery::type('string'), Mockery::type('string'), 'linked-taxonomies'))); WP_Mock::wpPassthruFunction('esc_html'); $this->assertSame($expected, get_class($testee->create($type))); $this->assertConditionsMet(); }