add post previews to user profile, improved ui for tag subscriptions

This commit is contained in:
albert
2013-02-21 18:18:08 -05:00
parent d7fb091bd1
commit 23c0cb5529
9 changed files with 234 additions and 96 deletions

View File

@@ -14,6 +14,19 @@ class TagSubscriptionTest < ActiveSupport::TestCase
end
context "A tag subscription" do
context "for a user with too many subscriptions" do
setup do
Danbooru.config.stubs(:max_tag_subscriptions).returns(0)
@user = FactoryGirl.create(:user)
end
should "fail" do
sub = FactoryGirl.build(:tag_subscription, :tag_query => "aaa bbb", :creator => @user, :name => "zzz")
sub.save
assert_equal(["Creator can subscribe up to 0 tags"], sub.errors.full_messages)
end
end
should "find the union of all posts for each tag in its tag query" do
posts = []
user = FactoryGirl.create(:user)
@@ -21,10 +34,12 @@ class TagSubscriptionTest < ActiveSupport::TestCase
posts << FactoryGirl.create(:post, :tag_string => "bbb")
posts << FactoryGirl.create(:post, :tag_string => "ccc")
posts << FactoryGirl.create(:post, :tag_string => "ddd")
sub_1 = FactoryGirl.create(:tag_subscription, :tag_query => "aaa bbb", :creator => user, :name => "zzz")
sub_2 = FactoryGirl.create(:tag_subscription, :tag_query => "ccc", :creator => user, :name => "yyy")
assert_equal([posts[1].id, posts[0].id], TagSubscription.find_posts(user.id, "zzz").map(&:id))
assert_equal([posts[2].id, posts[1].id, posts[0].id], TagSubscription.find_posts(user.id).map(&:id))
CurrentUser.scoped(user, "127.0.0.1") do
sub_1 = FactoryGirl.create(:tag_subscription, :tag_query => "aaa bbb", :name => "zzz")
sub_2 = FactoryGirl.create(:tag_subscription, :tag_query => "ccc", :name => "yyy")
assert_equal([posts[1].id, posts[0].id], TagSubscription.find_posts(user.id, "zzz").map(&:id))
assert_equal([posts[2].id, posts[1].id, posts[0].id], TagSubscription.find_posts(user.id).map(&:id))
end
end
should "cache its tag query results" do
@@ -33,26 +48,30 @@ class TagSubscriptionTest < ActiveSupport::TestCase
posts << FactoryGirl.create(:post, :tag_string => "aaa")
posts << FactoryGirl.create(:post, :tag_string => "bbb")
posts << FactoryGirl.create(:post, :tag_string => "ccc")
sub = FactoryGirl.create(:tag_subscription, :tag_query => "aaa bbb", :creator => user, :name => "zzz")
assert_equal("#{posts[1].id},#{posts[0].id}", sub.post_ids)
CurrentUser.scoped(user, "127.0.0.1") do
sub = FactoryGirl.create(:tag_subscription, :tag_query => "aaa bbb", :name => "zzz")
assert_equal("#{posts[1].id},#{posts[0].id}", sub.post_ids)
end
end
should "find posts based on its cached post ids" do
user = FactoryGirl.create(:user)
subs = []
subs << FactoryGirl.create(:tag_subscription, :tag_query => "aaa", :creator => user, :name => "zzz")
subs << FactoryGirl.create(:tag_subscription, :tag_query => "bbb", :creator => user, :name => "yyy")
assert_equal([], TagSubscription.find_posts(user.id))
assert_equal([], TagSubscription.find_posts(user.id, "zzz"))
assert_equal([], TagSubscription.find_posts(user.id, "yyy"))
posts = []
posts << FactoryGirl.create(:post, :tag_string => "aaa")
posts << FactoryGirl.create(:post, :tag_string => "bbb")
posts << FactoryGirl.create(:post, :tag_string => "ccc")
subs.each {|x| x.process; x.save}
assert_equal([posts[1].id, posts[0].id], TagSubscription.find_posts(user.id).map(&:id))
assert_equal([posts[0].id], TagSubscription.find_posts(user.id, "zzz").map(&:id))
assert_equal([posts[1].id], TagSubscription.find_posts(user.id, "yyy").map(&:id))
CurrentUser.scoped(user, "127.0.0.1") do
subs = []
subs << FactoryGirl.create(:tag_subscription, :tag_query => "aaa", :name => "zzz")
subs << FactoryGirl.create(:tag_subscription, :tag_query => "bbb", :name => "yyy")
assert_equal([], TagSubscription.find_posts(user.id))
assert_equal([], TagSubscription.find_posts(user.id, "zzz"))
assert_equal([], TagSubscription.find_posts(user.id, "yyy"))
posts = []
posts << FactoryGirl.create(:post, :tag_string => "aaa")
posts << FactoryGirl.create(:post, :tag_string => "bbb")
posts << FactoryGirl.create(:post, :tag_string => "ccc")
subs.each {|x| x.process; x.save}
assert_equal([posts[1].id, posts[0].id], TagSubscription.find_posts(user.id).map(&:id))
assert_equal([posts[0].id], TagSubscription.find_posts(user.id, "zzz").map(&:id))
assert_equal([posts[1].id], TagSubscription.find_posts(user.id, "yyy").map(&:id))
end
end
end
@@ -66,8 +85,12 @@ class TagSubscriptionTest < ActiveSupport::TestCase
posts << FactoryGirl.create(:post, :tag_string => "bbb")
posts << FactoryGirl.create(:post, :tag_string => "ccc")
subscriptions = []
subscriptions << FactoryGirl.create(:tag_subscription, :tag_query => "aaa", :creator => users[0])
subscriptions << FactoryGirl.create(:tag_subscription, :tag_query => "bbb", :creator => users[1])
CurrentUser.scoped(users[0], "127.0.0.1") do
subscriptions << FactoryGirl.create(:tag_subscription, :tag_query => "aaa")
end
CurrentUser.scoped(users[1], "127.0.0.1") do
subscriptions << FactoryGirl.create(:tag_subscription, :tag_query => "bbb")
end
TagSubscription.process_all
subscriptions.each {|x| x.reload}
assert_equal("#{posts[0].id}", subscriptions[0].post_ids)