Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

255 lines
8.0 KiB

require "rails_helper"
RSpec.describe InterruptionScreenHelper do
form_handler = FormHandler.instance
let(:form) { form_handler.get_form("test_form") }
let(:subsection) { form.get_subsection("household_characteristics") }
let(:user) { create(:user) }
let(:lettings_log) do
create(
:lettings_log,
:in_progress,
hhmemb: 1,
ecstat1: 1,
earnings: 750,
incfreq: 1,
assigned_to: user,
sex1: "F",
brent: 12_345,
)
end
around do |example|
Timecop.freeze(Time.zone.local(2022, 1, 1)) do
Singleton.__init__(FormHandler)
example.run
end
Timecop.return
Singleton.__init__(FormHandler)
end
describe "display_informative_text" do
context "when 2 out of 2 arguments are given" do
it "returns correct informative text" do
informative_text = {
"translation" => "soft_validations.net_income.hint_text",
"arguments" => [
{
"key" => "net_income_higher_or_lower_text",
"label" => false,
"i18n_template" => "net_income_higher_or_lower_text",
},
],
}
expect(display_informative_text(informative_text, lettings_log))
.to eq(
I18n.t(
"soft_validations.net_income.hint_text",
net_income_higher_or_lower_text: "higher",
),
)
end
end
context "when 1 out of 1 arguments is given" do
it "returns correct informative text" do
informative_text = {
"translation" => "test.one_argument",
"arguments" => [
{
"key" => "ecstat1",
"label" => true,
"i18n_template" => "ecstat1",
},
],
}
expect(display_informative_text(informative_text, lettings_log))
.to eq(
I18n.t(
"test.one_argument",
ecstat1: lettings_log.form.get_question("ecstat1", lettings_log).answer_label(lettings_log).downcase,
),
)
end
end
context "when 2 out of 1 arguments are given" do
it "returns correct informative text" do
informative_text = {
"translation" => "test.one_argument",
"arguments" => [
{
"key" => "ecstat1",
"label" => true,
"i18n_template" => "ecstat1",
},
{
"key" => "earnings",
"label" => true,
"i18n_template" => "earnings",
},
],
}
expect(display_informative_text(informative_text, lettings_log))
.to eq(
I18n.t(
"test.one_argument",
ecstat1: lettings_log.form.get_question("ecstat1", lettings_log).answer_label(lettings_log).downcase,
),
)
end
end
context "when 1 out of 2 arguments are given" do
it "returns an empty string" do
informative_text = {
"translation" => "soft_validations.net_income.hint_text",
"arguments" => [
{
"key" => "ecstat1",
"label" => true,
"i18n_template" => "ecstat1",
},
],
}
expect(display_informative_text(informative_text, lettings_log))
.to eq("")
end
end
context "when an argument is given not for a label" do
translation = "test.title_text.one_argument"
it "returns the correct text" do
informative_text_hash = {
"translation" => translation,
"arguments" => [
{
"key" => "earnings",
"i18n_template" => "argument",
},
],
}
expect(display_informative_text(informative_text_hash, lettings_log)).to eq(I18n.t(translation, argument: lettings_log.earnings))
end
end
context "when and argument is given with a key and arguments for the key" do
it "makes the correct method call" do
informative_text_hash = {
"arguments" => [
{
"key" => "field_formatted_as_currency",
"arguments_for_key" => "brent",
"i18n_template" => "argument",
},
],
}
allow(lettings_log).to receive(:field_formatted_as_currency)
display_informative_text(informative_text_hash, lettings_log)
expect(lettings_log).to have_received(:field_formatted_as_currency).with("brent")
end
it "returns the correct text" do
translation = "test.title_text.one_argument"
informative_text_hash = {
"translation" => translation,
"arguments" => [
{
"key" => "field_formatted_as_currency",
"arguments_for_key" => "brent",
"i18n_template" => "argument",
},
],
}
expect(display_informative_text(informative_text_hash, lettings_log)).to eq("You said this: £12,345.00")
end
end
context "when a string given" do
it "returns the string" do
test_string = "some words"
expect(display_informative_text(test_string, lettings_log)).to eq(test_string)
end
end
end
describe "display_title_text" do
context "when title text has no arguments" do
it "returns the correct title text" do
title_text = { "translation" => "test.title_text.no_argument" }
expect(display_title_text(title_text, lettings_log))
.to eq(I18n.t("test.title_text.no_argument"))
end
end
context "when title text has arguments" do
it "returns the correct title text" do
title_text = {
"translation" => "test.title_text.one_argument",
"arguments" => [
{
"key" => "ecstat1",
"label" => true,
"i18n_template" => "argument",
},
],
}
expect(display_title_text(title_text, lettings_log))
.to eq(I18n.t("test.title_text.one_argument", argument: lettings_log.form.get_question("ecstat1", lettings_log).answer_label(lettings_log).downcase))
end
context "when and argument is given with a key and arguments for the key" do
it "makes the correct method call" do
title_text = {
"arguments" => [
{
"key" => "field_formatted_as_currency",
"arguments_for_key" => "brent",
"i18n_template" => "argument",
},
],
}
allow(lettings_log).to receive(:field_formatted_as_currency)
display_title_text(title_text, lettings_log)
expect(lettings_log).to have_received(:field_formatted_as_currency).with("brent")
end
it "returns the correct text" do
translation = "test.title_text.one_argument"
title_text = {
"translation" => translation,
"arguments" => [
{
"key" => "field_formatted_as_currency",
"arguments_for_key" => "brent",
"i18n_template" => "argument",
},
],
}
expect(display_title_text(title_text, lettings_log)).to eq("You said this: £12,345.00")
end
end
end
context "when title text is not defined" do
it "returns an empty string" do
expect(display_title_text(nil, lettings_log)).to eq("")
end
end
context "when title text is empty string" do
it "returns an empty string" do
expect(display_title_text("", lettings_log)).to eq("")
end
end
end
describe "soft_validation_affected_questions" do
let(:question) { lettings_log.form.get_question("retirement_value_check", lettings_log) }
it "returns a list of questions affected by the soft validation" do
expect(soft_validation_affected_questions(question, lettings_log).count).to eq(2)
expect(soft_validation_affected_questions(question, lettings_log).map(&:id)).to eq(%w[age1 ecstat1])
end
end
end