Browse Source

Add child to a user

Added request validation on set mother, father and child
pull/3/head
Nafies Luthfi 9 years ago
parent
commit
89e67d14f5
  1. 30
      app/Http/Controllers/FamilyActionsController.php
  2. 4
      resources/views/home.blade.php
  3. 1
      routes/web.php
  4. 27
      tests/Feature/ManageUserFamiliesTest.php
  5. 4
      tests/TestCase.php

30
app/Http/Controllers/FamilyActionsController.php

@ -9,6 +9,10 @@ class FamilyActionsController extends Controller
{
public function setFather(Request $request, User $user)
{
$this->validate($request, [
'set_father' => 'required|string|max:255',
]);
$father = new User;
$father->nickname = $request->get('set_father');
$father->gender_id = 1;
@ -20,6 +24,10 @@ class FamilyActionsController extends Controller
public function setMother(Request $request, User $user)
{
$this->validate($request, [
'set_mother' => 'required|string|max:255',
]);
$mother = new User;
$mother->nickname = $request->get('set_mother');
$mother->gender_id = 2;
@ -28,4 +36,26 @@ class FamilyActionsController extends Controller
return back();
}
public function addChild(Request $request)
{
$this->validate($request, [
'add_child_name' => 'required|string|max:255',
'add_child_gender_id' => 'required|in:1,2',
]);
$child = new User;
$child->nickname = $request->get('add_child_name');
$child->gender_id = $request->get('add_child_gender_id');
$child->save();
$user = auth()->user();
if ($user->gender_id == 1)
$child->setFather($user);
else
$child->setMother($user);
return back();
}
}

4
resources/views/home.blade.php

@ -5,7 +5,7 @@
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-default">
<div class="panel-heading">Profile</div>
<div class="panel-heading">Profile : {{ $currentUser->name }}</div>
<div class="panel-body">
<table class="table table-condensed">
@ -68,7 +68,7 @@
</li>
@endforeach
<li class="list-group-item">
{{ Form::open() }}
{{ Form::open(['route' => ['family-actions.add-child', $currentUser->id]]) }}
<div class="row">
<div class="col-md-4">
{!! FormField::text('add_child_name', ['label' => 'Nama Anak']) !!}

1
routes/web.php

@ -21,3 +21,4 @@ Route::get('/home', 'HomeController@index')->name('home');
Route::get('/profile', 'HomeController@index')->name('profile');
Route::post('family-actions/{user}/set-father', 'FamilyActionsController@setFather')->name('family-actions.set-father');
Route::post('family-actions/{user}/set-mother', 'FamilyActionsController@setMother')->name('family-actions.set-mother');
Route::post('family-actions/{user}/add-child', 'FamilyActionsController@addChild')->name('family-actions.add-child');

27
tests/Feature/ManageUserFamiliesTest.php

@ -34,12 +34,6 @@ class ManageUserFamiliesTest extends TestCase
$this->visit(route('profile'));
$this->seePageIs(route('profile'));
// $this->see($user->nickname);
// $this->seeElement('input', ['name' => 'set_mother']);
$this->seeElement('input', ['name' => 'set_mother']);
// $this->seeElement('input', ['name' => 'add_child_name']);
// $this->seeElement('input', ['name' => 'add_child_gender_id']);
$this->submitForm('set_mother_button', [
'set_mother' => 'Nama Ibu',
]);
@ -50,4 +44,25 @@ class ManageUserFamiliesTest extends TestCase
$this->assertEquals('Nama Ibu', $user->fresh()->mother->nickname);
}
/** @test */
public function user_can_add_childrens()
{
$user = $this->loginAsUser(['gender_id' => 1]);
$this->visit(route('profile'));
$this->seePageIs(route('profile'));
$this->seeElement('input', ['name' => 'add_child_name']);
$this->seeElement('input', ['name' => 'add_child_gender_id']);
$this->submitForm('Tambah Anak', [
'add_child_name' => 'Nama Anak 1',
'add_child_gender_id' => 1,
]);
$this->seeInDatabase('users', [
'nickname' => 'Nama Anak 1',
'gender_id' => 1,
'father_id' => $user->id,
]);
}
}

4
tests/TestCase.php

@ -11,9 +11,9 @@ abstract class TestCase extends BaseTestCase
protected $baseUrl = 'http://localhost';
protected function loginAsUser()
protected function loginAsUser($overrides = [])
{
$user = factory(User::class)->create();
$user = factory(User::class)->create($overrides);
$this->actingAs($user);
return $user;

Loading…
Cancel
Save