function generate_args($args = array(), $generation_definitions = null, &$callbacks = null)
 {
     $callbacks = array();
     if (is_null($generation_definitions)) {
         $generation_definitions = $this->default_generation_definitions;
     }
     // Use the same incrementor for all fields belonging to this object.
     $gen = new WP_UnitTest_Generator_Sequence();
     $incr = $gen->get_incr();
     foreach (array_keys($generation_definitions) as $field_name) {
         if (!isset($args[$field_name])) {
             $generator = $generation_definitions[$field_name];
             if (is_scalar($generator)) {
                 $args[$field_name] = $generator;
             } elseif (is_object($generator) && method_exists($generator, 'call')) {
                 $callbacks[$field_name] = $generator;
             } elseif (is_object($generator)) {
                 $args[$field_name] = sprintf($generator->get_template_string(), $incr);
             } else {
                 return new WP_Error('invalid_argument', 'Factory default value should be either a scalar or an generator object.');
             }
         }
     }
     return $args;
 }
 /**
  * @covers GravityView_Edit_Entry::get_edit_link()
  */
 function test_get_edit_link()
 {
     $form = $this->factory->form->create_and_get();
     $editor = $this->factory->user->create_and_set(array('user_login' => 'editor', 'role' => 'editor'));
     $entry = $this->factory->entry->create_and_get(array('form_id' => $form['id'], 'created_by' => $editor->ID));
     $view = $this->factory->view->create_and_get(array('form_id' => $form['id'], 'settings' => array('user_edit' => 1)));
     $this->assertNotEmpty($view, 'There was an error creating the View');
     $post_title = new WP_UnitTest_Generator_Sequence(__METHOD__ . ' %s');
     $post_id = $this->factory->post->create(array('post_title' => $post_title->next(), 'post_content' => sprintf('[gravityview id="%d"]', $view->ID)));
     $nonce_key = GravityView_Edit_Entry::get_nonce_key($view->ID, $entry['form_id'], $entry['id']);
     $nonce = wp_create_nonce($nonce_key);
     ###
     ### NO POST
     ###
     $edit_link_no_post = GravityView_Edit_Entry::get_edit_link($entry, $view->ID);
     // A link to the raw
     $this->assertEquals('?page=gf_entries&view=entry&edit=' . $nonce, $edit_link_no_post);
     $args = array('p' => $post_id, 'entry' => $entry['id'], 'gvid' => $view->ID, 'page' => 'gf_entries', 'view' => 'entry', 'edit' => $nonce);
     // When running all tests, this test thinks we have multiple Views. Correct that.
     GravityView_View::getInstance()->setViewId($view->ID);
     ###
     ### WITH POST
     ###
     $edit_link_with_post = GravityView_Edit_Entry::get_edit_link($entry, $view->ID, $post_id);
     $this->assertEquals(add_query_arg($args, 'http://example.org/'), $edit_link_with_post);
 }
 /**
  * @covers GravityView_Entry_Link_Shortcode::shortcode
  */
 public function test_shortcode()
 {
     $form = $this->factory->form->create_and_get();
     $editor = $this->factory->user->create_and_set(array('user_login' => 'editor', 'role' => 'editor'));
     $entry = $this->factory->entry->create_and_get(array('form_id' => $form['id'], 'created_by' => $editor->ID));
     $view = $this->factory->view->create_and_get(array('form_id' => $form['id'], 'settings' => array('user_edit' => 1)));
     $this->assertNotEmpty($view, 'There was an error creating the View');
     $post_title = new WP_UnitTest_Generator_Sequence(__METHOD__ . ' %s');
     $post_id = $this->factory->post->create(array('post_title' => $post_title->next(), 'post_content' => sprintf('[gravityview id="%d"]', $view->ID)));
     $atts = array('post_id' => $post_id, 'entry_id' => $entry['id'], 'view_id' => $view->ID);
     $this->_test_read($view, $entry, $atts);
     $this->_test_edit($view, $entry, $atts);
     $this->_test_delete($view, $entry, $atts);
 }