/** * Setup tests if possible * * @since 0.0.9 * * @access protected * * @param array $tests */ protected function setup_tests($tests) { if (!empty($tests)) { foreach ($tests as $test_detail) { $plugin = helpers::v('plugin', $test_detail, 0); if (is_string($plugin) && ingot_acceptable_plugin_for_price_test($plugin)) { $class_name = $this->class_name($plugin); if (class_exists($class_name)) { $this->tests[$plugin] = helpers::v('plugin', 'test_ID', 0); $this->increase_total($test_detail); $this->add_to_product_map($test_detail); new $class_name($test_detail['test_ID'], helpers::v('a_or_b', $test_detail, 'a')); } } } } }
/** * Get price of a product * * @since 1.1.0 * * @param string $plugin Plugin slug edd|woo * @param int $id Product ID * * @return string */ public static function get_price($plugin, $id) { if (ingot_acceptable_plugin_for_price_test($plugin)) { $price_callback = self::get_price_callback($plugin); if ($price_callback && is_callable($price_callback)) { $price = call_user_func($price_callback, $id); return ingot_sanitize_amount($price); } } return ingot_sanitize_amount(0); }
/** * Test checking validity of price sub_type with filter * * @since 1.1.0 * * @group price * @group helpers * * @covers ingot_acceptable_plugin_for_price_test() * @covers ingot_accepted_plugins_for_price_tests() * @covers \ingot\testing\types::allowed_price_types() */ public function testAllowedSubTypesFilter() { add_filter('ingot_accepted_plugins_for_price_tests', function ($plugins) { $plugins['roy2020'] = 'Roy!'; return $plugins; }); $this->assertTrue(in_array('roy2020', \ingot\testing\types::allowed_price_types())); $this->assertTrue(ingot_acceptable_plugin_for_price_test('roy2020')); $this->assertTrue(in_array('roy2020', ingot_accepted_plugins_for_price_tests())); foreach (['woo', 'edd'] as $plugin) { $this->assertTrue(in_array($plugin, \ingot\testing\types::allowed_price_types())); $this->assertTrue(ingot_acceptable_plugin_for_price_test($plugin)); $this->assertTrue(in_array($plugin, ingot_accepted_plugins_for_price_tests())); } }