add post previews to user profile, improved ui for tag subscriptions
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user