71 lines
2.3 KiB
Ruby
71 lines
2.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe Integrations::Linear::ProcessorService do
|
|
let(:account) { create(:account) }
|
|
let(:api_key) { 'valid_api_key' }
|
|
let(:linear_client) { instance_double(Linear) }
|
|
let(:service) { described_class.new(account: account) }
|
|
|
|
before do
|
|
create(:integrations_hook, :linear, account: account)
|
|
allow(Linear).to receive(:new).and_return(linear_client)
|
|
end
|
|
|
|
describe '#teams' do
|
|
context 'when Linear client returns valid data' do
|
|
let(:teams_response) do
|
|
{ 'teams' => { 'nodes' => [{ 'id' => 'team1', 'name' => 'Team One' }] } }
|
|
end
|
|
|
|
it 'returns parsed team data' do
|
|
allow(linear_client).to receive(:teams).and_return(teams_response)
|
|
result = service.teams
|
|
expect(result).to contain_exactly({ 'id' => 'team1', 'name' => 'Team One' })
|
|
end
|
|
end
|
|
|
|
context 'when Linear client returns an error' do
|
|
let(:error_response) { { error: 'Some error message' } }
|
|
|
|
it 'returns the error' do
|
|
allow(linear_client).to receive(:teams).and_return(error_response)
|
|
result = service.teams
|
|
expect(result).to eq(error_response)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#team_entites' do
|
|
let(:team_id) { 'team1' }
|
|
let(:entities_response) do
|
|
{
|
|
'users' => { 'nodes' => [{ 'id' => 'user1', 'name' => 'User One' }] },
|
|
'projects' => { 'nodes' => [{ 'id' => 'project1', 'name' => 'Project One' }] },
|
|
'workflowStates' => { 'nodes' => [] },
|
|
'issueLabels' => { 'nodes' => [{ 'id' => 'bug', 'name' => 'Bug' }] }
|
|
}
|
|
end
|
|
|
|
context 'when Linear client returns valid data' do
|
|
it 'returns parsed entity data' do
|
|
allow(linear_client).to receive(:team_entites).with(team_id).and_return(entities_response)
|
|
result = service.team_entites(team_id)
|
|
expect(result).to have_key(:users)
|
|
expect(result).to have_key(:projects)
|
|
expect(result).to have_key(:states)
|
|
expect(result).to have_key(:labels)
|
|
end
|
|
end
|
|
|
|
context 'when Linear client returns an error' do
|
|
let(:error_response) { { error: 'Some error message' } }
|
|
|
|
it 'returns the error' do
|
|
allow(linear_client).to receive(:team_entites).with(team_id).and_return(error_response)
|
|
result = service.team_entites(team_id)
|
|
expect(result).to eq(error_response)
|
|
end
|
|
end
|
|
end
|
|
end
|