I am using Laravel 5.1 and whenever I test a page with two forms the second form is always submitted. If I remove the second form, or swap the order of the forms, the test works (but other tests then break). The page behaves as expected in the browser. Any help is appreciated.
edit.blade.php
@section('content')
<!-- Update Form -->
{!! Form::model($article,
[
'id'=>'editForm',
'method' => 'PATCH',
'action' => ['ArticlesController@update', $article->id]
]) !!}
<!-- Title Field -->
{!! Form::label('title', 'Title:') !!}
{!! Form::text('title', null, ['id' => 'title']) !!}
<!-- Content Field -->
{!! Form::label('content', 'Content:') !!}
{!! Form::textarea('content', null, ['id' => 'content']) !!}
<!-- Save Button -->
{!! Form::submit('Save', ['id' => 'save']) !!}
{!! Form::close() !!}
<!-- Delete Form -->
{!! Form::model($article,
[
'id'=>'deleteForm',
'method' => 'DELETE',
'action' => ['ArticlesController@destroy', $article->id]
]) !!}
<!-- Delete Button -->
{!! Form::submit('Delete', ['id' => 'delete']) !!}
{!! Form::close() !!}
@stop
ArticlesTest.php
/**
* @group articles
* @test
*/
public function it_edits_an_article()
{
//$this->markTestSkipped('Test doesn\'t work with two forms on one page.');
$article1 = factory(Figurosity\Articles\Article::class)->make();
$article2 = factory(Figurosity\Articles\Article::class)->make();
$user = factory(User::class)->create();
$user->articles()->save($article1);
$this->seeInDatabase('articles',
[
'title' => $article1->title,
'user_id' => $user->id
]);
$this->actingAs($user)
->visit($this->articlesUrl)
->see($article1->title)
->visit('/articles/'.$article1->slug.'/edit')
->type($article2->title, '#title')
->type($article2->content, '#content')
->press('Save') //this presses the delete button
->seePageIs($this->articlesUrl)
->see($article2->title)
->visit('/whats-new/'.$article1->slug)
->see($article2->content)
->visit('/latest/'.$article2->slug)
->see($article2->content)
->seeInDatabase('articles', ['title' => $article2->title]);
}
Aucun commentaire:
Enregistrer un commentaire