b571303385
It doesn't actually work, and even if we could make it work reliably we are better off if the records always know to go to the right shard. It does make the interface a bit more complicated as we need to select the right shard class with `for(account_id)`.
34 lines
1.6 KiB
Ruby
34 lines
1.6 KiB
Ruby
require "test_helper"
|
|
|
|
class SearchTest < ActiveSupport::TestCase
|
|
include SearchTestHelper
|
|
|
|
test "search" do
|
|
# Search cards and comments
|
|
card = @board.cards.create!(title: "layout design", creator: @user)
|
|
comment_card = @board.cards.create!(title: "Some card", creator: @user)
|
|
comment_card.comments.create!(body: "overflowing text", creator: @user)
|
|
|
|
results = Search::Record.for(@user.account_id).search("layout", user: @user)
|
|
assert results.find { |it| it.card_id == card.id }
|
|
|
|
results = Search::Record.for(@user.account_id).search("overflowing", user: @user)
|
|
assert results.find { |it| it.card_id == comment_card.id && it.searchable_type == "Comment" }
|
|
|
|
# Don't include inaccessible boards
|
|
other_user = User.create!(name: "Other User", account: @account)
|
|
inaccessible_board = Board.create!(name: "Inaccessible Board", account: @account, creator: other_user)
|
|
accessible_card = @board.cards.create!(title: "searchable content", creator: @user)
|
|
inaccessible_card = inaccessible_board.cards.create!(title: "searchable content", creator: other_user)
|
|
|
|
results = Search::Record.for(@user.account_id).search("searchable", user: @user)
|
|
assert results.find { |it| it.card_id == accessible_card.id }
|
|
assert_not results.find { |it| it.card_id == inaccessible_card.id }
|
|
|
|
# Empty board_ids returns no results
|
|
user_without_access = User.create!(name: "No Access User", account: @account)
|
|
results = Search::Record.for(user_without_access.account_id).search("anything", user: user_without_access)
|
|
assert_empty results
|
|
end
|
|
end
|