# PUT /achievements/1.json
def update
@achievement = find_achievement params
+ if @achievement.nil? and params.has_key?(:task_id)
+ # create new achievement
+ @achievement = Achievement.new
+ @achievement.user_id = current_user.id
+ @achievement.task_id = params[:task_id]
+ end
check_user!
respond_to do |format|
if @achievement.update_attributes(params[:achievement])
format.html { redirect_to @achievement, notice: 'Achievement was successfully updated.' }
- format.json { head :no_content }
+ format.json { render :json => @achievement }
else
format.html { render action: "edit" }
format.json { render json: @achievement.errors, status: :unprocessable_entity }
alt = JSON.parse @response.body
assert_equal achievement['result'], alt['result']
end
+
+ test 'create new achievement via /tasks/:task_id/achievement' do
+ auth_token = obtaion_auth_token @user.email, @password
+
+ task = tasks :two
+ assert_difference('Achievement.count') do
+ put "/tasks/#{task.id}/achievement.json", :auth_token => auth_token, :achievement => { :result => '1, 4, 7' }
+ end
+ assert_response :success
+ achievement = JSON.parse @response.body
+ assert_equal achievement['task_id'], task.id
+ end
end