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' ) }
subject { described_class . new ( field , request : request , service : service ) . as_json }
before do
allow ( request ) . to receive ( :service ) . and_return ( service )
end
describe '#as_json' do
context 'Jira Service' do
let ( :service ) { create ( :jira_service ) }
context 'field with type text' do
let ( :field ) { service . global_fields . find { | field | field [ :name ] == 'username' } }
it 'exposes correct attributes' do
expected_hash = {
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 ,
value : 'jira_username'
}
is_expected . to eq ( expected_hash )
end
end
context 'field with type password' do
let ( :field ) { service . global_fields . find { | field | field [ :name ] == 'password' } }
it 'exposes correct attributes but hides password' do
expected_hash = {
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 ,
value : 'true'
}
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' ) }
let ( :service ) { integration } # TODO: remove when https://gitlab.com/gitlab-org/gitlab/-/issues/330300 is complete
2020-06-23 00:09:42 +05:30
context 'field with type checkbox' do
2021-09-04 01:27:46 +05:30
let ( :field ) { integration . global_fields . find { | field | field [ :name ] == '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 = {
type : 'checkbox' ,
name : 'send_from_committer_email' ,
title : 'Send from committer' ,
placeholder : nil ,
required : nil ,
choices : nil ,
2020-07-28 23:09:34 +05:30
value : 'true'
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-04 01:27:46 +05:30
let ( :field ) { integration . global_fields . find { | field | field [ :name ] == 'branches_to_be_notified' } }
2020-06-23 00:09:42 +05:30
it 'exposes correct attributes' do
expected_hash = {
type : 'select' ,
name : 'branches_to_be_notified' ,
title : nil ,
placeholder : nil ,
required : nil ,
choices : [ [ 'All branches' , 'all' ] , [ 'Default branch' , 'default' ] , [ 'Protected branches' , 'protected' ] , [ 'Default branch and protected branches' , 'default_and_protected' ] ] ,
help : nil ,
value : nil
}
is_expected . to eq ( expected_hash )
end
end
end
end
end