2020-06-23 00:09:42 +05:30
# frozen_string_literal: true
require 'spec_helper'
2020-07-28 23:09:34 +05:30
RSpec . describe ServiceFieldEntity do
2020-06-23 00:09:42 +05:30
let ( :request ) { double ( 'request' ) }
2021-09-30 23:02:18 +05:30
subject { described_class . new ( field , request : request , service : integration ) . as_json }
2020-06-23 00:09:42 +05:30
before do
2021-09-30 23:02:18 +05:30
allow ( request ) . to receive ( :service ) . and_return ( integration )
2020-06-23 00:09:42 +05:30
end
describe '#as_json' do
context 'Jira Service' do
2021-09-30 23:02:18 +05:30
let ( :integration ) { create ( :jira_integration ) }
2020-06-23 00:09:42 +05:30
context 'field with type text' do
2021-09-30 23:02:18 +05:30
let ( :field ) { integration_field ( 'username' ) }
2020-06-23 00:09:42 +05:30
it 'exposes correct attributes' do
expected_hash = {
2022-05-07 20:08:51 +05:30
section : 'connection' ,
2020-06-23 00:09:42 +05:30
type : 'text' ,
name : 'username' ,
title : 'Username or Email' ,
2021-04-29 21:17:54 +05:30
placeholder : nil ,
help : 'Use a username for server version and an email for cloud version.' ,
2020-06-23 00:09:42 +05:30
required : true ,
choices : nil ,
2021-12-11 22:18:48 +05:30
value : 'jira_username' ,
checkbox_label : nil
2020-06-23 00:09:42 +05:30
}
is_expected . to eq ( expected_hash )
end
end
context 'field with type password' do
2021-09-30 23:02:18 +05:30
let ( :field ) { integration_field ( 'password' ) }
2020-06-23 00:09:42 +05:30
it 'exposes correct attributes but hides password' do
expected_hash = {
2022-05-07 20:08:51 +05:30
section : 'connection' ,
2020-06-23 00:09:42 +05:30
type : 'password' ,
name : 'password' ,
2021-04-29 21:17:54 +05:30
title : 'Enter new password or API token' ,
placeholder : nil ,
help : 'Leave blank to use your current password or API token.' ,
2020-06-23 00:09:42 +05:30
required : true ,
choices : nil ,
2021-12-11 22:18:48 +05:30
value : 'true' ,
checkbox_label : nil
2020-06-23 00:09:42 +05:30
}
is_expected . to eq ( expected_hash )
end
end
end
context 'EmailsOnPush Service' do
2021-09-04 01:27:46 +05:30
let ( :integration ) { create ( :emails_on_push_integration , send_from_committer_email : '1' ) }
2020-06-23 00:09:42 +05:30
context 'field with type checkbox' do
2021-09-30 23:02:18 +05:30
let ( :field ) { integration_field ( 'send_from_committer_email' ) }
2020-06-23 00:09:42 +05:30
2020-07-28 23:09:34 +05:30
it 'exposes correct attributes and casts value to Boolean' do
2020-06-23 00:09:42 +05:30
expected_hash = {
2022-05-07 20:08:51 +05:30
section : nil ,
2020-06-23 00:09:42 +05:30
type : 'checkbox' ,
name : 'send_from_committer_email' ,
title : 'Send from committer' ,
placeholder : nil ,
required : nil ,
choices : nil ,
2021-12-11 22:18:48 +05:30
value : 'true' ,
checkbox_label : nil
2020-06-23 00:09:42 +05:30
}
is_expected . to include ( expected_hash )
2021-04-29 21:17:54 +05:30
expect ( subject [ :help ] ) . to include ( " Send notifications from the committer's email address if the domain matches the domain used by your GitLab instance " )
2020-06-23 00:09:42 +05:30
end
end
context 'field with type select' do
2021-09-30 23:02:18 +05:30
let ( :field ) { integration_field ( 'branches_to_be_notified' ) }
2020-06-23 00:09:42 +05:30
it 'exposes correct attributes' do
expected_hash = {
2022-05-07 20:08:51 +05:30
section : nil ,
2020-06-23 00:09:42 +05:30
type : 'select' ,
name : 'branches_to_be_notified' ,
2021-12-11 22:18:48 +05:30
title : 'Branches for which notifications are to be sent' ,
2020-06-23 00:09:42 +05:30
placeholder : nil ,
required : nil ,
choices : [ [ 'All branches' , 'all' ] , [ 'Default branch' , 'default' ] , [ 'Protected branches' , 'protected' ] , [ 'Default branch and protected branches' , 'default_and_protected' ] ] ,
help : nil ,
2021-12-11 22:18:48 +05:30
value : nil ,
checkbox_label : nil
2020-06-23 00:09:42 +05:30
}
is_expected . to eq ( expected_hash )
end
end
end
end
2021-09-30 23:02:18 +05:30
def integration_field ( name )
integration . global_fields . find { | f | f [ :name ] == name }
end
2020-06-23 00:09:42 +05:30
end