/achievements.json returns only "result" and "task_id".
class Achievement < ActiveRecord::Base
+ include JsonWithoutTimestamps
+
belongs_to :user
belongs_to :task
attr_accessible :result
validates_uniqueness_of :task_id, :scope => :user_id
validate :validate_results
+ def as_json(options = {})
+ super options.merge({:except => (options[:except] || []) + [:id, :user_id]})
+ end
+
def results
split_result result
end
assert_not_nil assigns(:achievements)
end
+ test "should get index with JSON" do
+ get :index, :format => :json
+ assert_response :success
+ assert_not_nil assigns(:achievements)
+ j = JSON.parse @response.body
+ assert j.is_a?(Array)
+ assert_equal 1, j.size
+ a = j[0]
+ assert_equal @achievement.result, a['result']
+ assert_equal @achievement.task.id, a['task_id']
+ end
+
test "should get new" do
get :new
assert_response :success
post "/achievements.json", :auth_token => @auth_token, :achievement => { :task_id => @task.id, :result => '100' }
assert_response :created
j = JSON.parse @response.body
- assert_equal j['user_id'], @user.id
+ assert_equal @task.id, j['task_id']
+ assert_equal '100', j['result']
end
test 'update an achievement' do