From c976e9a256a3566083015db529624d92fc44f0ae Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Mon, 21 Aug 2023 23:57:59 +0200 Subject: [PATCH 01/21] Fetch live app info if no edit info is present --- deliver/lib/deliver/upload_metadata.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 7bfd3e2f84d..fd80227c02b 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -222,7 +222,7 @@ def upload(options) app_info_worker.start # Update categories - app_info = fetch_edit_app_info(app) + app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) if app_info category_id_map = {} @@ -437,6 +437,12 @@ def fetch_edit_app_info(app, wait_time: 10) end end + def fetch_live_app_info(app, wait_time: 10) + retry_if_nil("Cannot find live app info", wait_time: wait_time) do + app.fetch_live_app_info + end + end + def retry_if_nil(message, tries: 5, wait_time: 10) loop do tries -= 1 @@ -453,7 +459,7 @@ def retry_if_nil(message, tries: 5, wait_time: 10) # Finding languages to enable def verify_available_info_languages!(options, app, languages) - app_info = fetch_edit_app_info(app) + app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) unless app_info UI.user_error!("Cannot update languages - could not find an editable info") From 23ea7c0d44de915722ffa77d188a2fa3c220a5ef Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Mon, 28 Aug 2023 23:48:35 +0200 Subject: [PATCH 02/21] Add comments to explain the fallback --- deliver/lib/deliver/upload_metadata.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index fd80227c02b..84a3d5b8ae2 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -222,6 +222,11 @@ def upload(options) app_info_worker.start # Update categories + # When there are iOS and macOS implementations of the same app, + # fetch_edit_app_info will fail when trying to fetch data for one platform + # if the other is in not editable state. + # We still keep fetch_edit_app_info as first option to make sure + # latest data is fetched when apps are in an editable state. app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) if app_info category_id_map = {} @@ -459,6 +464,11 @@ def retry_if_nil(message, tries: 5, wait_time: 10) # Finding languages to enable def verify_available_info_languages!(options, app, languages) + # When there are iOS and macOS implementations of the same app, + # fetch_edit_app_info will fail when trying to fetch data for one platform + # if the other is in not editable state. + # We still keep fetch_edit_app_info as first option to make sure + # latest data is fetched when apps are in an editable state. app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) unless app_info From 9453b775164ce970180980b6174ff519638356df Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Wed, 30 Aug 2023 23:53:09 +0200 Subject: [PATCH 03/21] Check App Info localization only when new metadata contains App Info --- deliver/lib/deliver/upload_metadata.rb | 31 ++++++++++---------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 84a3d5b8ae2..25e5c1b7105 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -89,7 +89,7 @@ def upload(options) enabled_languages = detect_languages(options) app_store_version_localizations = verify_available_version_languages!(options, app, enabled_languages) unless options[:edit_live] - app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] + app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] or !is_updating_app_info(options) if options[:edit_live] # not all values are editable when using live_version @@ -222,12 +222,7 @@ def upload(options) app_info_worker.start # Update categories - # When there are iOS and macOS implementations of the same app, - # fetch_edit_app_info will fail when trying to fetch data for one platform - # if the other is in not editable state. - # We still keep fetch_edit_app_info as first option to make sure - # latest data is fetched when apps are in an editable state. - app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) + app_info = fetch_edit_app_info(app) if app_info category_id_map = {} @@ -442,12 +437,6 @@ def fetch_edit_app_info(app, wait_time: 10) end end - def fetch_live_app_info(app, wait_time: 10) - retry_if_nil("Cannot find live app info", wait_time: wait_time) do - app.fetch_live_app_info - end - end - def retry_if_nil(message, tries: 5, wait_time: 10) loop do tries -= 1 @@ -462,14 +451,18 @@ def retry_if_nil(message, tries: 5, wait_time: 10) end end + # Checking if the metadata to update includes App Info + def is_updating_app_info(options) + LOCALISED_APP_VALUES.keys.each do |key| + return true unless options[key].nil? + end + + return false + end + # Finding languages to enable def verify_available_info_languages!(options, app, languages) - # When there are iOS and macOS implementations of the same app, - # fetch_edit_app_info will fail when trying to fetch data for one platform - # if the other is in not editable state. - # We still keep fetch_edit_app_info as first option to make sure - # latest data is fetched when apps are in an editable state. - app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) + app_info = fetch_edit_app_info(app) unless app_info UI.user_error!("Cannot update languages - could not find an editable info") From d57b974cb774a34227889dfa00ba91c727e162d0 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Thu, 31 Aug 2023 00:17:58 +0200 Subject: [PATCH 04/21] Fix lint issues --- deliver/lib/deliver/upload_metadata.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 25e5c1b7105..69c81735614 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -89,7 +89,7 @@ def upload(options) enabled_languages = detect_languages(options) app_store_version_localizations = verify_available_version_languages!(options, app, enabled_languages) unless options[:edit_live] - app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] or !is_updating_app_info(options) + app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] || !is_updating_app_info(options) if options[:edit_live] # not all values are editable when using live_version @@ -457,7 +457,7 @@ def is_updating_app_info(options) return true unless options[key].nil? end - return false + return false end # Finding languages to enable From d62af0d8220d06136ce9e1c880c5f31bd68912ca Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Fri, 1 Sep 2023 21:51:11 +0200 Subject: [PATCH 05/21] Only fail upload when trying to update localised app info in no edit mode. --- deliver/lib/deliver/upload_metadata.rb | 57 +++++++++++++++++++++----- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 69c81735614..f3addc72653 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -89,7 +89,7 @@ def upload(options) enabled_languages = detect_languages(options) app_store_version_localizations = verify_available_version_languages!(options, app, enabled_languages) unless options[:edit_live] - app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] || !is_updating_app_info(options) + app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] || !updating_localised_app_info?(options, app) if options[:edit_live] # not all values are editable when using live_version @@ -211,15 +211,17 @@ def upload(options) store_version_worker.start # Update app info localizations - app_info_worker = FastlaneCore::QueueWorker.new do |app_info_localization| - attributes = localized_info_attributes_by_locale[app_info_localization.locale] - if attributes - UI.message("Uploading metadata to App Store Connect for localized info '#{app_info_localization.locale}'") - app_info_localization.update(attributes: attributes) + unless app_info_localizations.nil? + app_info_worker = FastlaneCore::QueueWorker.new do |app_info_localization| + attributes = localized_info_attributes_by_locale[app_info_localization.locale] + if attributes + UI.message("Uploading metadata to App Store Connect for localized info '#{app_info_localization.locale}'") + app_info_localization.update(attributes: attributes) + end end + app_info_worker.batch_enqueue(app_info_localizations) + app_info_worker.start end - app_info_worker.batch_enqueue(app_info_localizations) - app_info_worker.start # Update categories app_info = fetch_edit_app_info(app) @@ -437,6 +439,12 @@ def fetch_edit_app_info(app, wait_time: 10) end end + def fetch_live_app_info(app, wait_time: 10) + retry_if_nil("Cannot find live app info", wait_time: wait_time) do + app.fetch_live_app_info + end + end + def retry_if_nil(message, tries: 5, wait_time: 10) loop do tries -= 1 @@ -451,12 +459,39 @@ def retry_if_nil(message, tries: 5, wait_time: 10) end end - # Checking if the metadata to update includes App Info - def is_updating_app_info(options) + # Checking if the metadata to update includes localised App Info + def updating_localised_app_info?(options, app) + app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) + unless app_info + UI.important('Can\'t find edit or live App info. Skipping upload.') + return false + end + localizations = app_info.get_app_info_localizations + LOCALISED_APP_VALUES.keys.each do |key| - return true unless options[key].nil? + current = options[key] + next unless current + + unless current.kind_of?(Hash) + UI.error("Error with provided '#{key}'. Must be a hash, the key being the language.") + next + end + + current.each do |language, value| + next unless value.to_s.length > 0 + strip_value = value.to_s.strip + next if strip_value.empty? + + app_info_locale = localizations.find { |l| l.locale == language } + next if app_info_locale.nil? + + current_value = app_info_locale.public_send(key.to_sym) + + return true if current_value != strip_value + end end + UI.important('No changes to localised App Info detected. Skipping upload.') return false end From 7d42af51766b686b63444cea7669e6a07a2f5110 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Fri, 1 Sep 2023 22:10:41 +0200 Subject: [PATCH 06/21] Update tests --- deliver/spec/upload_metadata_spec.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index 4e5efc31404..05b53f71893 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -257,11 +257,18 @@ def create_metadata(path, text) description: { "en-US" => "App description" } } - # Get number of verions (used for if whats_new should be sent) + # Get number of versions (used for if whats_new should be sent) expect(Spaceship::ConnectAPI).to receive(:get_app_store_versions).and_return(app_store_versions) expect(version).to receive(:update).with(attributes: {}) + # Get app info + expect(app).to receive(:fetch_edit_app_info).and_return(app_info) + expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) + + # Get app info localization English (Used to compare with data to upload) + expect(app_info_localization_en).to receive(:name).and_return("") + # Update version localization expect(version_localization_en).to receive(:update).with(attributes: { "description" => options[:description]["en-US"] From c1bdd948797da647b4b0f30e871699619364d7c3 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Fri, 1 Sep 2023 22:32:14 +0200 Subject: [PATCH 07/21] Make rubocop happy --- deliver/spec/upload_metadata_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index 05b53f71893..9830680db31 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -265,7 +265,7 @@ def create_metadata(path, text) # Get app info expect(app).to receive(:fetch_edit_app_info).and_return(app_info) expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) - + # Get app info localization English (Used to compare with data to upload) expect(app_info_localization_en).to receive(:name).and_return("") From f5187ff0e3ee8e12ae0a358b128d8a1b4dff302a Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Sun, 3 Sep 2023 22:33:12 +0200 Subject: [PATCH 08/21] Update deliver/lib/deliver/upload_metadata.rb Co-authored-by: Roger Oba --- deliver/lib/deliver/upload_metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index f3addc72653..1e8a3d709c6 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -211,7 +211,7 @@ def upload(options) store_version_worker.start # Update app info localizations - unless app_info_localizations.nil? + if app_info_localizations app_info_worker = FastlaneCore::QueueWorker.new do |app_info_localization| attributes = localized_info_attributes_by_locale[app_info_localization.locale] if attributes From dfbf80d3886e5a657a79fa5efb514fd5a46c3186 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Sun, 3 Sep 2023 22:38:46 +0200 Subject: [PATCH 09/21] Update deliver/lib/deliver/upload_metadata.rb Co-authored-by: Roger Oba --- deliver/lib/deliver/upload_metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 1e8a3d709c6..b229ad7df53 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -463,7 +463,7 @@ def retry_if_nil(message, tries: 5, wait_time: 10) def updating_localised_app_info?(options, app) app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) unless app_info - UI.important('Can\'t find edit or live App info. Skipping upload.') + UI.important("Can't find edit or live App info. Skipping upload.") return false end localizations = app_info.get_app_info_localizations From d04fb089035023797399e3ce0b513dd3793e9f35 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Sun, 3 Sep 2023 22:45:35 +0200 Subject: [PATCH 10/21] Update deliver/lib/deliver/upload_metadata.rb Co-authored-by: Roger Oba --- deliver/lib/deliver/upload_metadata.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index b229ad7df53..d38f7319850 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -478,7 +478,6 @@ def updating_localised_app_info?(options, app) end current.each do |language, value| - next unless value.to_s.length > 0 strip_value = value.to_s.strip next if strip_value.empty? From aae5bdd29dfc16f0b30eacff761f4850300da861 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Sun, 3 Sep 2023 22:48:16 +0200 Subject: [PATCH 11/21] Update message severity --- deliver/lib/deliver/upload_metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index d38f7319850..c0565f0bba5 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -490,7 +490,7 @@ def updating_localised_app_info?(options, app) end end - UI.important('No changes to localised App Info detected. Skipping upload.') + UI.message('No changes to localised App Info detected. Skipping upload.') return false end From 5c161ef239b3d02265f8a3a837ad72d182414df3 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Sun, 3 Sep 2023 22:54:50 +0200 Subject: [PATCH 12/21] Minimize api call to fetch app infos --- deliver/lib/deliver/upload_metadata.rb | 12 +++++------- deliver/spec/upload_metadata_spec.rb | 2 -- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index c0565f0bba5..46398fe951c 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -89,7 +89,8 @@ def upload(options) enabled_languages = detect_languages(options) app_store_version_localizations = verify_available_version_languages!(options, app, enabled_languages) unless options[:edit_live] - app_info_localizations = verify_available_info_languages!(options, app, enabled_languages) unless options[:edit_live] || !updating_localised_app_info?(options, app) + app_info = fetch_edit_app_info(app) + app_info_localizations = verify_available_info_languages!(options, app, app_info, enabled_languages) unless options[:edit_live] || !updating_localised_app_info?(options, app, app_info) if options[:edit_live] # not all values are editable when using live_version @@ -224,7 +225,6 @@ def upload(options) end # Update categories - app_info = fetch_edit_app_info(app) if app_info category_id_map = {} @@ -460,8 +460,8 @@ def retry_if_nil(message, tries: 5, wait_time: 10) end # Checking if the metadata to update includes localised App Info - def updating_localised_app_info?(options, app) - app_info = fetch_edit_app_info(app) || fetch_live_app_info(app) + def updating_localised_app_info?(options, app, app_info) + app_info = fetch_live_app_info(app) unless app_info unless app_info UI.important("Can't find edit or live App info. Skipping upload.") return false @@ -495,9 +495,7 @@ def updating_localised_app_info?(options, app) end # Finding languages to enable - def verify_available_info_languages!(options, app, languages) - app_info = fetch_edit_app_info(app) - + def verify_available_info_languages!(options, app, app_info, languages) unless app_info UI.user_error!("Cannot update languages - could not find an editable info") return diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index 9830680db31..6b1c6e63f4e 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -244,7 +244,6 @@ def create_metadata(path, text) expect(version).to receive(:get_app_store_version_localizations).and_return([version_localization_en]) # Get app infos - expect(app).to receive(:fetch_edit_app_info).and_return(app_info) expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) end @@ -263,7 +262,6 @@ def create_metadata(path, text) expect(version).to receive(:update).with(attributes: {}) # Get app info - expect(app).to receive(:fetch_edit_app_info).and_return(app_info) expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) # Get app info localization English (Used to compare with data to upload) From 66470dc0b1d16cd9ad088ba115f9afa355c436d7 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Mon, 4 Sep 2023 23:29:12 +0200 Subject: [PATCH 13/21] Add tests --- deliver/spec/upload_metadata_spec.rb | 89 +++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index 6b1c6e63f4e..d5c1a8490c7 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -162,6 +162,7 @@ def create_metadata(path, text) locale: 'en-US') end let(:app_info) { double('app_info') } + let(:live_app_info) { nil } let(:app_info_localization_en) do double('app_info_localization_en', locale: 'en-US') @@ -237,14 +238,18 @@ def create_metadata(path, text) # Verify available languages expect(app).to receive(:id).and_return(id) expect(app).to receive(:get_edit_app_store_version).and_return(version) - expect(app).to receive(:fetch_edit_app_info).and_return(app_info) + expect(uploader).to receive(:fetch_edit_app_info).and_return(app_info) # Get versions expect(app).to receive(:get_edit_app_store_version).and_return(version) expect(version).to receive(:get_app_store_version_localizations).and_return([version_localization_en]) # Get app infos - expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) + if app_info + expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) + else + expect(live_app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) + end end context "normal metadata" do @@ -417,6 +422,86 @@ def create_metadata(path, text) uploader.upload(options) end end + + context "with no editable app info" do + let(:live_app_info) { double('app_info') } + let(:app_info) { nil } + it 'no new app info provided by user' do + options = { + platform: "ios", + metadata_path: metadata_path, + } + + # Get live ap info + expect(app).to receive(:fetch_live_app_info).and_return(live_app_info) + + # Get number of versions (used for if whats_new should be sent) + expect(Spaceship::ConnectAPI).to receive(:get_app_store_versions).and_return(app_store_versions) + + expect(version).to receive(:update).with(attributes: {}) + + # Get app info localization English (Used to compare with data to upload) + uploader.upload(options) + end + + it 'same app info as live version' do + options = { + platform: "ios", + metadata_path: metadata_path, + name: { "en-US" => "App name" } + } + + # Get live ap info + expect(app).to receive(:fetch_live_app_info).and_return(live_app_info) + + # Get number of versions (used for if whats_new should be sent) + expect(Spaceship::ConnectAPI).to receive(:get_app_store_versions).and_return(app_store_versions) + + expect(version).to receive(:update).with(attributes: {}) + + # Get app info localization English (Used to compare with data to upload) + expect(app_info_localization_en).to receive(:name).and_return("App name") + + # Get app info localization English (Used to compare with data to upload) + uploader.upload(options) + end + end + end + + context "fail when not allowed to update" do + let(:live_app_info) { double('app_info') } + let(:app_info) { nil } + it 'different app info than live version' do + options = { + platform: "ios", + metadata_path: metadata_path, + name: { "en-US" => "New app name" } + } + + allow(Deliver).to receive(:cache).and_return({ app: app }) + + allow(uploader).to receive(:set_review_information) + allow(uploader).to receive(:set_review_attachment_file) + allow(uploader).to receive(:set_app_rating) + + # Get app info + expect(uploader).to receive(:fetch_edit_app_info).and_return(app_info) + expect(app).to receive(:fetch_live_app_info).and_return(live_app_info) + expect(live_app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) + + # Get versions + expect(app).to receive(:get_edit_app_store_version).and_return(version) + expect(version).to receive(:get_app_store_version_localizations).and_return([version_localization_en]) + + # Get app info localization English (Used to compare with data to upload) + expect(app_info_localization_en).to receive(:name).and_return("App name") + + # Fail because app info can't be updated + expect(FastlaneCore::UI).to receive(:user_error!).with("Cannot update languages - could not find an editable info").and_call_original + + # Get app info localization English (Used to compare with data to upload) + expect { uploader.upload(options) }.to raise_error(FastlaneCore::Interface::FastlaneError) + end end end From e016f010cd654fea7ae0c171bc09dfa4a996d755 Mon Sep 17 00:00:00 2001 From: Roger Oba Date: Tue, 5 Sep 2023 00:03:32 -0300 Subject: [PATCH 14/21] Fix simple typos. --- deliver/spec/upload_metadata_spec.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index d5c1a8490c7..cd85afe9f4b 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -432,7 +432,7 @@ def create_metadata(path, text) metadata_path: metadata_path, } - # Get live ap info + # Get live app info expect(app).to receive(:fetch_live_app_info).and_return(live_app_info) # Get number of versions (used for if whats_new should be sent) @@ -440,7 +440,7 @@ def create_metadata(path, text) expect(version).to receive(:update).with(attributes: {}) - # Get app info localization English (Used to compare with data to upload) + # Get app info localization in English (used to compare with data to upload) uploader.upload(options) end @@ -451,7 +451,7 @@ def create_metadata(path, text) name: { "en-US" => "App name" } } - # Get live ap info + # Get live app info expect(app).to receive(:fetch_live_app_info).and_return(live_app_info) # Get number of versions (used for if whats_new should be sent) @@ -459,10 +459,10 @@ def create_metadata(path, text) expect(version).to receive(:update).with(attributes: {}) - # Get app info localization English (Used to compare with data to upload) + # Get app info localization in English (used to compare with data to upload) expect(app_info_localization_en).to receive(:name).and_return("App name") - # Get app info localization English (Used to compare with data to upload) + # Get app info localization in English (used to compare with data to upload) uploader.upload(options) end end @@ -493,13 +493,13 @@ def create_metadata(path, text) expect(app).to receive(:get_edit_app_store_version).and_return(version) expect(version).to receive(:get_app_store_version_localizations).and_return([version_localization_en]) - # Get app info localization English (Used to compare with data to upload) + # Get app info localization in English (used to compare with data to upload) expect(app_info_localization_en).to receive(:name).and_return("App name") # Fail because app info can't be updated expect(FastlaneCore::UI).to receive(:user_error!).with("Cannot update languages - could not find an editable info").and_call_original - # Get app info localization English (Used to compare with data to upload) + # Get app info localization in English (used to compare with data to upload) expect { uploader.upload(options) }.to raise_error(FastlaneCore::Interface::FastlaneError) end end From 896c292be292ecad86909b12bcefe4c655c5a05a Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Tue, 5 Sep 2023 09:47:00 +0200 Subject: [PATCH 15/21] Refactor to more Ruby-like syntax Co-authored-by: Roger Oba --- deliver/lib/deliver/upload_metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 46398fe951c..6cd06c30d3e 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -461,7 +461,7 @@ def retry_if_nil(message, tries: 5, wait_time: 10) # Checking if the metadata to update includes localised App Info def updating_localised_app_info?(options, app, app_info) - app_info = fetch_live_app_info(app) unless app_info + app_info ||= fetch_live_app_info(app) unless app_info UI.important("Can't find edit or live App info. Skipping upload.") return false From 89086aa5275d58d9ab309249f0a5ad2848a6c02e Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Tue, 5 Sep 2023 09:50:47 +0200 Subject: [PATCH 16/21] Update tests --- deliver/spec/upload_metadata_spec.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index cd85afe9f4b..908caf5e2dc 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -437,10 +437,8 @@ def create_metadata(path, text) # Get number of versions (used for if whats_new should be sent) expect(Spaceship::ConnectAPI).to receive(:get_app_store_versions).and_return(app_store_versions) - expect(version).to receive(:update).with(attributes: {}) - # Get app info localization in English (used to compare with data to upload) uploader.upload(options) end @@ -462,7 +460,6 @@ def create_metadata(path, text) # Get app info localization in English (used to compare with data to upload) expect(app_info_localization_en).to receive(:name).and_return("App name") - # Get app info localization in English (used to compare with data to upload) uploader.upload(options) end end From 52bbce7920e04e4bfca8314e75be8bf5fdbaee32 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Wed, 6 Sep 2023 12:29:21 +0200 Subject: [PATCH 17/21] Update spelling for consistency Co-authored-by: Olivier Halligon --- deliver/lib/deliver/upload_metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 6cd06c30d3e..b3750c6f5ed 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -460,7 +460,7 @@ def retry_if_nil(message, tries: 5, wait_time: 10) end # Checking if the metadata to update includes localised App Info - def updating_localised_app_info?(options, app, app_info) + def updating_localized_app_info?(options, app, app_info) app_info ||= fetch_live_app_info(app) unless app_info UI.important("Can't find edit or live App info. Skipping upload.") From 09f89e3d3e4d921469b2939a65d4c8b17c7cd147 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Wed, 6 Sep 2023 12:29:54 +0200 Subject: [PATCH 18/21] Update spelling for consistency Co-authored-by: Olivier Halligon --- deliver/lib/deliver/upload_metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index b3750c6f5ed..68c6592bb7e 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -490,7 +490,7 @@ def updating_localized_app_info?(options, app, app_info) end end - UI.message('No changes to localised App Info detected. Skipping upload.') + UI.message('No changes to localized App Info detected. Skipping upload.') return false end From 104ecdbeddb7c124b9d1f6dd54341870e9614508 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Wed, 6 Sep 2023 12:36:10 +0200 Subject: [PATCH 19/21] Address feedback --- deliver/lib/deliver/upload_metadata.rb | 4 ++-- deliver/spec/upload_metadata_spec.rb | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 68c6592bb7e..0631d1b716a 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -90,7 +90,7 @@ def upload(options) app_store_version_localizations = verify_available_version_languages!(options, app, enabled_languages) unless options[:edit_live] app_info = fetch_edit_app_info(app) - app_info_localizations = verify_available_info_languages!(options, app, app_info, enabled_languages) unless options[:edit_live] || !updating_localised_app_info?(options, app, app_info) + app_info_localizations = verify_available_info_languages!(options, app, app_info, enabled_languages) unless options[:edit_live] || !updating_localized_app_info?(options, app, app_info) if options[:edit_live] # not all values are editable when using live_version @@ -497,7 +497,7 @@ def updating_localized_app_info?(options, app, app_info) # Finding languages to enable def verify_available_info_languages!(options, app, app_info, languages) unless app_info - UI.user_error!("Cannot update languages - could not find an editable info") + UI.user_error!("Cannot update languages - could not find an editable App info. Verify that your app is in one of the editable states in App Store Connect") return end diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index 908caf5e2dc..cac1d87a97b 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -270,7 +270,7 @@ def create_metadata(path, text) expect(app_info).to receive(:get_app_info_localizations).and_return([app_info_localization_en]) # Get app info localization English (Used to compare with data to upload) - expect(app_info_localization_en).to receive(:name).and_return("") + expect(app_info_localization_en).to receive(:name).and_return('App Name') # Update version localization expect(version_localization_en).to receive(:update).with(attributes: { @@ -458,7 +458,7 @@ def create_metadata(path, text) expect(version).to receive(:update).with(attributes: {}) # Get app info localization in English (used to compare with data to upload) - expect(app_info_localization_en).to receive(:name).and_return("App name") + expect(app_info_localization_en).to receive(:name).and_return('App name') uploader.upload(options) end @@ -491,10 +491,10 @@ def create_metadata(path, text) expect(version).to receive(:get_app_store_version_localizations).and_return([version_localization_en]) # Get app info localization in English (used to compare with data to upload) - expect(app_info_localization_en).to receive(:name).and_return("App name") + expect(app_info_localization_en).to receive(:name).and_return('App name') # Fail because app info can't be updated - expect(FastlaneCore::UI).to receive(:user_error!).with("Cannot update languages - could not find an editable info").and_call_original + expect(FastlaneCore::UI).to receive(:user_error!).with('Cannot update languages - could not find an editable App info. Verify that your app is in one of the editable states in App Store Connect').and_call_original # Get app info localization in English (used to compare with data to upload) expect { uploader.upload(options) }.to raise_error(FastlaneCore::Interface::FastlaneError) From 0cc2bfc4bdc6889a7ada3550f148d060f7ef7ee2 Mon Sep 17 00:00:00 2001 From: Roger Oba Date: Sun, 10 Sep 2023 17:11:21 -0300 Subject: [PATCH 20/21] Update user-facing message. --- deliver/lib/deliver/upload_metadata.rb | 2 +- deliver/spec/upload_metadata_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deliver/lib/deliver/upload_metadata.rb b/deliver/lib/deliver/upload_metadata.rb index 0631d1b716a..138f3166db8 100644 --- a/deliver/lib/deliver/upload_metadata.rb +++ b/deliver/lib/deliver/upload_metadata.rb @@ -497,7 +497,7 @@ def updating_localized_app_info?(options, app, app_info) # Finding languages to enable def verify_available_info_languages!(options, app, app_info, languages) unless app_info - UI.user_error!("Cannot update languages - could not find an editable App info. Verify that your app is in one of the editable states in App Store Connect") + UI.user_error!("Cannot update languages - could not find an editable 'App Info'. Verify that your app is in one of the editable states in App Store Connect") return end diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index cac1d87a97b..dcb8e1afc0a 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -494,7 +494,7 @@ def create_metadata(path, text) expect(app_info_localization_en).to receive(:name).and_return('App name') # Fail because app info can't be updated - expect(FastlaneCore::UI).to receive(:user_error!).with('Cannot update languages - could not find an editable App info. Verify that your app is in one of the editable states in App Store Connect').and_call_original + expect(FastlaneCore::UI).to receive(:user_error!).with('Cannot update languages - could not find an editable 'App Info'. Verify that your app is in one of the editable states in App Store Connect').and_call_original # Get app info localization in English (used to compare with data to upload) expect { uploader.upload(options) }.to raise_error(FastlaneCore::Interface::FastlaneError) From 0e620852412d027d40b15bb02571e05131616072 Mon Sep 17 00:00:00 2001 From: Roger Oba Date: Sun, 10 Sep 2023 17:17:07 -0300 Subject: [PATCH 21/21] Fix syntax of string quotes. --- deliver/spec/upload_metadata_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliver/spec/upload_metadata_spec.rb b/deliver/spec/upload_metadata_spec.rb index dcb8e1afc0a..c2b3bac9b25 100644 --- a/deliver/spec/upload_metadata_spec.rb +++ b/deliver/spec/upload_metadata_spec.rb @@ -494,7 +494,7 @@ def create_metadata(path, text) expect(app_info_localization_en).to receive(:name).and_return('App name') # Fail because app info can't be updated - expect(FastlaneCore::UI).to receive(:user_error!).with('Cannot update languages - could not find an editable 'App Info'. Verify that your app is in one of the editable states in App Store Connect').and_call_original + expect(FastlaneCore::UI).to receive(:user_error!).with("Cannot update languages - could not find an editable 'App Info'. Verify that your app is in one of the editable states in App Store Connect").and_call_original # Get app info localization in English (used to compare with data to upload) expect { uploader.upload(options) }.to raise_error(FastlaneCore::Interface::FastlaneError)