Fix #5312: StatementInvalid Error When Querying the media_assets Attribute of Uploads

This commit is contained in:
evazion
2022-10-25 14:15:47 -05:00
parent c96d60a840
commit 6413b9abcd
5 changed files with 71 additions and 8 deletions

7
test/factories/ai_tag.rb Normal file
View File

@@ -0,0 +1,7 @@
FactoryBot.define do
factory(:ai_tag) do
tag
media_asset
score { 1.0 }
end
end

View File

@@ -57,6 +57,8 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest
should respond_to_search({}).with { [@upload] }
should respond_to_search(source: "http://example.com/foobar").with { @upload }
should respond_to_search(status: "completed").with { @upload }
should respond_to_search(media_assets: { file_size: 1_000_000 }).with { @upload }
should respond_to_search(media_assets: { md5: "blah" }).with { }
end
end

View File

@@ -261,15 +261,40 @@ class SearchableTest < ActiveSupport::TestCase
end
end
context "for a `has_many through: ...` association" do
context "for a `has_many through: has_many` association" do
subject { Upload }
should "work" do
@user = create(:user)
@media_asset = create(:media_asset)
@upload1 = create(:upload, upload_media_assets: [build(:upload_media_asset, media_asset: @media_asset)])
@upload2 = create(:upload, upload_media_assets: [build(:upload_media_asset, media_asset: @media_asset)])
@upload1 = create(:upload, uploader: @user, upload_media_assets: [build(:upload_media_asset, media_asset: @media_asset)])
@upload2 = create(:upload, uploader: @user, upload_media_assets: [build(:upload_media_asset, media_asset: @media_asset)])
@upload3 = create(:upload, uploader: @user, upload_media_assets: [build(:upload_media_asset)])
assert_search_equals([@upload2, @upload1], media_asset: { md5: @media_asset.md5 })
assert_search_equals([@upload2, @upload1], media_assets: { md5: @media_asset.md5 }, current_user: @user)
end
end
context "for a `has_one through: has_one` association" do
subject { Post }
should "work" do
@post1 = create(:post_with_file)
@post2 = create(:post)
assert_search_equals([@post1], media_metadata: { id: @post1.media_metadata.id })
end
end
context "for a `has_one through: belongs_to` association" do
subject { AITag }
should "work" do
@post = create(:post_with_file)
@ai_tag1 = create(:ai_tag, media_asset: @post.media_asset)
@ai_tag2 = create(:ai_tag)
assert_search_equals([@ai_tag1], post: { id: @post.id })
end
end
end