Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reference (nickname) field mandatory for Innovation & PO applications #2974

Merged
merged 3 commits into from
Jun 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/models/form_answer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ class FormAnswer < ApplicationRecord

BUSINESS_AWARD_TYPES = %w[trade innovation development mobility]

AWARD_TYPES_WITH_NICKNAME_REQUIRED = %w[innovation mobility]

AWARD_TYPE_FULL_NAMES = {
"trade" => "International Trade",
"innovation" => "Innovation",
Expand Down Expand Up @@ -133,6 +135,7 @@ def secondary
inclusion: {
in: POSSIBLE_AWARDS,
}
validates :nickname, presence: true, if: -> { award_type.in?(AWARD_TYPES_WITH_NICKNAME_REQUIRED) }
validates :urn, uniqueness: { allow_blank: true } # rubocop:disable Rails/UniqueValidationWithoutIndex
validates :sic_code, format: { with: SicCode::REGEX }, allow_blank: true
validate :validate_answers
Expand Down
13 changes: 8 additions & 5 deletions app/views/content_only/_award_nickname.html.slim
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
- is_nickname_required = award_type.in?(FormAnswer::AWARD_TYPES_WITH_NICKNAME_REQUIRED)
- is_promotion = award_type == "promotion"

.page-pre-eligibility
h2.govuk-heading-l The Process

Expand All @@ -7,7 +10,7 @@
ul.govuk-list.govuk-list--bullet
li
' This is to ensure that your
- if award_type == "promotion"
- if is_promotion
' nominee
- else
' organisation
Expand All @@ -25,7 +28,7 @@
li
p.govuk-body
' Submit your
- if award_type == "promotion"
- if is_promotion
' nomination
- else
' application
Expand All @@ -36,15 +39,15 @@
' .
li
' You can still edit submitted
- if award_type == "promotion"
- if is_promotion
' nominations
- else
' applications
' up to this date.

- if award_type == "innovation"
- if is_nickname_required
= render "content_only/award_nickname_block"

p#get-started.get-started.group.govuk-body
- title = award_type == "innovation" ? "Save and start eligibility questionnaire" : "Start eligibility questionnaire"
- title = is_nickname_required ? "Save and start eligibility questionnaire" : "Start eligibility questionnaire"
= submit_tag title, class: "govuk-button", rel: "external"
4 changes: 2 additions & 2 deletions app/views/content_only/_award_nickname_block.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ br

.govuk-form-group
h2.govuk-label-wrapper
= label_tag :nickname, "Please choose a reference for this application (optional):", class: 'govuk-label govuk-label--l', for: 'award-nickname'
= label_tag :nickname, "Please choose a reference for this application:", class: 'govuk-label govuk-label--l', for: 'award-nickname'

p.govuk-hint
| If you have more than one innovation (and want them to be considered for an award), you will have to submit a separate application for each of them.
p.govuk-hint
| You can create a reference, for example, 'Fibre optic device' so that it helps you and your collaborators to distinguish between different innovation applications. It will appear on the Applications page. Once chosen, your reference is permanent.

= text_field_tag :nickname, "", autocomplete: "off", type: "text", class: "govuk-input govuk-!-width-two-thirds", id: 'award-nickname'
= text_field_tag :nickname, "", autocomplete: "off", required: true, type: "text", class: "govuk-input govuk-!-width-two-thirds", id: 'award-nickname'
7 changes: 3 additions & 4 deletions app/views/content_only/apply_social_mobility_award.html.slim
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
h1.govuk-heading-xl Promoting Opportunity Award (through social mobility) Application

.article-related-positioning-container
.article-container
article.group role="article"
= form_tag new_social_mobility_form_path, method: :get do
= render "award_nickname", award_type: "mobility"
article.group role="article"
= form_tag new_social_mobility_form_path, method: :get do
= render "award_nickname", award_type: "mobility"
23 changes: 23 additions & 0 deletions lib/tasks/form_answers.rake
Original file line number Diff line number Diff line change
Expand Up @@ -297,4 +297,27 @@ namespace :form_answers do

Rails.logger.info "\e[32mCompleted!\e[0m"
end

desc "Populate `nickname` field for Innovation and Promoting Opportunity applications"
task populate_nickname: :environment do
scope = FormAnswer.where(nickname: nil).where(award_type: FormAnswer::AWARD_TYPES_WITH_NICKNAME_REQUIRED)
count = scope.count

idx = 0

print "\e[32mPopulating nickname for #{count} records…\e[0m"

scope.find_in_batches(batch_size: 500) do |collection|
idx += collection.size
ids = collection.map(&:id).join(",").to_s

query = %{
UPDATE form_answers
SET nickname = CASE WHEN award_type = 'mobility' THEN 'Promoting Opportunity' ELSE 'Innovation' END
WHERE form_answers.id IN (#{ids})
}.squish

ActiveRecord::Base.connection.execute(query)
end
end
end
1 change: 1 addition & 0 deletions spec/acceptance/steps/application_form_creation_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
step "I create innovation form" do
step "I go to dashboard"
click_link "New application", href: "/apply_innovation_award"
fill_in "nickname", with: "Innovation"
click_button "Save and start eligibility questionnaire"
click_link "Continue to eligibility questions"
click_button "Continue" # eligibility step
Expand Down
20 changes: 17 additions & 3 deletions spec/controllers/form_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,21 @@

describe "#new_social_mobility_form" do
it "allows to open mobility form" do
expect(get(:new_social_mobility_form)).to redirect_to(edit_form_url(FormAnswer.where(award_type: "mobility").last))
expect(get(:new_social_mobility_form, params: { nickname: "Promoting Opportunity" })).to redirect_to(edit_form_url(FormAnswer.where(award_type: "mobility").last))
end

it "does not allow to create an application without nickname/reference field filled" do
expect { get(:new_social_mobility_form, params: { nickname: "" }) }.to raise_error(ActiveRecord::RecordInvalid)
end
end

describe "#new_innovation_form" do
it "allows to open innovation form" do
expect(get(:new_innovation_form, params: { nickname: "Innovation" })).to redirect_to(edit_form_url(FormAnswer.where(award_type: "innovation").last))
end

it "does not allow to create an application without nickname/reference field filled" do
expect { get(:new_innovation_form, params: { nickname: "" }) }.to raise_error(ActiveRecord::RecordInvalid)
end
end

Expand All @@ -69,7 +83,7 @@

describe "#new_social_mobility_form" do
it "allows to create an application if mobility deadline has past" do
expect(get(:new_social_mobility_form)).to redirect_to(edit_form_url(FormAnswer.where(award_type: "mobility").last))
expect(get(:new_social_mobility_form, params: { nickname: "Promoting Opportunity" })).to redirect_to(edit_form_url(FormAnswer.where(award_type: "mobility").last))
end

it "does not allow to create an application if mobility start deadline has not past" do
Expand All @@ -91,7 +105,7 @@

describe "#new_innovation_form" do
it "allows to create an application if innovation start deadline has past" do
expect(get(:new_innovation_form)).to redirect_to(edit_form_url(FormAnswer.where(award_type: "innovation").last))
expect(get(:new_innovation_form, params: { nickname: "Innovation" })).to redirect_to(edit_form_url(FormAnswer.where(award_type: "innovation").last))
end

it "does not allow to create an application if innovation start deadline has not past" do
Expand Down
2 changes: 2 additions & 0 deletions spec/factories/form_answer_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@

trait :innovation do
award_type { "innovation" }
nickname { "Innovation" }
document do
FormAnswer::DocumentParser.parse_json_document(
JSON.parse(
Expand All @@ -73,6 +74,7 @@

trait :mobility do
award_type { "mobility" }
nickname { "Promoting Opportunity" }
document do
FormAnswer::DocumentParser.parse_json_document(
JSON.parse(
Expand Down
2 changes: 1 addition & 1 deletion spec/features/users/eligibility_form_fulfillment_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
it "process the eligibility form" do
visit dashboard_path
new_application("Innovation Award")
# fill_in("nickname", with: "innovation nick")
fill_in("nickname", with: "innovation nick")
click_button("Save and start eligibility questionnaire")
click_link("Continue to eligibility questions")
form_choice(["Yes", "Yes", /Business/, /Product/, "Yes", "No", "Yes", "Yes", "Yes", "Yes"])
Expand Down
Loading