diff --git a/app/Http/Controllers/FamilyActionsController.php b/app/Http/Controllers/FamilyActionsController.php index c831583..6d6ed54 100644 --- a/app/Http/Controllers/FamilyActionsController.php +++ b/app/Http/Controllers/FamilyActionsController.php @@ -89,13 +89,18 @@ class FamilyActionsController extends Controller public function addWife(Request $request, User $user) { $this->validate($request, [ - 'set_wife' => 'required|string|max:255', + 'set_wife_id' => 'nullable', + 'set_wife' => 'required_without:set_wife_id|max:255', ]); - $wife = new User; - $wife->name = $request->get('set_wife'); - $wife->nickname = $request->get('set_wife'); - $wife->gender_id = 2; + if ($request->get('set_wife_id')) { + $wife = User::findOrFail($request->get('set_wife_id')); + } else { + $wife = new User; + $wife->name = $request->get('set_wife'); + $wife->nickname = $request->get('set_wife'); + $wife->gender_id = 2; + } $user->addWife($wife); @@ -105,13 +110,18 @@ class FamilyActionsController extends Controller public function addHusband(Request $request, User $user) { $this->validate($request, [ - 'set_husband' => 'required|string|max:255', + 'set_husband_id' => 'nullable', + 'set_husband' => 'required_without:set_husband_id|max:255', ]); - $husband = new User; - $husband->name = $request->get('set_husband'); - $husband->nickname = $request->get('set_husband'); - $husband->gender_id = 1; + if ($request->get('set_husband_id')) { + $husband = User::findOrFail($request->get('set_husband_id')); + } else { + $husband = new User; + $husband->name = $request->get('set_husband'); + $husband->nickname = $request->get('set_husband'); + $husband->gender_id = 1; + } $user->addHusband($husband); diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index ce9bb00..14daab1 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -82,6 +82,7 @@ @else {{ Form::open(['route' => ['family-actions.add-wife', $currentUser->id]]) }} + {!! FormField::select('set_wife_id', $femalePersonList, ['label' => false]) !!}
{{ Form::text('set_wife', null, ['class' => 'form-control input-sm']) }} @@ -104,6 +105,7 @@ @else {{ Form::open(['route' => ['family-actions.add-husband', $currentUser->id]]) }} + {!! FormField::select('set_husband_id', $malePersonList, ['label' => false]) !!}
{{ Form::text('set_husband', null, ['class' => 'form-control input-sm']) }} diff --git a/tests/Feature/ManageUserFamiliesTest.php b/tests/Feature/ManageUserFamiliesTest.php index 85c84cc..626f9b5 100644 --- a/tests/Feature/ManageUserFamiliesTest.php +++ b/tests/Feature/ManageUserFamiliesTest.php @@ -111,7 +111,6 @@ class ManageUserFamiliesTest extends TestCase $this->seePageIs(route('profile')); $this->seeElement('input', ['name' => 'set_wife']); - $this->submitForm('set_wife_button', [ 'set_wife' => 'Nama Istri', ]); @@ -192,4 +191,48 @@ class ManageUserFamiliesTest extends TestCase $this->assertEquals($mother->nickname, $user->fresh()->mother->nickname); } + + /** @test */ + public function user_can_pick_wife_from_existing_user() + { + $user = $this->loginAsUser(['gender_id' => 1]); + $wife = factory(User::class)->states('female')->create(); + + $this->visit(route('profile')); + $this->seePageIs(route('profile')); + $this->seeElement('input', ['name' => 'set_wife']); + $this->seeElement('select', ['name' => 'set_wife_id']); + + $this->submitForm('set_wife_button', [ + 'set_wife' => '', + 'set_wife_id' => $wife->id, + ]); + + $this->seeInDatabase('couples', [ + 'husband_id' => $user->id, + 'wife_id' => $wife->id, + ]); + } + + /** @test */ + public function user_can_pick_husband_from_existing_user() + { + $user = $this->loginAsUser(['gender_id' => 2]); + $husband = factory(User::class)->states('male')->create(); + + $this->visit(route('profile')); + $this->seePageIs(route('profile')); + $this->seeElement('input', ['name' => 'set_husband']); + $this->seeElement('select', ['name' => 'set_husband_id']); + + $this->submitForm('set_husband_button', [ + 'set_husband' => '', + 'set_husband_id' => $husband->id, + ]); + + $this->seeInDatabase('couples', [ + 'husband_id' => $husband->id, + 'wife_id' => $user->id, + ]); + } }