From 3d4c40a014e045d68ac80b6ebe2a4e498805a261 Mon Sep 17 00:00:00 2001 From: Clement Ho Date: Wed, 7 Feb 2018 21:45:03 +0000 Subject: Replace $.ajax in profile.js with axios --- app/assets/javascripts/profile/profile.js | 33 +++++++++++----------- spec/features/profiles/user_visits_profile_spec.rb | 9 ++++++ 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/profile/profile.js b/app/assets/javascripts/profile/profile.js index ba4ac850346..e116ee23601 100644 --- a/app/assets/javascripts/profile/profile.js +++ b/app/assets/javascripts/profile/profile.js @@ -1,7 +1,9 @@ /* eslint-disable comma-dangle, no-unused-vars, class-methods-use-this, quotes, consistent-return, func-names, prefer-arrow-callback, space-before-function-paren, max-len */ import Cookies from 'js-cookie'; -import Flash from '../flash'; -import { getPagePath } from '../lib/utils/common_utils'; +import { getPagePath } from '~/lib/utils/common_utils'; +import axios from '~/lib/utils/axios_utils'; +import { __ } from '~/locale'; +import flash from '../flash'; ((global) => { class Profile { @@ -57,8 +59,8 @@ import { getPagePath } from '../lib/utils/common_utils'; onUpdateNotifs(e, data) { return data.saved ? - new Flash("Notification settings saved", "notice") : - new Flash("Failed to save new settings", "alert"); + flash(__('Notification settings saved'), 'notice') : + flash(__('Failed to save new settings')); } saveForm() { @@ -70,21 +72,18 @@ import { getPagePath } from '../lib/utils/common_utils'; formData.append('user[avatar]', avatarBlob, 'avatar.png'); } - return $.ajax({ + axios({ + method: this.form.attr('method'), url: this.form.attr('action'), - type: this.form.attr('method'), data: formData, - dataType: "json", - processData: false, - contentType: false, - success: response => new Flash(response.message, 'notice'), - error: jqXHR => new Flash(jqXHR.responseJSON.message, 'alert'), - complete: () => { - window.scrollTo(0, 0); - // Enable submit button after requests ends - return self.form.find(':input[disabled]').enable(); - } - }); + }) + .then(({ data }) => flash(data.message, 'notice')) + .then(() => { + window.scrollTo(0, 0); + // Enable submit button after requests ends + self.form.find(':input[disabled]').enable(); + }) + .catch(error => flash(error.message)); } setNewRepoCookie() { diff --git a/spec/features/profiles/user_visits_profile_spec.rb b/spec/features/profiles/user_visits_profile_spec.rb index 6601d3039ed..a5d80439143 100644 --- a/spec/features/profiles/user_visits_profile_spec.rb +++ b/spec/features/profiles/user_visits_profile_spec.rb @@ -12,4 +12,13 @@ describe 'User visits their profile' do it 'shows correct menu item' do expect(page).to have_active_navigation('Profile') end + + describe 'profile settings', :js do + it 'saves updates' do + fill_in 'user_bio', with: 'bio' + click_button 'Update profile settings' + + expect(page).to have_content('Profile was successfully updated') + end + end end -- cgit v1.2.1