Commit 7cc9a131 by Toby Lawrence Committed by GitHub

Merge pull request #204 from edx/perf/pluck-not-map-voting-ids

Plucking instead of mapping.
parents 3d902ee8 e9435879
......@@ -111,11 +111,11 @@ class User
end
def upvoted_ids
Content.up_voted_by(self).map(&:id)
Content.up_voted_by(self).pluck(:_id)
end
def downvoted_ids
Content.down_voted_by(self).map(&:id)
Content.down_voted_by(self).pluck(:_id)
end
def followers
......
......@@ -45,7 +45,12 @@ describe "app" do
last_response.status.should == 400
end
end
describe "GET /api/v1/users/:user_id" do
let(:author) { User.find_by(external_id: "1") }
let(:reader) { User.find_by(external_id: "2") }
let(:thread) { make_standalone_thread(author) }
it "returns user information" do
get "/api/v1/users/1"
last_response.status.should == 200
......@@ -54,10 +59,28 @@ describe "app" do
res["external_id"].should == user1.external_id
res["username"].should == user1.username
end
it "returns 404 if user does not exist" do
get "/api/v1/users/3"
last_response.status.should == 404
end
it "returns no threads when user hasn't voted" do
get "/api/v1/users/1", complete: "true"
last_response.status.should == 200
res = parse(last_response.body)
res["upvoted_ids"].should == []
end
it "returns threads when user votes" do
reader.vote(thread, :up)
get "/api/v1/users/2", complete: "true"
last_response.status.should == 200
res = parse(last_response.body)
res["upvoted_ids"].should == [thread.id.to_s]
end
describe "Returns threads_count and comments_count" do
before(:each) { setup_10_threads }
......
require 'spec_helper'
require 'unicode_shared_examples'
describe User do
let(:author) { create_test_user(666) }
let(:reader) { create_test_user(667) }
let(:thread) { make_standalone_thread(author) }
before(:each) do
[Comment, CommentThread, User].each(&:delete_all).each(&:remove_indexes).each(&:create_indexes)
end
it "should have no votes if it never voted" do
reader.upvoted_ids.should == []
end
it "should have one vote if it voted once" do
reader.upvoted_ids.should == []
reader.vote(thread, :up)
reader.upvoted_ids.should == [thread._id]
end
end
......@@ -342,6 +342,17 @@ def make_comment(author, parent, text)
comment
end
def make_standalone_thread(author)
make_thread(
author,
"standalone thread 0",
DFLT_COURSE_ID,
"pdq",
:discussion,
:standalone
)
end
# add standalone threads and comments to the @threads and @comments hashes
# using the namespace "standalone t#{index}" for threads and "standalone t#{index} c#{i}" for comments
# takes an index param if used within an iterator, otherwise will namespace using 0 for thread index
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment