chore: add title in link issue
This commit is contained in:
@@ -11,7 +11,7 @@ class Api::V1::Accounts::Integrations::LinearController < Api::V1::Accounts::Bas
|
||||
end
|
||||
|
||||
def team_entities
|
||||
team_id = params[:team_id]
|
||||
team_id = permitted_params[:team_id]
|
||||
entites = linear_processor_service.team_entities(team_id)
|
||||
if entites.is_a?(Hash) && entites[:error]
|
||||
render json: { error: entites[:error] }, status: :unprocessable_entity
|
||||
@@ -30,8 +30,9 @@ class Api::V1::Accounts::Integrations::LinearController < Api::V1::Accounts::Bas
|
||||
end
|
||||
|
||||
def link_issue
|
||||
issue_id = params[:issue_id]
|
||||
issue = linear_processor_service.link_issue(conversation_link, issue_id)
|
||||
issue_id = permitted_params[:issue_id]
|
||||
title = permitted_params[:title]
|
||||
issue = linear_processor_service.link_issue(conversation_link, issue_id, title)
|
||||
if issue.is_a?(Hash) && issue[:error]
|
||||
render json: { error: issue[:error] }, status: :unprocessable_entity
|
||||
else
|
||||
@@ -40,7 +41,7 @@ class Api::V1::Accounts::Integrations::LinearController < Api::V1::Accounts::Bas
|
||||
end
|
||||
|
||||
def unlink_issue
|
||||
link_id = params[:link_id]
|
||||
link_id = permitted_params[:link_id]
|
||||
issue = linear_processor_service.unlink_issue(link_id)
|
||||
|
||||
if issue.is_a?(Hash) && issue[:error]
|
||||
|
||||
@@ -30,8 +30,8 @@ class Integrations::Linear::ProcessorService
|
||||
}
|
||||
end
|
||||
|
||||
def link_issue(link, issue_id)
|
||||
response = linear_client.link_issue(link, issue_id)
|
||||
def link_issue(link, issue_id, title)
|
||||
response = linear_client.link_issue(link, issue_id, title)
|
||||
return response if response[:error]
|
||||
|
||||
{
|
||||
|
||||
+3
-3
@@ -66,12 +66,12 @@ class Linear
|
||||
process_response(response)
|
||||
end
|
||||
|
||||
def link_issue(link, issue_id)
|
||||
def link_issue(link, issue_id, title)
|
||||
raise ArgumentError, 'Missing link' if link.blank?
|
||||
raise ArgumentError, 'Missing issue id' if issue_id.blank?
|
||||
|
||||
payload = {
|
||||
query: LinearMutations.issue_link(issue_id, link)
|
||||
query: LinearMutations.issue_link(issue_id, link, title)
|
||||
}
|
||||
response = post(payload)
|
||||
process_response(response)
|
||||
@@ -116,7 +116,7 @@ class Linear
|
||||
end
|
||||
|
||||
def process_response(response)
|
||||
return response.parsed_response['data'].with_indifferent_access if response.success?
|
||||
return response.parsed_response['data'].with_indifferent_access if response.success? && !response.parsed_response['data'].nil?
|
||||
|
||||
{ error: response.parsed_response, error_code: response.code }
|
||||
end
|
||||
|
||||
@@ -17,7 +17,6 @@ module LinearMutations
|
||||
input.map { |key, value| "#{key}: #{graphql_value(value)}" }.join(', ')
|
||||
end
|
||||
|
||||
# Main mutation creation function
|
||||
def self.issue_create(input)
|
||||
<<~GRAPHQL
|
||||
mutation {
|
||||
@@ -32,10 +31,10 @@ module LinearMutations
|
||||
GRAPHQL
|
||||
end
|
||||
|
||||
def self.issue_link(issue_id, link)
|
||||
def self.issue_link(issue_id, link, title)
|
||||
<<~GRAPHQL
|
||||
mutation {
|
||||
attachmentLinkURL(url: "#{link}", issueId: "#{issue_id}") {
|
||||
attachmentLinkURL(url: "#{link}", issueId: "#{issue_id}", title: "#{title}") {
|
||||
success
|
||||
attachment {
|
||||
id
|
||||
|
||||
@@ -127,15 +127,16 @@ RSpec.describe 'Linear Integration API', type: :request do
|
||||
let(:issue_id) { 'issue1' }
|
||||
let(:conversation) { create(:conversation, account: account) }
|
||||
let(:link) { "#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{account.id}/conversations/#{conversation.display_id}" }
|
||||
let(:title) { 'Sample Issue' }
|
||||
|
||||
context 'when it is an authenticated user' do
|
||||
context 'when the issue is linked successfully' do
|
||||
let(:linked_issue) { { 'id' => 'issue1', 'link' => 'https://linear.app/issue1' } }
|
||||
|
||||
it 'returns the linked issue' do
|
||||
allow(processor_service).to receive(:link_issue).with(link, issue_id).and_return(linked_issue)
|
||||
allow(processor_service).to receive(:link_issue).with(link, issue_id, title).and_return(linked_issue)
|
||||
post "/api/v1/accounts/#{account.id}/integrations/linear/link_issue",
|
||||
params: { conversation_id: conversation.display_id, issue_id: issue_id },
|
||||
params: { conversation_id: conversation.display_id, issue_id: issue_id, title: title },
|
||||
headers: agent.create_new_auth_token,
|
||||
as: :json
|
||||
expect(response).to have_http_status(:ok)
|
||||
@@ -145,9 +146,9 @@ RSpec.describe 'Linear Integration API', type: :request do
|
||||
|
||||
context 'when issue linking fails' do
|
||||
it 'returns error message' do
|
||||
allow(processor_service).to receive(:link_issue).with(link, issue_id).and_return(error: 'error message')
|
||||
allow(processor_service).to receive(:link_issue).with(link, issue_id, title).and_return(error: 'error message')
|
||||
post "/api/v1/accounts/#{account.id}/integrations/linear/link_issue",
|
||||
params: { conversation_id: conversation.display_id, issue_id: issue_id },
|
||||
params: { conversation_id: conversation.display_id, issue_id: issue_id, title: title },
|
||||
headers: agent.create_new_auth_token,
|
||||
as: :json
|
||||
expect(response).to have_http_status(:unprocessable_entity)
|
||||
|
||||
@@ -107,13 +107,14 @@ describe Integrations::Linear::ProcessorService do
|
||||
describe '#link_issue' do
|
||||
let(:link) { 'https://example.com' }
|
||||
let(:issue_id) { 'issue1' }
|
||||
let(:title) { 'Title' }
|
||||
let(:link_issue_response) { { id: issue_id, link: link, 'attachmentLinkURL': { 'attachment': { 'id': 'attachment1' } } } }
|
||||
let(:link_response) { { id: issue_id, link: link, link_id: 'attachment1' } }
|
||||
|
||||
context 'when Linear client returns valid data' do
|
||||
it 'returns parsed link data' do
|
||||
allow(linear_client).to receive(:link_issue).with(link, issue_id).and_return(link_issue_response)
|
||||
result = service.link_issue(link, issue_id)
|
||||
allow(linear_client).to receive(:link_issue).with(link, issue_id, title).and_return(link_issue_response)
|
||||
result = service.link_issue(link, issue_id, title)
|
||||
expect(result).to eq(link_response)
|
||||
end
|
||||
end
|
||||
@@ -122,8 +123,8 @@ describe Integrations::Linear::ProcessorService do
|
||||
let(:error_response) { { error: 'Some error message' } }
|
||||
|
||||
it 'returns the error' do
|
||||
allow(linear_client).to receive(:link_issue).with(link, issue_id).and_return(error_response)
|
||||
result = service.link_issue(link, issue_id)
|
||||
allow(linear_client).to receive(:link_issue).with(link, issue_id, title).and_return(error_response)
|
||||
result = service.link_issue(link, issue_id, title)
|
||||
expect(result).to eq(error_response)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -164,6 +164,7 @@ describe Linear do
|
||||
context 'when linking an issue' do
|
||||
let(:link) { 'https://example.com' }
|
||||
let(:issue_id) { 'issue1' }
|
||||
let(:title) { 'Title' }
|
||||
|
||||
context 'when the API response is success' do
|
||||
before do
|
||||
@@ -172,7 +173,7 @@ describe Linear do
|
||||
end
|
||||
|
||||
it 'links an issue' do
|
||||
response = linear_client.link_issue(link, issue_id)
|
||||
response = linear_client.link_issue(link, issue_id, title)
|
||||
expect(response).to eq({ 'attachmentLinkURL' => { 'id' => 'attachment1' } })
|
||||
end
|
||||
|
||||
@@ -180,7 +181,7 @@ describe Linear do
|
||||
let(:link) { '' }
|
||||
|
||||
it 'raises an exception' do
|
||||
expect { linear_client.link_issue(link, issue_id) }.to raise_error(ArgumentError, 'Missing link')
|
||||
expect { linear_client.link_issue(link, issue_id, title) }.to raise_error(ArgumentError, 'Missing link')
|
||||
end
|
||||
end
|
||||
|
||||
@@ -188,7 +189,7 @@ describe Linear do
|
||||
let(:issue_id) { '' }
|
||||
|
||||
it 'raises an exception' do
|
||||
expect { linear_client.link_issue(link, issue_id) }.to raise_error(ArgumentError, 'Missing issue id')
|
||||
expect { linear_client.link_issue(link, issue_id, title) }.to raise_error(ArgumentError, 'Missing issue id')
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -200,7 +201,7 @@ describe Linear do
|
||||
end
|
||||
|
||||
it 'raises an exception' do
|
||||
response = linear_client.link_issue(link, issue_id)
|
||||
response = linear_client.link_issue(link, issue_id, title)
|
||||
expect(response).to eq({ :error => { 'errors' => [{ 'message' => 'Error linking issue' }] }, :error_code => 422 })
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user