Skip to content

Commit

Permalink
Update tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
samsymons committed Jan 28, 2025
1 parent e141e61 commit c638a87
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,7 @@ def self.create_release_task(platform, version, assignee_id, asana_access_token,
def self.update_asana_tasks_for_internal_release(params)
UI.message("Checking latest public release in GitHub")

is_prerelease = true
latest_public_release = Helper::GitHelper.latest_release(Helper::GitHelper.repo_name(params[:platform]), is_prerelease, params[:github_token])
latest_public_release = Helper::GitHelper.latest_release(Helper::GitHelper.repo_name(params[:platform]), true, params[:github_token])
UI.success("Latest public release: #{latest_public_release.tag_name}")

UI.message("Extracting task IDs from git log since #{latest_public_release.tag_name} release")
Expand Down
5 changes: 3 additions & 2 deletions lib/fastlane/plugin/ddg_apple_automation/helper/git_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def self.assert_branch_has_changes(release_branch)
changed_files.any?
end

def self.latest_release(repo_name, is_prerelease, platform = nil, github_token)
def self.latest_release(repo_name, prerelease, platform = nil, github_token)
client = Octokit::Client.new(access_token: github_token)

current_page = 1
Expand All @@ -89,10 +89,11 @@ def self.latest_release(repo_name, is_prerelease, platform = nil, github_token)
break if releases.empty?

matching_release = releases.find do |release|
release.prerelease == is_prerelease && (platform.nil? || release.tag_name.end_with?("+#{platform}"))
release.prerelease == prerelease && (platform.nil? || release.tag_name.end_with?("+#{platform}"))
end

return matching_release if matching_release
break if releases.size < page_size

current_page += 1
end
Expand Down
104 changes: 104 additions & 0 deletions spec/git_helper_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,108 @@
end
end
end

describe "#latest_release" do
subject { Fastlane::Helper::GitHelper.latest_release(repo_name, prerelease, platform, github_token) }

include_context "common setup"

context "when no releases matching platform are found" do
let(:platform) { "ios" }
let(:prerelease) { false }

before do
allow(client).to receive(:releases).with(repo_name, per_page: 100, page: 1).and_return(
[
double(tag_name: "2.0.0+macos", prerelease: false),
double(tag_name: "1.0.0+macos", prerelease: false)
]
)
end

it "returns nil" do
expect(subject).to be_nil
end
end

context "when platform is not provided" do
let(:platform) { nil }

context "and prerelease is true" do
let(:prerelease) { true }

before do
allow(client).to receive(:releases).with(repo_name, per_page: 100, page: 1).and_return(
[
double(tag_name: "1.2.3-4", prerelease: true),
double(tag_name: "1.2.2-3", prerelease: true),
double(tag_name: "1.2.3", prerelease: false)
]
)
end

it "returns the latest prerelease" do
expect(subject.tag_name).to eq("1.2.3-4")
end
end

context "and prerelease is false" do
let(:prerelease) { false }

before do
allow(client).to receive(:releases).with(repo_name, per_page: 100, page: 1).and_return(
[
double(tag_name: "2.0.0-1", prerelease: true),
double(tag_name: "1.0.0", prerelease: false),
double(tag_name: "1.0.0-1", prerelease: true)
]
)
end

it "returns the latest full release" do
expect(subject.tag_name).to eq("1.0.0")
end
end
end

context "when platform is provided" do
let(:platform) { "ios" }

context "and prerelease is true" do
let(:prerelease) { true }

before do
allow(client).to receive(:releases).with(repo_name, per_page: 100, page: 1).and_return(
[
double(tag_name: "1.0.0-1+macos", prerelease: true),
double(tag_name: "2.0.0-1+ios", prerelease: true),
double(tag_name: "1.0.0-1+ios", prerelease: true)
]
)
end

it "returns the latest prerelease with the platform suffix" do
expect(subject.tag_name).to eq("2.0.0-1+ios")
end
end

context "and prerelease is false" do
let(:prerelease) { false }

before do
allow(client).to receive(:releases).with(repo_name, per_page: 100, page: 1).and_return(
[
double(tag_name: "1.0.0+macos", prerelease: false),
double(tag_name: "1.0.0+ios", prerelease: false),
double(tag_name: "1.0.0-1+ios", prerelease: true)
]
)
end

it "returns the latest full release with the platform suffix" do
expect(subject.tag_name).to eq("1.0.0+ios")
end
end
end
end
end

0 comments on commit c638a87

Please sign in to comment.