OSDN Git Service

Limit achievement object's members
authoreagletmt <eagletmt@gmail.com>
Wed, 31 Oct 2012 09:41:36 +0000 (18:41 +0900)
committereagletmt <eagletmt@gmail.com>
Wed, 31 Oct 2012 09:41:36 +0000 (18:41 +0900)
/achievements.json returns only "result" and "task_id".

CutenServer/app/models/achievement.rb
CutenServer/test/functional/achievements_controller_test.rb
CutenServer/test/integration/access_achievement_json_test.rb

index bf7f254..0f8a611 100644 (file)
@@ -1,4 +1,6 @@
 class Achievement < ActiveRecord::Base
+  include JsonWithoutTimestamps
+
   belongs_to :user
   belongs_to :task
   attr_accessible :result
@@ -7,6 +9,10 @@ class Achievement < ActiveRecord::Base
   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
index 5fe5546..8f8f0f8 100644 (file)
@@ -17,6 +17,18 @@ class AchievementsControllerTest < ActionController::TestCase
     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
index 1236489..ffdf8a2 100644 (file)
@@ -18,7 +18,8 @@ class AccessAchievementJsonTest < ActionDispatch::IntegrationTest
     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