Jak testovat odeslání formuláře, pokud je volání obslužné metody řešeno callbackem?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
fary
Člen | 155
+
0
-

Mám takovýto formulář:

use Nette\Application\UI\Form;

final class CreateArticleForm
{

	/** @var ArticleRepository */
	private $articleRepository;


	/**
	 * @param ArticleRepository $articleRepository
	 */
	public function __construct(ArticleRepository $articleRepository)
	{
		$this->articleRepository = $articleRepository;
	}


	public function create($values = NULL)
	{
		$form = new Form;

		$this->configure($form);

		if ($values) {
			$form->setValues($values);
		}

		return $form;
	}


	public function configure(Form $form)
	{
		$form->addText('name', 'Name')
			->setRequired('Please enter name for this article.');

		$form->addSubmit('submit', 'Save');
	}


	public function save(Form $form)
	{
		$values = $form->getValues();

		$this->articleRepository->create($values);

		$form->getPresenter()->redirect('default');
	}

}

a pak v presenteru tento formulář vytvářím:

use Nette\Application\UI\Presenter;

final class ArticlePresenter extends Presenter
{

	/**
	 * @inject
	 * @var CreateArticleForm $createArticleForm
	 */
	public $createArticleForm;


	protected function createComponentCreateArticleForm()
	{
		$form = $this->createArticleForm->create();
		$form->onSuccess[] = function() use ($form) {
			$this->createArticleForm->save($form);
		};

		return $form;
	}

}

Zpracování formuláře není řešeno metodou presenteru, ale vlastní metodou třídy formuláře. Chtěl bych požádat o radu, jak by měl správně vypadat unit test, který otestuje vytvoření takového formuláře a odešle data do metody CreateArticleForm::save().