Files
danbooru/test/unit/saved_search_test.rb

97 lines
2.7 KiB
Ruby

require 'test_helper'
require 'helpers/saved_search_test_helper'
require 'fakeweb'
class SavedSearchTest < ActiveSupport::TestCase
include SavedSearchTestHelper
def setup
super
mock_saved_search_service!
Danbooru.config.stubs(:listbooru_enabled?).returns(true)
Danbooru.config.stubs(:listbooru_auth_key).returns("blahblahblah")
Danbooru.config.stubs(:listbooru_server).returns("http://localhost:3001")
end
context "Fetching the post ids for a search" do
setup do
MEMCACHE.expects(:get).returns(nil)
end
teardown do
FakeWeb.clean_registry
end
context "with a name" do
setup do
FakeWeb.register_uri(:get, "http://localhost:3001/users?key=blahblahblah&user_id=1&name=blah", :body => [1,2,3,4].to_json)
end
should "return a list of ids" do
post_ids = SavedSearch.post_ids(1, "blah")
assert_equal([1,2,3,4], post_ids)
end
end
context "without a name" do
setup do
FakeWeb.register_uri(:get, "http://localhost:3001/users?key=blahblahblah&user_id=1&name", :body => [1,2,3,4].to_json)
end
should "return a list of ids" do
post_ids = SavedSearch.post_ids(1)
assert_equal([1,2,3,4], post_ids)
end
end
end
context "Creating a saved search" do
setup do
@user = FactoryGirl.create(:gold_user)
@saved_search = @user.saved_searches.create(:tag_query => " xxx ")
end
should "update the bitpref on the user" do
@user.reload
assert(@user.has_saved_searches?, "should have saved_searches bitpref set")
end
should "normalize whitespace" do
assert_equal("xxx", @saved_search.tag_query)
end
should "send messages" do
assert_equal(%w(create), SavedSearch.sqs_service.commands)
end
end
context "Destroying a saved search" do
setup do
@user = FactoryGirl.create(:gold_user)
@saved_search = @user.saved_searches.create(:tag_query => "xxx")
@saved_search.destroy
end
should "update the bitpref on the user" do
@user.reload
assert(!@user.has_saved_searches?, "should not have the saved_searches bitpref set")
end
should "send messages" do
assert_equal(%w(create delete), SavedSearch.sqs_service.commands)
end
end
context "A user with max saved searches" do
setup do
@user = FactoryGirl.create(:gold_user)
User.any_instance.stubs(:max_saved_searches).returns(0)
@saved_search = @user.saved_searches.create(:tag_query => "xxx")
end
should "not be able to create another saved search" do
assert_equal(["You can only have up to 0 saved searches"], @saved_search.errors.full_messages)
end
end
end