Skip to content

Commit 428c6e5

Browse files
committed
Change JSON generator to use language
The JSON generator used to take submission_locale as an argument, and always include it in the JSON. Now, only submissions for forms with Welsh will have language set to en or cy. This means all current forms won't include a language field unless they have a Welsh translation added. When the JSON is generated the language field will be set to nil and the field won't be included. The argument name has been changed to language as it's more direct and shows what's being set in the JSON.
1 parent e047249 commit 428c6e5

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
class JsonSubmissionGenerator
2-
def self.generate_submission(form:, all_steps:, submission_reference:, timestamp:, is_s3_submission:, submission_locale:)
2+
def self.generate_submission(form:, all_steps:, submission_reference:, timestamp:, is_s3_submission:, language:)
33
submission = {
44
"$schema" => "#{Settings.forms_product_page.base_url}/json-submissions/v1/schema",
55
form_name: form.name,
66
submission_reference:,
77
submitted_at: timestamp.getutc.iso8601(3),
8-
language: submission_locale,
98
answers: all_steps.flat_map { |step| step.show_answer_in_json(is_s3_submission) },
109
}
10+
11+
if language.present?
12+
submission[:language] = language
13+
end
14+
1115
JSON.pretty_generate(submission)
1216
end
1317
end

spec/lib/json_submission_generator_spec.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
let(:selection_step) { build :step, page: build(:page, :with_selections_settings), question: selection_question }
1515
let(:all_steps) { [text_step, name_step, file_step, address_step, selection_step] }
1616
let(:submission_reference) { Faker::Alphanumeric.alphanumeric(number: 8).upcase }
17-
let(:submission_locale) { :en }
17+
let(:language) { nil }
1818
let(:timestamp) do
1919
Time.use_zone("London") { Time.zone.local(2022, 9, 14, 8, 0, 0) }
2020
end
2121

2222
describe ".generate_submission" do
23-
subject(:json_submission) { described_class.generate_submission(form:, all_steps:, submission_reference:, timestamp:, is_s3_submission:, submission_locale:) }
23+
subject(:json_submission) { described_class.generate_submission(form:, all_steps:, submission_reference:, timestamp:, is_s3_submission:, language:) }
2424

2525
let(:parsed_json) { JSON.parse(json_submission) }
2626

@@ -57,7 +57,6 @@
5757
"form_name" => form.name,
5858
"submission_reference" => submission_reference,
5959
"submitted_at" => "2022-09-14T07:00:00.000Z",
60-
"language" => "en",
6160
"answers" => [
6261
{
6362
"question_id" => text_step.page.id,
@@ -110,7 +109,6 @@
110109
"form_name" => form.name,
111110
"submission_reference" => submission_reference,
112111
"submitted_at" => "2022-09-14T07:00:00.000Z",
113-
"language" => "en",
114112
"answers" => [
115113
{
116114
"question_id" => repeatable_step.page.id,
@@ -129,6 +127,16 @@
129127
})
130128
end
131129
end
130+
131+
context "when the language is not nil'" do
132+
let(:language) { :cy }
133+
134+
it "generates the submission JSON with the language field" do
135+
expect(parsed_json).to include(
136+
"language" => "cy",
137+
)
138+
end
139+
end
132140
end
133141

134142
context "when the submission is being sent to an S3 bucket" do

0 commit comments

Comments
 (0)