/** * @dataProvider provide_save_data * * @param bool $response * @param WP_Post $post * @param bool $is_nonce_valid * @param bool $is_post_revision * @param int $user_can_times * @param bool $user_can * @param int $update_times */ public function test_save($response, WP_Post $post, $is_nonce_valid, $is_post_revision, $user_can_times, $user_can, $update_times) { $post_type = Mockery::mock('tfrommen\\ExternalContent\\Models\\PostType'); $post_type->shouldReceive('get_post_type')->andReturn('post_type'); $nonce = Mockery::mock('tfrommen\\ExternalContent\\Models\\Nonce'); $nonce->shouldReceive('is_valid')->andReturn($is_nonce_valid); $meta_key = 'meta_key'; WP_Mock::onFilter('external_content_meta_key')->with('_external_content')->reply($meta_key); WP_Mock::wpPassthruFunction('esc_attr', array('times' => 1, 'args' => array(WP_Mock\Functions::type('string')))); /** @var tfrommen\ExternalContent\Models\PostType $post_type */ /** @var tfrommen\ExternalContent\Models\Nonce $nonce */ $testee = new Testee($post_type, $nonce); WP_Mock::wpFunction('wp_is_post_revision', array('times' => 1, 'args' => array(WP_Mock\Functions::type('int')), 'return' => $is_post_revision)); WP_Mock::wpFunction('current_user_can', array('times' => $user_can_times, 'args' => array('edit_post', WP_Mock\Functions::type('int')), 'return' => $user_can)); $meta_value = 'meta_value'; $_POST[$meta_key] = $meta_value; WP_Mock::wpFunction('update_post_meta', array('times' => $update_times, 'args' => array(WP_Mock\Functions::type('int'), $meta_key, $meta_value), 'return' => $response)); /** @var WP_Post $post */ $this->assertSame($response, $testee->save(42, $post)); $this->assertConditionsMet(); }
/** * Constructor. Set up the properties. * * @param Model $model Model. * @param PostTypeModel $post_type Post type model. * @param NonceModel $nonce Nonce model. */ public function __construct(Model $model, PostTypeModel $post_type, NonceModel $nonce) { $this->meta_key = $model->get_meta_key(); $this->post_type = $post_type->get_post_type(); $this->nonce = $nonce; }