@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec . describe 'ATS Prefill Integration' , type : :request do
@ -39,31 +41,28 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
let ( :template ) do
create ( :template ,
account : account ,
author : user ,
folder : template_folder ,
fields : template_fields ,
submitters : [ { 'name' = > 'First Party' , 'uuid' = > 'submitter-uuid-1' } ]
)
account : account ,
author : user ,
folder : template_folder ,
fields : template_fields ,
submitters : [ { 'name' = > 'First Party' , 'uuid' = > 'submitter-uuid-1' } ] )
end
let ( :submission ) do
create ( :submission ,
template : template ,
account : account ,
created_by_user : user ,
template_fields : template_fields ,
template_submitters : [ { 'name' = > 'First Party' , 'uuid' = > 'submitter-uuid-1' } ]
)
template : template ,
account : account ,
created_by_user : user ,
template_fields : template_fields ,
template_submitters : [ { 'name' = > 'First Party' , 'uuid' = > 'submitter-uuid-1' } ] )
end
let ( :submitter ) do
create ( :submitter ,
submission : submission ,
uuid : 'submitter-uuid-1' ,
name : 'John Doe' ,
email : 'john@example.com'
)
submission : submission ,
uuid : 'submitter-uuid-1' ,
name : 'John Doe' ,
email : 'john@example.com' )
end
describe 'Controller ATS parameter processing' do
@ -76,8 +75,9 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
context 'when ATS fields and values are provided via Base64 parameters' do
let ( :test_params ) do
{
ats_fields : Base64 . urlsafe_encode64 ( [ 'employee_first_name' , 'employee_last_name' , 'employee_email' ] . to_json ) ,
ats_values : Base64 . urlsafe_encode64 ( { 'employee_first_name' = > 'John' , 'employee_last_name' = > 'Smith' , 'employee_email' = > 'john.smith@company.com' } . to_json )
ats_fields : Base64 . urlsafe_encode64 ( %w[ employee_first_name employee_last_name employee_email ] . to_json ) ,
ats_values : Base64 . urlsafe_encode64 ( { 'employee_first_name' = > 'John' , 'employee_last_name' = > 'Smith' ,
'employee_email' = > 'john.smith@company.com' } . to_json )
}
end
@ -85,10 +85,10 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
result = controller . send ( :fetch_ats_prefill_values_if_available )
expect ( result ) . to eq ( {
'employee_first_name' = > 'John' ,
'employee_last_name' = > 'Smith' ,
'employee_email' = > 'john.smith@company.com'
} )
'employee_first_name' = > 'John' ,
'employee_last_name' = > 'Smith' ,
'employee_email' = > 'john.smith@company.com'
} )
end
end
@ -165,9 +165,9 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
result = merge_ats_prefill_values ( existing_values , ats_values , template_fields )
expect ( result ) . to eq ( {
'field-1-uuid' = > 'Existing John' , # Should not override existing value
'field-2-uuid' = > 'ATS Smith' # Should add new ATS value
} )
'field-1-uuid' = > 'Existing John' , # Should not override existing value
'field-2-uuid' = > 'ATS Smith' # Should add new ATS value
} )
end
it 'handles empty ATS values gracefully' do
@ -177,8 +177,8 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
result = merge_ats_prefill_values ( existing_values , ats_values , template_fields )
expect ( result ) . to eq ( {
'field-1-uuid' = > 'Existing John'
} )
'field-1-uuid' = > 'Existing John'
} )
end
it 'handles missing template fields gracefully' do
@ -197,10 +197,22 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
it 'processes complete ATS prefill workflow from parameters to merged values' do
# Step 1: Simulate controller parameter processing
controller = SubmitFormController . new
allow ( controller ) . to receive ( :params ) . and_return ( ActionController :: Parameters . new ( {
ats_fields : Base64 . urlsafe_encode64 ( [ 'employee_first_name' , 'employee_last_name' , 'employee_email' ] . to_json ) ,
ats_values : Base64 . urlsafe_encode64 ( { 'employee_first_name' = > 'John' , 'employee_last_name' = > 'Smith' , 'employee_email' = > 'john.smith@company.com' } . to_json )
} ) )
ats_fields_data = %w[ employee_first_name employee_last_name employee_email ]
ats_values_data = {
'employee_first_name' = > 'John' ,
'employee_last_name' = > 'Smith' ,
'employee_email' = > 'john.smith@company.com'
}
encoded_fields = Base64 . urlsafe_encode64 ( ats_fields_data . to_json )
encoded_values = Base64 . urlsafe_encode64 ( ats_values_data . to_json )
params = ActionController :: Parameters . new ( {
ats_fields : encoded_fields ,
ats_values : encoded_values
} )
allow ( controller ) . to receive ( :params ) . and_return ( params )
ats_values = controller . send ( :fetch_ats_prefill_values_if_available )
@ -212,10 +224,10 @@ RSpec.describe 'ATS Prefill Integration', type: :request do
# Step 4: Verify final result
expect ( final_values ) . to eq ( {
'field-1-uuid' = > 'Existing John' , # Existing value preserved
'field-2-uuid' = > 'Smith' , # ATS value applied
'field-3-uuid' = > 'john.smith@company.com' # ATS value applied
} )
'field-1-uuid' = > 'Existing John' , # Existing value preserved
'field-2-uuid' = > 'Smith' , # ATS value applied
'field-3-uuid' = > 'john.smith@company.com' # ATS value applied
} )
end
end
end