From fb32746c81c2c67a27908c77bbeb4832b77460ca Mon Sep 17 00:00:00 2001 From: Bilal Date: Tue, 15 Sep 2020 16:15:51 +0300 Subject: [PATCH] add notice when matching is completed --- app/assets/javascripts/channels/projects.coffee | 4 ++++ app/channels/projects_channel.rb | 11 +++++++++++ app/jobs/match_appearance_releases_job.rb | 12 +++++++++++- app/views/application/_flash.html.erb | 5 ++--- config/locales/en.yml | 2 ++ config/locales/es.yml | 2 ++ .../user_managing_appearance_releases_spec.rb | 16 ++++++++++++++++ spec/jobs/match_appearance_releases_job_spec.rb | 7 +++++++ 8 files changed, 55 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/channels/projects.coffee b/app/assets/javascripts/channels/projects.coffee index 8f6dad1..9840f32 100644 --- a/app/assets/javascripts/channels/projects.coffee +++ b/app/assets/javascripts/channels/projects.coffee @@ -17,6 +17,7 @@ $(document).on "turbolinks:load", -> when "video_status_update" then @showVideoStatusUpdate(data.content) when "download_status_update" then @showDownloadStatusUpdate(data.content) when "conference_recording_ready" then @showDownloadStatusUpdate(data.content) + when "appearance_matching_flash_message" then @showMatchingStatusUpdate(data.content) showVideoStatusUpdate: (content) -> $("[data-ujs-target='video-analysis-msg']").replaceWith content @@ -24,3 +25,6 @@ $(document).on "turbolinks:load", -> showDownloadStatusUpdate: (content) -> $(".flash-message").html content $(".toast").toast('show') + + showMatchingStatusUpdate: (content) -> + $("#flash-message").replaceWith content diff --git a/app/channels/projects_channel.rb b/app/channels/projects_channel.rb index 68ee885..bc5b9c1 100644 --- a/app/channels/projects_channel.rb +++ b/app/channels/projects_channel.rb @@ -33,4 +33,15 @@ class ProjectsChannel < ApplicationCable::Channel content = ApplicationController.render partial: 'application/flash', locals: { flash: flash } broadcast_to project, event: :conference_recording_ready, content: content end + + def self.appearance_matching_flash_message(project, message, flash_type = :notice) + if (flash_type == :notice) + flash = OpenStruct.new notice: message + else + flash = OpenStruct.new alert: message + end + content = ApplicationController.render partial: 'application/flash', locals: { flash: flash } + + broadcast_to project, event: :appearance_matching_flash_message, content: content + end end diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb index 66c7ee0..87c5b26 100644 --- a/app/jobs/match_appearance_releases_job.rb +++ b/app/jobs/match_appearance_releases_job.rb @@ -6,7 +6,11 @@ class MatchAppearanceReleasesJob < ApplicationJob def perform(project, attachments) filtered_attachments_object = filter_attachments attachments - return if filtered_attachments_object[:keys].blank? + if filtered_attachments_object[:keys].blank? + notification = I18n.t 'appearance_releases.create.matching_failed' + ProjectsChannel.appearance_matching_flash_message project, notification, :alert + return + end matching_request = MatchingRequest.create project: project, attachments: filtered_attachments_object[:signed_ids] @@ -17,6 +21,8 @@ class MatchAppearanceReleasesJob < ApplicationJob handle_matches matches, project, key_signed_id_hash handle_unmatches matches, project, key_signed_id_hash matching_request.destroy + + ProjectsChannel.appearance_matching_flash_message project, success_message end private @@ -113,4 +119,8 @@ class MatchAppearanceReleasesJob < ApplicationJob signed_ids: filtered_attachments_signed_ids } end + + def success_message + I18n.t 'appearance_releases.create.matching_completed' + end end diff --git a/app/views/application/_flash.html.erb b/app/views/application/_flash.html.erb index afba291..5eb926c 100644 --- a/app/views/application/_flash.html.erb +++ b/app/views/application/_flash.html.erb @@ -3,14 +3,14 @@
<% if flash.alert.present? %> -
+

<%= flash.alert.html_safe %>

<% elsif flash.notice.present? %> -
+

<%= flash.notice.html_safe %>

@@ -19,4 +19,3 @@ <% end %>
- diff --git a/config/locales/en.yml b/config/locales/en.yml index d390728..7f3654b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -151,6 +151,8 @@ en: failed_import: Failed to create appearance release for files listed below matching_started: Matching started no_attachments: Failed to import - no attachments + matching_completed: Matching completed. Reload page to see new releases + matching_failed: Matching failed edit: heading: Edit Appearance Release form: diff --git a/config/locales/es.yml b/config/locales/es.yml index 78f4ccc..6bb9e2b 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -58,6 +58,8 @@ es: failed_import: Failed to create appearance release for files listed below (ES) matching_started: Matching started (ES) no_attachments: Failed to import - no attachments (ES) + matching_completed: Matching completed (ES) + matching_failed: Matching failed (ES) form: guardian_2_info: heading: Second Guardian Information (if company requires) (ES) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index ee71aae..34fd25f 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -324,6 +324,18 @@ feature 'User managing appearance releases' do expect(page).to have_content no_appearance_releases end + scenario 'Message is shown when matching job is completed', js: true do + visit project_appearance_releases_path(project) + + attach_file import_appearance_release_field, Rails.root.join(file_fixture('person_photo.png')), visible: false + allow(MatchAppearanceReleasesJob).to receive(:perform_later).with(project, anything) + click_button submit_create_button + expect(page).to have_content matching_started + expect(page).to have_content no_appearance_releases + expect(page).not_to have_content matching_started + expect(page).to have_content matching_completed + end + scenario 'user leaving the page is presented with the warning if file upload is in progress', js: true do skip "Test is inconsistently failing in CI" @@ -847,6 +859,10 @@ feature 'User managing appearance releases' do t 'appearance_releases.create.matching_started' end + def matching_completed + t 'appearance_releases.create.matching_completed' + end + def filter_type_all t 'appearance_releases.type_filter_actions.all_releases' end diff --git a/spec/jobs/match_appearance_releases_job_spec.rb b/spec/jobs/match_appearance_releases_job_spec.rb index 84ba636..659c15e 100644 --- a/spec/jobs/match_appearance_releases_job_spec.rb +++ b/spec/jobs/match_appearance_releases_job_spec.rb @@ -10,6 +10,11 @@ describe MatchAppearanceReleasesJob do end describe ".perform_now" do + # before do + # allow(ProjectsChannel).to receive(:appearance_matching_flash_message).with(be_kind_of(Project), I18n.t("appearance_releases.create.matching_completed")) + # end + + it "returns if no attachment is sent" do expect(MatchingRequest).not_to receive(:create) attachments = [] @@ -50,6 +55,8 @@ describe MatchAppearanceReleasesJob do expect(AppearanceRelease.last.contract).not_to be_attached expect(AppearanceRelease.last.person_photo).to be_attached + + # expect(ProjectsChannel).to receive(:appearance_matching_flash_message) end it "creates a new incomplete appearance release for contracts which cannot be matched by BrayniacAI" do