diff --git a/updater/lib/dependabot/api_client.rb b/updater/lib/dependabot/api_client.rb index 4f9ebb8833..10624f2dcb 100644 --- a/updater/lib/dependabot/api_client.rb +++ b/updater/lib/dependabot/api_client.rb @@ -184,11 +184,13 @@ def create_pull_request_data(dependencies, updated_dependency_files, base_commit dependencies: dependencies.map do |dep| { name: dep.name, - version: dep.version, "previous-version": dep.previous_version, requirements: dep.requirements, "previous-requirements": dep.previous_requirements - } + }.merge({ + version: dep.version, + removed: dep.removed? ? true : nil + }.compact) end, "updated-dependency-files": updated_dependency_files, "base-commit-sha": base_commit_sha diff --git a/updater/spec/dependabot/api_client_spec.rb b/updater/spec/dependabot/api_client_spec.rb index 8226461e6e..b8409a8112 100644 --- a/updater/spec/dependabot/api_client_spec.rb +++ b/updater/spec/dependabot/api_client_spec.rb @@ -101,6 +101,34 @@ end) end end + + context "with a removed dependency" do + let(:removed_dependency) do + Dependabot::Dependency.new( + name: "removed", + package_manager: "bundler", + previous_version: "1.7.0", + requirements: [], + previous_requirements: [], + removed: true + ) + end + + it "encodes fields" do + client.create_pull_request(1, [removed_dependency, dependency], dependency_files, base_commit, message) + expect(WebMock). + to(have_requested(:post, create_pull_request_url). + with(headers: { "Authorization" => "token" }). + with do |req| + data = JSON.parse(req.body)["data"] + expect(data["dependencies"].first["removed"]).to eq(true) + expect(data["dependencies"].first.key?("version")).to eq(false) + expect(data["dependencies"].last.key?("removed")).to eq(false) + expect(data["dependencies"].last["version"]).to eq("1.8.0") + true + end) + end + end end describe "update_pull_request" do