diff --git a/app/presenters/money_question_presenter.rb b/app/presenters/money_question_presenter.rb index 6f8a0c69cf4..5656f0ebd66 100644 --- a/app/presenters/money_question_presenter.rb +++ b/app/presenters/money_question_presenter.rb @@ -1,5 +1,7 @@ class MoneyQuestionPresenter < QuestionPresenter + include SmartAnswer::FormattingHelper + def response_label(value) - value_for_interpolation(SmartAnswer::Money.new(value)) + format_money(SmartAnswer::Money.new(value)) end end diff --git a/app/presenters/outcome_presenter.rb b/app/presenters/outcome_presenter.rb index 00602753379..ca65cca375c 100644 --- a/app/presenters/outcome_presenter.rb +++ b/app/presenters/outcome_presenter.rb @@ -6,7 +6,7 @@ def initialize(i18n_prefix, node, state = nil, options = {}) template_name: @node.name.to_s, locals: @state.to_hash, helpers: [ - SmartAnswer::OutcomeHelper, + SmartAnswer::FormattingHelper, SmartAnswer::OverseasPassportsHelper, SmartAnswer::MarriageAbroadHelper ] diff --git a/app/presenters/question_presenter.rb b/app/presenters/question_presenter.rb index 2e40632d51e..e0e652d1709 100644 --- a/app/presenters/question_presenter.rb +++ b/app/presenters/question_presenter.rb @@ -3,9 +3,7 @@ class QuestionPresenter < NodePresenter delegate [ :translate!, :translate_and_render, - :translate_option, - :value_for_interpolation, - :number_with_delimiter + :translate_option ] => :@renderer def initialize(i18n_prefix, node, state = nil, options = {}) diff --git a/app/presenters/salary_question_presenter.rb b/app/presenters/salary_question_presenter.rb index 3326ecceba4..056969f0901 100644 --- a/app/presenters/salary_question_presenter.rb +++ b/app/presenters/salary_question_presenter.rb @@ -1,5 +1,7 @@ class SalaryQuestionPresenter < QuestionPresenter + include SmartAnswer::FormattingHelper + def response_label(value) - value_for_interpolation(SmartAnswer::Salary.new(value)) + format_salary(SmartAnswer::Salary.new(value)) end end diff --git a/app/presenters/value_question_presenter.rb b/app/presenters/value_question_presenter.rb index 59749c47964..09161d89fc4 100644 --- a/app/presenters/value_question_presenter.rb +++ b/app/presenters/value_question_presenter.rb @@ -1,4 +1,6 @@ class ValueQuestionPresenter < QuestionPresenter + include ActionView::Helpers::NumberHelper + def response_label(value) number_with_delimiter(value) end diff --git a/lib/smart_answer/outcome_helper.rb b/lib/smart_answer/formatting_helper.rb similarity index 56% rename from lib/smart_answer/outcome_helper.rb rename to lib/smart_answer/formatting_helper.rb index 58b3463364d..81952b06f86 100644 --- a/lib/smart_answer/outcome_helper.rb +++ b/lib/smart_answer/formatting_helper.rb @@ -1,9 +1,15 @@ module SmartAnswer - module OutcomeHelper + module FormattingHelper + include ActionView::Helpers::NumberHelper + def format_money(amount) number_to_currency(amount, precision: ((amount.to_f == amount.to_f.round) ? 0 : 2)) end + def format_salary(salary) + number_to_currency(salary.amount, precision: 0) + " per " + salary.period + end + def format_date(date) return nil unless date date.strftime('%e %B %Y') diff --git a/lib/smart_answer/i18n_renderer.rb b/lib/smart_answer/i18n_renderer.rb index 925648fe4a1..73e306f6ef3 100644 --- a/lib/smart_answer/i18n_renderer.rb +++ b/lib/smart_answer/i18n_renderer.rb @@ -25,6 +25,8 @@ def translate!(subkey, rescue_exception: true) nil end + private + def value_for_interpolation(value, nested = false) case value when Date then I18n.localize(value, format: :long) @@ -50,8 +52,6 @@ def value_for_interpolation(value, nested = false) end end - private - def i18n_node_prefix "#{@i18n_prefix}.#{@node.name}" end diff --git a/test/unit/outcome_helper_test.rb b/test/unit/formatting_helper_test.rb similarity index 68% rename from test/unit/outcome_helper_test.rb rename to test/unit/formatting_helper_test.rb index 7058249c5bd..fbea24fb485 100644 --- a/test/unit/outcome_helper_test.rb +++ b/test/unit/formatting_helper_test.rb @@ -1,9 +1,8 @@ require_relative '../test_helper' module SmartAnswer - class OutcomeHelperTest < ActiveSupport::TestCase - include ActionView::Helpers::NumberHelper - include OutcomeHelper + class FormattingHelperTest < ActiveSupport::TestCase + include FormattingHelper test "#format_money doesn't add pence for amounts in whole pounds" do assert_equal '£1', format_money('1.00') @@ -20,5 +19,9 @@ class OutcomeHelperTest < ActiveSupport::TestCase test '#format_date returns nil when the value is nil' do assert_equal nil, format_date(nil) end + + test '#format_salary returns whole number of pounds plus the period in which it was earned' do + assert_equal '£123 per week', format_salary(Salary.new('123.45', 'week')) + end end end