From 1fd7cb9d574dfde0cf5f73b20ea947e5cef9d298 Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Mon, 26 Feb 2024 22:04:45 +0100 Subject: [PATCH 1/8] [spaceship] Use new app store statuses to filter app versions and app infos --- deliver/lib/deliver/submit_for_review.rb | 4 +- .../lib/spaceship/connect_api/models/app.rb | 57 +++++++++---------- 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/deliver/lib/deliver/submit_for_review.rb b/deliver/lib/deliver/submit_for_review.rb index b4d36503b8c..dd9552af61e 100644 --- a/deliver/lib/deliver/submit_for_review.rb +++ b/deliver/lib/deliver/submit_for_review.rb @@ -51,11 +51,11 @@ def create_review_submission(options, app, version, platform) 10.times do version_with_latest_info = Spaceship::ConnectAPI::AppStoreVersion.get(app_store_version_id: version.id) - if version_with_latest_info.app_store_state == Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_REVIEW + if version_with_latest_info.app_version_state == Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_REVIEW break end - UI.message("Waiting for the state of the version to become #{Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_REVIEW}...") + UI.message("Waiting for the state of the version to become #{Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_REVIEW}...") sleep(15) end diff --git a/spaceship/lib/spaceship/connect_api/models/app.rb b/spaceship/lib/spaceship/connect_api/models/app.rb index 2892a23522e..fdeedb4eac5 100644 --- a/spaceship/lib/spaceship/connect_api/models/app.rb +++ b/spaceship/lib/spaceship/connect_api/models/app.rb @@ -116,12 +116,9 @@ def update(client: nil, attributes: nil, app_price_tier_id: nil, territory_ids: def fetch_live_app_info(client: nil, includes: Spaceship::ConnectAPI::AppInfo::ESSENTIAL_INCLUDES) client ||= Spaceship::ConnectAPI states = [ - Spaceship::ConnectAPI::AppInfo::AppStoreState::READY_FOR_SALE, - Spaceship::ConnectAPI::AppInfo::AppStoreState::PENDING_APPLE_RELEASE, - Spaceship::ConnectAPI::AppInfo::AppStoreState::PENDING_DEVELOPER_RELEASE, - Spaceship::ConnectAPI::AppInfo::AppStoreState::PROCESSING_FOR_APP_STORE, - Spaceship::ConnectAPI::AppInfo::AppStoreState::IN_REVIEW, - Spaceship::ConnectAPI::AppInfo::AppStoreState::DEVELOPER_REMOVED_FROM_SALE + Spaceship::ConnectAPI::AppInfo::State::READY_FOR_DISTRIBUTION, + Spaceship::ConnectAPI::AppInfo::State::PENDING_RELEASE, + Spaceship::ConnectAPI::AppInfo::State::IN_REVIEW ] resp = client.get_app_infos(app_id: id, includes: includes) @@ -133,12 +130,10 @@ def fetch_live_app_info(client: nil, includes: Spaceship::ConnectAPI::AppInfo::E def fetch_edit_app_info(client: nil, includes: Spaceship::ConnectAPI::AppInfo::ESSENTIAL_INCLUDES) client ||= Spaceship::ConnectAPI states = [ - Spaceship::ConnectAPI::AppInfo::AppStoreState::PREPARE_FOR_SUBMISSION, - Spaceship::ConnectAPI::AppInfo::AppStoreState::DEVELOPER_REJECTED, - Spaceship::ConnectAPI::AppInfo::AppStoreState::REJECTED, - Spaceship::ConnectAPI::AppInfo::AppStoreState::METADATA_REJECTED, - Spaceship::ConnectAPI::AppInfo::AppStoreState::WAITING_FOR_REVIEW, - Spaceship::ConnectAPI::AppInfo::AppStoreState::INVALID_BINARY + Spaceship::ConnectAPI::AppInfo::State::PREPARE_FOR_SUBMISSION, + Spaceship::ConnectAPI::AppInfo::State::DEVELOPER_REJECTED, + Spaceship::ConnectAPI::AppInfo::State::REJECTED, + Spaceship::ConnectAPI::AppInfo::State::WAITING_FOR_REVIEW ] resp = client.get_app_infos(app_id: id, includes: includes) @@ -182,11 +177,11 @@ def reject_version_if_possible!(client: nil, platform: nil) client ||= Spaceship::ConnectAPI platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { - appStoreState: [ - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_APPLE_RELEASE, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_DEVELOPER_RELEASE, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::IN_REVIEW, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::WAITING_FOR_REVIEW + appVersionState: [ + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PENDING_APPLE_RELEASE, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PENDING_DEVELOPER_RELEASE, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::IN_REVIEW, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::WAITING_FOR_REVIEW ].join(","), platform: platform } @@ -240,9 +235,9 @@ def get_live_app_store_version(client: nil, platform: nil, includes: Spaceship:: client ||= Spaceship::ConnectAPI platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { - appStoreState: [ - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_SALE, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::DEVELOPER_REMOVED_FROM_SALE + appVersionState: [ + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_DISTRIBUTION, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::DEVELOPER_REMOVED_FROM_SALE ].join(","), platform: platform } @@ -253,13 +248,13 @@ def get_edit_app_store_version(client: nil, platform: nil, includes: Spaceship:: client ||= Spaceship::ConnectAPI platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { - appStoreState: [ - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PREPARE_FOR_SUBMISSION, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::DEVELOPER_REJECTED, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::REJECTED, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::METADATA_REJECTED, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::WAITING_FOR_REVIEW, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::INVALID_BINARY + appVersionState: [ + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PREPARE_FOR_SUBMISSION, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::DEVELOPER_REJECTED, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::REJECTED, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::METADATA_REJECTED, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::WAITING_FOR_REVIEW, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::INVALID_BINARY ].join(","), platform: platform } @@ -274,7 +269,7 @@ def get_in_review_app_store_version(client: nil, platform: nil, includes: Spaces client ||= Spaceship::ConnectAPI platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { - appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::IN_REVIEW, + appVersionState: Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::IN_REVIEW, platform: platform } return get_app_store_versions(client: client, filter: filter, includes: includes).first @@ -284,9 +279,9 @@ def get_pending_release_app_store_version(client: nil, platform: nil, includes: client ||= Spaceship::ConnectAPI platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { - appStoreState: [ - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_APPLE_RELEASE, - Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_DEVELOPER_RELEASE + appVersionState: [ + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PENDING_APPLE_RELEASE, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PENDING_DEVELOPER_RELEASE ].join(','), platform: platform } From 0f802096fa4cedda8988d465d53896ffaab65916 Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Mon, 26 Feb 2024 23:50:53 +0100 Subject: [PATCH 2/8] [spaceship] Filter app infos using state attribute --- spaceship/lib/spaceship/connect_api/models/app.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spaceship/lib/spaceship/connect_api/models/app.rb b/spaceship/lib/spaceship/connect_api/models/app.rb index fdeedb4eac5..23ffab7ffe9 100644 --- a/spaceship/lib/spaceship/connect_api/models/app.rb +++ b/spaceship/lib/spaceship/connect_api/models/app.rb @@ -123,7 +123,7 @@ def fetch_live_app_info(client: nil, includes: Spaceship::ConnectAPI::AppInfo::E resp = client.get_app_infos(app_id: id, includes: includes) return resp.to_models.select do |model| - states.include?(model.app_store_state) + states.include?(model.state) end.first end @@ -138,7 +138,7 @@ def fetch_edit_app_info(client: nil, includes: Spaceship::ConnectAPI::AppInfo::E resp = client.get_app_infos(app_id: id, includes: includes) return resp.to_models.select do |model| - states.include?(model.app_store_state) + states.include?(model.state) end.first end From ae9a560f8a16d834df604cc2959e755b99b33863 Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Mon, 26 Feb 2024 23:55:23 +0100 Subject: [PATCH 3/8] Remove developer removed from state from filter --- spaceship/lib/spaceship/connect_api/models/app.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spaceship/lib/spaceship/connect_api/models/app.rb b/spaceship/lib/spaceship/connect_api/models/app.rb index 23ffab7ffe9..1e5e397d614 100644 --- a/spaceship/lib/spaceship/connect_api/models/app.rb +++ b/spaceship/lib/spaceship/connect_api/models/app.rb @@ -236,8 +236,7 @@ def get_live_app_store_version(client: nil, platform: nil, includes: Spaceship:: platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { appVersionState: [ - Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_DISTRIBUTION, - Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::DEVELOPER_REMOVED_FROM_SALE + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_DISTRIBUTION ].join(","), platform: platform } From 8eb33e4a059a2772770d5b268fa065e73b8f0e6f Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Tue, 27 Feb 2024 09:51:23 +0100 Subject: [PATCH 4/8] Add PROCESSING_FOR_DISTRIBUTION to filter live app store versions --- spaceship/lib/spaceship/connect_api/models/app.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spaceship/lib/spaceship/connect_api/models/app.rb b/spaceship/lib/spaceship/connect_api/models/app.rb index 1e5e397d614..cc0b6da0fc2 100644 --- a/spaceship/lib/spaceship/connect_api/models/app.rb +++ b/spaceship/lib/spaceship/connect_api/models/app.rb @@ -236,7 +236,8 @@ def get_live_app_store_version(client: nil, platform: nil, includes: Spaceship:: platform ||= Spaceship::ConnectAPI::Platform::IOS filter = { appVersionState: [ - Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_DISTRIBUTION + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_DISTRIBUTION, + Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PROCESSING_FOR_DISTRIBUTION ].join(","), platform: platform } From 69ad3760b53464b7fdad33ea5bbb30a7cf0e16f1 Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Tue, 27 Feb 2024 10:36:33 +0100 Subject: [PATCH 5/8] Update submit_for_review_spec to use app_version_state --- deliver/spec/submit_for_review_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deliver/spec/submit_for_review_spec.rb b/deliver/spec/submit_for_review_spec.rb index fb960990094..4a7ec7ebe10 100644 --- a/deliver/spec/submit_for_review_spec.rb +++ b/deliver/spec/submit_for_review_spec.rb @@ -14,13 +14,13 @@ let(:ready_for_review_version) do double('ready_for_review_version', id: '1', - app_store_state: "READY_FOR_REVIEW", + app_version_state: "READY_FOR_REVIEW", version_string: "1.0.0") end let(:prepare_for_submission_version) do double('prepare_for_submission_version', id: '1', - app_store_state: "PREPARE_FOR_SUBMISSION", + app_version_state: "PREPARE_FOR_SUBMISSION", version_string: "1.0.0") end let(:selected_build) { double('selected_build') } From 5f326b79156db3b8cb5b360f08aa79e8497c7d8f Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Tue, 27 Feb 2024 10:57:22 +0100 Subject: [PATCH 6/8] Renaming attribute in docs --- spaceship/docs/AppStoreConnect.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spaceship/docs/AppStoreConnect.md b/spaceship/docs/AppStoreConnect.md index f9958c0b916..4b92526ba23 100644 --- a/spaceship/docs/AppStoreConnect.md +++ b/spaceship/docs/AppStoreConnect.md @@ -114,10 +114,10 @@ You can then go ahead and modify app metadata on the version objects: v = app.get_edit_app_store_version # Access information -v.app_store_state # => "Waiting for Review" +v.app_version_state # => "Waiting for Review" v.version_string # => "0.9.14" -# Build is not always available in all app_store_state, e.g. not available in `Prepare for Submission` +# Build is not always available in all app_version_state, e.g. not available in `Prepare for Submission` build_number = v.build.nil? ? nil : v.build.version # Update app metadata @@ -162,6 +162,7 @@ Available options: attr_accessor :platform attr_accessor :version_string attr_accessor :app_store_state +attr_accessor :app_version_state attr_accessor :store_icon attr_accessor :watch_store_icon attr_accessor :copyright From 801e94cf7edf9d00512ee2bbf5079c3d040e595b Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Sun, 3 Mar 2024 11:07:08 +0100 Subject: [PATCH 7/8] Add attribute to fixtures --- spaceship/spec/connect_api/fixtures/testflight/apps.json | 2 ++ .../spec/connect_api/fixtures/tunes/review_submission.json | 3 ++- .../connect_api/fixtures/tunes/review_submission_items.json | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spaceship/spec/connect_api/fixtures/testflight/apps.json b/spaceship/spec/connect_api/fixtures/testflight/apps.json index 452c7ffe459..d36a0036702 100644 --- a/spaceship/spec/connect_api/fixtures/testflight/apps.json +++ b/spaceship/spec/connect_api/fixtures/testflight/apps.json @@ -1062,6 +1062,7 @@ "platform" : "IOS", "versionString" : "1.0", "appStoreState" : "PREPARE_FOR_SUBMISSION", + "appVersionState" : "PREPARE_FOR_SUBMISSION", "copyright" : null, "releaseType" : "AFTER_APPROVAL", "earliestReleaseDate" : null, @@ -1147,6 +1148,7 @@ "platform" : "IOS", "versionString" : "1.0", "appStoreState" : "PREPARE_FOR_SUBMISSION", + "appVersionState" : "PREPARE_FOR_SUBMISSION", "copyright" : null, "releaseType" : "AFTER_APPROVAL", "earliestReleaseDate" : null, diff --git a/spaceship/spec/connect_api/fixtures/tunes/review_submission.json b/spaceship/spec/connect_api/fixtures/tunes/review_submission.json index ab8ca6c9997..2808b3aa01c 100644 --- a/spaceship/spec/connect_api/fixtures/tunes/review_submission.json +++ b/spaceship/spec/connect_api/fixtures/tunes/review_submission.json @@ -61,7 +61,8 @@ "isWatchOnly" : false, "createdDate" : "2021-01-01T10:10:10-07:00", "releaseType" : "MANUAL", - "appStoreState" : "READY_FOR_REVIEW" + "appStoreState" : "READY_FOR_REVIEW", + "appVersionState" : "READY_FOR_REVIEW" }, "relationships" : { "appStoreVersionLocalizations" : { diff --git a/spaceship/spec/connect_api/fixtures/tunes/review_submission_items.json b/spaceship/spec/connect_api/fixtures/tunes/review_submission_items.json index a48d9ace04d..01feb018150 100644 --- a/spaceship/spec/connect_api/fixtures/tunes/review_submission_items.json +++ b/spaceship/spec/connect_api/fixtures/tunes/review_submission_items.json @@ -46,7 +46,8 @@ "isWatchOnly" : false, "createdDate" : "2021-01-01T10:10:10-07:00", "releaseType" : "MANUAL", - "appStoreState" : "READY_FOR_REVIEW" + "appStoreState" : "READY_FOR_REVIEW", + "appVersionState" : "READY_FOR_REVIEW" }, "relationships" : { "appStoreVersionLocalizations" : { From af260246122ebc26b18f8cd1f1e74cb3897e8ef5 Mon Sep 17 00:00:00 2001 From: Lukasz Grabowski Date: Tue, 5 Mar 2024 00:49:54 +0100 Subject: [PATCH 8/8] Add a fixture and test for app info --- .../connect_api/fixtures/tunes/app_infos.json | 137 ++++++++++++++++++ spaceship/spec/connect_api/models/app_spec.rb | 22 +++ .../spec/connect_api/tunes/tunes_stubbing.rb | 5 + 3 files changed, 164 insertions(+) create mode 100644 spaceship/spec/connect_api/fixtures/tunes/app_infos.json diff --git a/spaceship/spec/connect_api/fixtures/tunes/app_infos.json b/spaceship/spec/connect_api/fixtures/tunes/app_infos.json new file mode 100644 index 00000000000..805b0c46081 --- /dev/null +++ b/spaceship/spec/connect_api/fixtures/tunes/app_infos.json @@ -0,0 +1,137 @@ +{ + "data": [ + { + "type": "appInfos", + "id": "1111-11111", + "attributes": { + "appStoreState": "READY_FOR_SALE", + "state": "READY_FOR_DISTRIBUTION", + "appStoreAgeRating": "FOUR_PLUS", + "brazilAgeRating": "L", + "brazilAgeRatingV2": "SELF_RATED_L", + "kidsAgeBand": null + }, + "relationships": { + "ageRatingDeclaration": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/ageRatingDeclaration", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/ageRatingDeclaration" + } + }, + "appInfoLocalizations": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/appInfoLocalizations", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/appInfoLocalizations" + } + }, + "primaryCategory": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/primaryCategory", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/primaryCategory" + } + }, + "primarySubcategoryOne": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/primarySubcategoryOne", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/primarySubcategoryOne" + } + }, + "primarySubcategoryTwo": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/primarySubcategoryTwo", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/primarySubcategoryTwo" + } + }, + "secondaryCategory": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/secondaryCategory", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/secondaryCategory" + } + }, + "secondarySubcategoryOne": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/secondarySubcategoryOne", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/secondarySubcategoryOne" + } + }, + "secondarySubcategoryTwo": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/relationships/secondarySubcategoryTwo", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111/secondarySubcategoryTwo" + } + } + }, + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-11111" + } + }, + { + "type": "appInfos", + "id": "1111-2222", + "attributes": { + "appStoreState": "PREPARE_FOR_SUBMISSION", + "state": "PREPARE_FOR_SUBMISSION", + "appStoreAgeRating": "FOUR_PLUS", + "brazilAgeRating": "L", + "brazilAgeRatingV2": "SELF_RATED_L", + "kidsAgeBand": null + }, + "relationships": { + "ageRatingDeclaration": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/ageRatingDeclaration", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/ageRatingDeclaration" + } + }, + "appInfoLocalizations": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/appInfoLocalizations", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/appInfoLocalizations" + } + }, + "primaryCategory": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/primaryCategory", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/primaryCategory" + } + }, + "primarySubcategoryOne": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/primarySubcategoryOne", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/primarySubcategoryOne" + } + }, + "primarySubcategoryTwo": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/primarySubcategoryTwo", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/primarySubcategoryTwo" + } + }, + "secondaryCategory": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/secondaryCategory", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/secondaryCategory" + } + }, + "secondarySubcategoryOne": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/secondarySubcategoryOne", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/secondarySubcategoryOne" + } + }, + "secondarySubcategoryTwo": { + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/relationships/secondarySubcategoryTwo", + "related": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222/secondarySubcategoryTwo" + } + } + }, + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/appInfos/1111-2222" + } + } + ], + "links": { + "self": "https://appstoreconnect.apple.com/iris/v1/apps/123456789/appInfos" + } +} diff --git a/spaceship/spec/connect_api/models/app_spec.rb b/spaceship/spec/connect_api/models/app_spec.rb index 54f1131fd47..ffe4a0fb457 100644 --- a/spaceship/spec/connect_api/models/app_spec.rb +++ b/spaceship/spec/connect_api/models/app_spec.rb @@ -86,6 +86,28 @@ expect(model.bundle_id).to eq("com.joshholtz.FastlaneTest") end + it('fetches live app info') do + ConnectAPIStubbing::Tunes.stub_get_app_infos + app = Spaceship::ConnectAPI::App.new("123456789", []) + + info = app.fetch_live_app_info(includes: nil) + expect(info.id).to eq("1111-11111") + expect(info.app_store_age_rating).to eq("FOUR_PLUS") + expect(info.app_store_state).to eq("READY_FOR_SALE") + expect(info.state).to eq("READY_FOR_DISTRIBUTION") + end + + it('fetches edit app info') do + ConnectAPIStubbing::Tunes.stub_get_app_infos + app = Spaceship::ConnectAPI::App.new("123456789", []) + + info = app.fetch_edit_app_info(includes: nil) + expect(info.id).to eq("1111-2222") + expect(info.app_store_age_rating).to eq("FOUR_PLUS") + expect(info.app_store_state).to eq("PREPARE_FOR_SUBMISSION") + expect(info.state).to eq("PREPARE_FOR_SUBMISSION") + end + it 'creates beta group' do app = Spaceship::ConnectAPI::App.find("com.joshholtz.FastlaneTest") diff --git a/spaceship/spec/connect_api/tunes/tunes_stubbing.rb b/spaceship/spec/connect_api/tunes/tunes_stubbing.rb index 9e92fe9660a..746ba06a196 100644 --- a/spaceship/spec/connect_api/tunes/tunes_stubbing.rb +++ b/spaceship/spec/connect_api/tunes/tunes_stubbing.rb @@ -14,6 +14,11 @@ def stub_request(*args) WebMock::API.stub_request(*args) end + def stub_get_app_infos + stub_request(:get, "https://appstoreconnect.apple.com/iris/v1/apps/123456789/appInfos"). + to_return(status: 200, body: read_fixture_file('app_infos.json'), headers: { 'Content-Type' => 'application/json' }) + end + def stub_app_store_version_release_request stub_request(:post, "https://appstoreconnect.apple.com/iris/v1/appStoreVersionReleaseRequests"). to_return(status: 200, body: read_fixture_file('app_store_version_release_request.json'), headers: { 'Content-Type' => 'application/json' })