diff --git a/app/models/bot/alegre.rb b/app/models/bot/alegre.rb index b6d94e19f7..13a788c586 100644 --- a/app/models/bot/alegre.rb +++ b/app/models/bot/alegre.rb @@ -151,7 +151,7 @@ def self.run(body) if body.dig(:event) == 'create_project_media' && !pm.nil? Rails.logger.info("[Alegre Bot] [ProjectMedia ##{pm.id}] This item was just created, processing...") self.get_language(pm) - if ['audio', 'image', 'video'].include?(self.get_pm_type(pm)) + if self.get_pm_type(pm) == "audio" || self.get_pm_type(pm) == "image" self.relate_project_media(pm) else self.send_to_media_similarity_index(pm) diff --git a/app/models/concerns/alegre_v2.rb b/app/models/concerns/alegre_v2.rb index 93a7110210..ba64e50e43 100644 --- a/app/models/concerns/alegre_v2.rb +++ b/app/models/concerns/alegre_v2.rb @@ -131,14 +131,6 @@ def generic_package_media(project_media, params) ).merge(params) end - def generic_package_video(project_media, params) - generic_package_media(project_media, params) - end - - def delete_package_video(project_media, _field, params) - generic_package_video(project_media, params) - end - def generic_package_image(project_media, params) generic_package_media(project_media, params) end @@ -175,10 +167,6 @@ def get_context(project_media, field=nil) context end - def store_package_video(project_media, _field, params) - generic_package_video(project_media, params) - end - def store_package_image(project_media, _field, params) generic_package_image(project_media, params) end @@ -291,7 +279,7 @@ def relate_project_media(project_media, field=nil) end def get_items_with_similar_media_v2(media_url, threshold, team_ids, type) - alegre_path = ['audio', 'image', 'video'].include?(type) ? self.sync_path_for_type(type) : "/#{type}/similarity/search/" + alegre_path = ['audio', 'image'].include?(type) ? self.sync_path_for_type(type) : "/#{type}/similarity/search/" # FIXME: Stop using this method from v1 once all media types are supported by v2 # FIXME: Alegre crashes if `media_url` was already requested before, this is why I append a hash self.get_items_with_similar_media("#{media_url}?hash=#{SecureRandom.hex}", threshold, team_ids, alegre_path) diff --git a/test/models/bot/alegre_2_test.rb b/test/models/bot/alegre_2_test.rb index 8efc3f2ddd..e6b812047b 100644 --- a/test/models/bot/alegre_2_test.rb +++ b/test/models/bot/alegre_2_test.rb @@ -32,7 +32,7 @@ def teardown pm1 = create_project_media team: @team, media: create_uploaded_video pm2 = create_project_media team: @team, media: create_uploaded_video pm3 = create_project_media team: @team, media: create_uploaded_video - Bot::Alegre.stubs(:request).with('post', '/similarity/sync/video', @params).returns({ + Bot::Alegre.stubs(:request).with('post', '/video/similarity/search/', @params).returns({ result: [ { context: [ diff --git a/test/models/bot/alegre_test.rb b/test/models/bot/alegre_test.rb index e187a033ea..732166a51c 100644 --- a/test/models/bot/alegre_test.rb +++ b/test/models/bot/alegre_test.rb @@ -101,7 +101,6 @@ def teardown end test "should unarchive item after running" do - WebMock.stub_request(:delete, 'http://alegre/text/similarity/').to_return(body: {success: true}.to_json) stub_configs({ 'alegre_host' => 'http://alegre', 'alegre_token' => 'test' }) do WebMock.stub_request(:delete, 'http://alegre/text/similarity/').to_return(status: 200, body: '{}') pm = create_project_media @@ -213,13 +212,8 @@ def teardown end test "should use OCR data for similarity matching" do - WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json) - WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: { - 'result': { - 'language': 'en', - 'confidence': 1.0 - } - }.to_json) + WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}') + WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}') pm = create_project_media team: @team pm2 = create_project_media team: @team Bot::Alegre.stubs(:get_items_with_similar_description).returns({ pm2.id => {:score=>0.9, :context=>{"team_id"=>@team.id, "field"=>"original_description", "project_media_id"=>pm2.id, "has_custom_id"=>true}, :model=>"elasticsearch"} }) @@ -266,14 +260,8 @@ def teardown # This test to reproduce errbit error CHECK-1218 test "should match to existing parent" do - WebMock.stub_request(:delete, 'http://alegre:3100/text/similarity/').to_return(body: {success: true}.to_json) - WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json) - WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: { - 'result': { - 'language': 'en', - 'confidence': 1.0 - } - }.to_json) + WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}') + WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}') pm_s = create_project_media team: @team pm = create_project_media team: @team pm2 = create_project_media team: @team @@ -289,14 +277,9 @@ def teardown end test "should use transcription data for similarity matching" do + WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}') WebMock.stub_request(:delete, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}') - WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json) - WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: { - 'result': { - 'language': 'en', - 'confidence': 1.0 - } - }.to_json) + WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}') json_schema = { type: 'object', required: ['job_name'], @@ -321,13 +304,8 @@ def teardown end test "should check existing relationship before create a new one" do - WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json) - WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: { - 'result': { - 'language': 'en', - 'confidence': 1.0 - } - }.to_json) + WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}') + WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}') pm = create_project_media team: @team pm2 = create_project_media team: @team pm3 = create_project_media team: @team diff --git a/test/models/bot/alegre_v2_test.rb b/test/models/bot/alegre_v2_test.rb index 3b0f95a66b..a79d740f2f 100644 --- a/test/models/bot/alegre_v2_test.rb +++ b/test/models/bot/alegre_v2_test.rb @@ -64,14 +64,6 @@ def teardown assert_equal Bot::Alegre.delete_path(pm1), "/image/similarity/" end - test "should have host and paths for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - assert_equal Bot::Alegre.host, CheckConfig.get('alegre_host') - assert_equal Bot::Alegre.sync_path(pm1), "/similarity/sync/video" - assert_equal Bot::Alegre.async_path(pm1), "/similarity/async/video" - assert_equal Bot::Alegre.delete_path(pm1), "/video/similarity/" - end - test "should release and reconnect db" do RequestStore.store[:pause_database_connection] = true assert_equal Bot::Alegre.release_db.class, Thread::ConditionVariable @@ -89,11 +81,6 @@ def teardown assert_equal Bot::Alegre.generic_package(pm1, "image"), {:doc_id=>Bot::Alegre.item_doc_id(pm1, "image"), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}} end - test "should create a generic_package for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - assert_equal Bot::Alegre.generic_package(pm1, "video"), {:doc_id=>Bot::Alegre.item_doc_id(pm1, "video"), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}} - end - test "should create a generic_package_audio" do pm1 = create_project_media team: @team, media: create_uploaded_audio assert_equal Bot::Alegre.generic_package_audio(pm1, {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)} @@ -108,13 +95,6 @@ def teardown assert_equal Bot::Alegre.store_package(pm1, "image", {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)} end - test "should create a generic_package_video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - assert_equal Bot::Alegre.generic_package_image(pm1, {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)} - assert_equal Bot::Alegre.store_package_image(pm1, "video", {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)} - assert_equal Bot::Alegre.store_package(pm1, "video", {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)} - end - test "should create a context for audio" do pm1 = create_project_media team: @team, media: create_uploaded_audio assert_equal Bot::Alegre.get_context(pm1, "audio"), {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true} @@ -125,11 +105,6 @@ def teardown assert_equal Bot::Alegre.get_context(pm1, "image"), {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true} end - test "should create a context for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - assert_equal Bot::Alegre.get_context(pm1, "video"), {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true} - end - test "should create a delete_package for audio" do pm1 = create_project_media team: @team, media: create_uploaded_audio package = Bot::Alegre.delete_package(pm1, "audio") @@ -148,15 +123,6 @@ def teardown assert_equal package[:quiet], false end - test "should create a delete_package for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - package = Bot::Alegre.delete_package(pm1, "video") - assert_equal package[:doc_id], Bot::Alegre.item_doc_id(pm1, nil) - assert_equal package[:context], {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true} - assert_equal package[:url].class, String - assert_equal package[:quiet], false - end - test "should run audio async request" do pm1 = create_project_media team: @team, media: create_uploaded_audio response = { @@ -197,11 +163,6 @@ def teardown assert_equal Bot::Alegre.isolate_relevant_context(pm1, {"context"=>[{"team_id"=>pm1.team_id}]}), {"team_id"=>pm1.team_id} end - test "should isolate relevant_context for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - assert_equal Bot::Alegre.isolate_relevant_context(pm1, {"context"=>[{"team_id"=>pm1.team_id}]}), {"team_id"=>pm1.team_id} - end - test "should return field or type on get_target_field for audio" do pm1 = create_project_media team: @team, media: create_uploaded_audio Bot::Alegre.stubs(:get_type).returns(nil) @@ -216,13 +177,6 @@ def teardown Bot::Alegre.unstub(:get_type) end - test "should return field or type on get_target_field for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - Bot::Alegre.stubs(:get_type).returns(nil) - assert_equal Bot::Alegre.get_target_field(pm1, "blah"), "blah" - Bot::Alegre.unstub(:get_type) - end - test "should generate per model threshold for text" do p = create_project team: @team pm1 = create_project_media project: p, quote: "testing short text", team: @team @@ -242,12 +196,6 @@ def teardown assert_equal Bot::Alegre.get_per_model_threshold(pm1, sample), {:threshold=>0.9} end - test "should generate per model threshold for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - sample = [{:value=>0.9, :key=>"video_hash_suggestion_threshold", :automatic=>false, :model=>"hash"}] - assert_equal Bot::Alegre.get_per_model_threshold(pm1, sample), {:threshold=>0.9} - end - test "should get target field for audio" do pm1 = create_project_media team: @team, media: create_uploaded_audio assert_equal Bot::Alegre.get_target_field(pm1, nil), "audio" @@ -258,11 +206,6 @@ def teardown assert_equal Bot::Alegre.get_target_field(pm1, nil), "image" end - test "should get target field for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - assert_equal Bot::Alegre.get_target_field(pm1, nil), "video" - end - test "should parse similarity results" do pm1 = create_project_media team: @team, media: create_uploaded_audio results = [ @@ -528,7 +471,7 @@ def teardown assert_equal Bot::Alegre.get_items(pm1, nil), {(pm1.id+1)=>{:score=>0.91, :context=>{"team_id"=>pm1.team_id, "has_custom_id"=>true, "project_media_id"=>(pm1.id+1)}, :model=>"audio", :source_field=>"audio", :target_field=>"audio", :relationship_type=>Relationship.suggested_type}} end - test "should get_confirmed_items" do + test "should get_confirmed_items zzz" do pm1 = create_project_media team: @team, media: create_uploaded_audio response = { "result": [ @@ -705,21 +648,7 @@ def teardown test "should relate project media for image" do pm1 = create_project_media team: @team, media: create_uploaded_image pm2 = create_project_media team: @team, media: create_uploaded_image - Bot::Alegre.stubs(:get_similar_items_v2).returns({pm2.id=>{:score=>0.91, :context=>{"team_id"=>pm2.team_id, "has_custom_id"=>true, "project_media_id"=>pm2.id}, :model=>"image", :source_field=>"image", :target_field=>"image", :relationship_type=>Relationship.suggested_type}}) - relationship = nil - assert_difference 'Relationship.count' do - relationship = Bot::Alegre.relate_project_media(pm1) - end - assert_equal relationship.source, pm2 - assert_equal relationship.target, pm1 - assert_equal relationship.relationship_type, Relationship.suggested_type - Bot::Alegre.unstub(:get_similar_items_v2) - end - - test "should relate project media for video" do - pm1 = create_project_media team: @team, media: create_uploaded_video - pm2 = create_project_media team: @team, media: create_uploaded_video - Bot::Alegre.stubs(:get_similar_items_v2).returns({pm2.id=>{:score=>0.91, :context=>{"team_id"=>pm2.team_id, "has_custom_id"=>true, "project_media_id"=>pm2.id}, :model=>"video", :source_field=>"video", :target_field=>"video", :relationship_type=>Relationship.suggested_type}}) + Bot::Alegre.stubs(:get_similar_items_v2).returns({pm2.id=>{:score=>0.91, :context=>{"team_id"=>pm2.team_id, "has_custom_id"=>true, "project_media_id"=>pm2.id}, :model=>"audio", :source_field=>"audio", :target_field=>"audio", :relationship_type=>Relationship.suggested_type}}) relationship = nil assert_difference 'Relationship.count' do relationship = Bot::Alegre.relate_project_media(pm1) @@ -747,13 +676,4 @@ def teardown pm = create_project_media team: @team, media: create_uploaded_image assert_equal({}, Bot::Alegre.get_similar_items_v2(pm, nil)) end - - test "should not relate project media for video if disabled on workspace" do - tbi = TeamBotInstallation.where(team: @team, user: @bot).last - tbi.set_video_similarity_enabled = false - tbi.save! - Bot::Alegre.stubs(:merge_suggested_and_confirmed).never - pm = create_project_media team: @team, media: create_uploaded_video - assert_equal({}, Bot::Alegre.get_similar_items_v2(pm, nil)) - end end