mercredi 17 octobre 2018

Testing updating user profile data

I make http tests in my Laravel 5.7 application with profile page(which has "Profile View" page and "Profile Details" editor ), like :

        $newUser->save();
        $testing_user_id = $newUser->id;
        $newUserGroup           = new UserGroup();
        $newUserGroup->group_id = USER_ACCESS_USER;
        $newUserGroup->user_id  = $newUser->id;

        $userGroup= Group::find($newUserGroup->group_id);

        $newUserSessionData = [
            [
            'loggedUserAccessGroups' => ['group_id' => $newUserGroup->group_id, 'group_name' => !empty($userGroup) ? $userGroup->name : ''],
            'logged_user_ip'         => '0',
            ]
        ];
        $newUserGroup->save();

        // 3. OPEN PROFILE PAGE BLOCK START
        $response = $this->actingAs($newUser)
                         ->withSession($newUserSessionData)
                         ->get('/profile/view');
        // 3. OPEN PROFILE PAGE BLOCK END


        // 4. MAKING CHECKING PROFILE FOR USER CREATED AT 2) BLOCK START

        $response->assertStatus(200);    // to use HTTP_RESPONSE_OK
        $response->assertSee(htmlspecialchars("Profile : " . $newUser->username, ENT_QUOTES));

        // 4. MAKING CHECKING PROFILE FOR USER CREATED AT 2) BLOCK END


        // 5. OPEN PROFILE DETAILS VIEW PAGE BLOCK START
        $response = $this->actingAs($newUser)
                         ->withSession($newUserSessionData)
                         ->get('profile/view');
        $response->assertStatus(200);
        $response->assertSee(htmlspecialchars("Profile : " . $newUser->username, ENT_QUOTES));

        // 5. OPEN PROFILE DETAILS VIEW PAGE BLOCK END


        // 6. OPEN PROFILE DETAILS EDITOR PAGE BLOCK START
        $response = $this->actingAs($newUser)
                         ->withSession($newUserSessionData)
                         ->get('profile/edit-details');   // http://local-votes.com/profile/edit-details
        $response->assertStatus(HTTP_RESPONSE_OK);
        $response->assertSee(htmlspecialchars("Profile : Details"));

        // 6. OPEN PROFILE DETAILS EDITOR PAGE BLOCK END


        // 7. MODIFY PROFILE DETAILS PAGE BLOCK START
        $response = $this->actingAs($newUser)
                         ->withSession($newUserSessionData)
                         ->post('profile/edit-details-post', [
                             'first_name' => 'Modified : ' . $newUser->first_name,
                             'last_name'  => 'Modified : ' . $newUser->last_name,
                             'phone'      => 'Modified : ' . $newUser->phone,
                             'website'    => 'Modified : ' . $newUser->website,
                             '_token'     => $csrf_token
                         ]);
//        $response->assertStatus(205);   // ???

        // 7. MODIFY PROFILE DETAILS PAGE BLOCK END


        ////////////////////////
        // 8. OPEN PROFILE DETAILS VIEW PAGE AFTER MODIFICATIONS BLOCK START
        $response = $this->actingAs($newUser)
                         ->withSession($newUserSessionData)
                         ->get('profile/view');
        $response->assertStatus(200);
        $response->assertSee( htmlspecialchars('Modified : ' . $newUser->last_name) );

        // 8. OPEN PROFILE DETAILS VIEW PAGE AFTER MODIFICATIONS BLOCK END

New user is added and Profile View page is opened ok, but there are problems at step // 7. MODIFY PROFILE DETAILS PAGE BLOCK START as I see in sql trace new user is inserted but not updated.

In my control app/Http/Controllers/ProfileController.php update method is defined with validation request :

public function update_details(ProfileUserDetailsRequest $request)
{
    $userProfile = Auth::user();
    $requestData = $request->all();
    $userProfile->first_name = $requestData['first_name'];
    $userProfile->last_name  = $requestData['last_name'];
    $userProfile->phone      = $requestData['phone'];
    $userProfile->website    = $requestData['website'];
    $userProfile->updated_at = now();
    $userProfile->save();
    $this->setFlashMessage('Profile updated successfully !', 'success', 'Profile');
    return Redirect::route('profile-view');
} // public function update_details(ProfileUserDetailsRequest $request)

1) Can the reason be in ProfileUserDetailsRequest and how to deal this ? My profile details editor works ok.

My route defined as :

Route::group(array('prefix' => 'profile', 'middleware' => ['auth', 'isVerified']), function(){
    Route::post('edit-details-post', array(
        'as'      => 'profile-edit-details-post',
        'uses'    => 'ProfileController@update_details'
    ));

At first I tried PUT, but after that I tried POST - the same without results.

2) Can you advice some proper way of User Profile details checking on // 7. MODIFY PROFILE DETAILS PAGE BLOCK START step ?

Thanks!



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire