50 lines
1.5 KiB
Ruby
50 lines
1.5 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe 'Deletes a release asset link' do
|
||
|
include GraphqlHelpers
|
||
|
|
||
|
let_it_be(:project) { create(:project, :private, :repository) }
|
||
|
let_it_be(:release) { create(:release, project: project) }
|
||
|
let_it_be(:maintainer) { create(:user).tap { |u| project.add_maintainer(u) } }
|
||
|
let_it_be(:release_link) { create(:release_link, release: release) }
|
||
|
|
||
|
let(:current_user) { maintainer }
|
||
|
let(:mutation_name) { :release_asset_link_delete }
|
||
|
let(:mutation_arguments) { { id: release_link.to_global_id.to_s } }
|
||
|
|
||
|
let(:mutation) do
|
||
|
graphql_mutation(mutation_name, mutation_arguments, <<~FIELDS)
|
||
|
link {
|
||
|
id
|
||
|
name
|
||
|
url
|
||
|
linkType
|
||
|
directAssetUrl
|
||
|
external
|
||
|
}
|
||
|
errors
|
||
|
FIELDS
|
||
|
end
|
||
|
|
||
|
let(:delete_link) { post_graphql_mutation(mutation, current_user: current_user) }
|
||
|
let(:mutation_response) { graphql_mutation_response(mutation_name)&.with_indifferent_access }
|
||
|
|
||
|
it 'deletes the release asset link and returns the deleted link', :aggregate_failures do
|
||
|
delete_link
|
||
|
|
||
|
expected_response = {
|
||
|
id: release_link.to_global_id.to_s,
|
||
|
name: release_link.name,
|
||
|
url: release_link.url,
|
||
|
linkType: release_link.link_type.upcase,
|
||
|
directAssetUrl: end_with(release_link.filepath),
|
||
|
external: true
|
||
|
}.with_indifferent_access
|
||
|
|
||
|
expect(mutation_response[:link]).to match(expected_response)
|
||
|
expect(mutation_response[:errors]).to eq([])
|
||
|
end
|
||
|
end
|