Skip to content

Commit 9085cec

Browse files
committed
Move json hash from users controller to NicknameUnavailable
1 parent 982b763 commit 9085cec

3 files changed

Lines changed: 24 additions & 14 deletions

File tree

app/controllers/users_controller.rb

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,8 @@ def create
217217
end
218218
rescue ActiveRecord::StatementInvalid
219219
render json: { success: false, message: I18n.t("login.something_already_taken") }
220-
rescue DiscourseHub::NicknameUnavailable
221-
render json: { success: false,
222-
message: I18n.t(
223-
"login.errors",
224-
errors:I18n.t(
225-
"login.not_available", suggestion: UserNameSuggester.suggest(params[:username])
226-
)
227-
)
228-
}
220+
rescue DiscourseHub::NicknameUnavailable=> e
221+
render json: e.response_message
229222
rescue RestClient::Forbidden
230223
render json: { errors: [I18n.t("discourse_hub.access_token_problem")] }
231224
end

lib/discourse_hub.rb

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,24 @@
33

44
module DiscourseHub
55

6-
class NicknameUnavailable < RuntimeError; end
6+
class NicknameUnavailable < RuntimeError
7+
def initialize(nickname)
8+
@nickname = nickname
9+
end
10+
11+
def response_message
12+
{
13+
success: false,
14+
message: I18n.t(
15+
"login.errors",
16+
errors:I18n.t(
17+
"login.not_available", suggestion: UserNameSuggester.suggest(@nickname)
18+
)
19+
)
20+
}
21+
end
22+
23+
end
724

825
def self.nickname_available?(nickname)
926
json = get('/users/nickname_available', {nickname: nickname})
@@ -20,7 +37,7 @@ def self.register_nickname(nickname, email)
2037
if json.has_key?('success')
2138
true
2239
else
23-
raise NicknameUnavailable # TODO: report ALL the errors
40+
raise NicknameUnavailable.new(nickname) # TODO: report ALL the errors
2441
end
2542
end
2643

@@ -34,7 +51,7 @@ def self.change_nickname(current_nickname, new_nickname)
3451
if json.has_key?('success')
3552
true
3653
else
37-
raise NicknameUnavailable # TODO: report ALL the errors
54+
raise NicknameUnavailable.new(new_nickname) # TODO: report ALL the errors
3855
end
3956
end
4057

@@ -93,4 +110,4 @@ def self.access_token
93110
def self.accepts
94111
[:json, 'application/vnd.discoursehub.v1']
95112
end
96-
end
113+
end

spec/controllers/users_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ def post_user
477477
context 'when nickname is unavailable in DiscourseHub' do
478478
before do
479479
SiteSetting.stubs(:call_discourse_hub?).returns(true)
480-
DiscourseHub.stubs(:register_nickname).raises(DiscourseHub::NicknameUnavailable)
480+
DiscourseHub.stubs(:register_nickname).raises(DiscourseHub::NicknameUnavailable.new(@user.name))
481481
end
482482
let(:create_params) {{
483483
name: @user.name,

0 commit comments

Comments
 (0)