Validate inclusion of document type in allowed document types

* Add custom message for inclusion validation to include the allowed values.
* Force user to choose document_type from select lik the one shown at verification form.
* Convert stored document_type to a human readable text
This commit is contained in:
Senén Rodero Rodríguez
2019-10-17 16:05:40 +02:00
parent a2f5317ae1
commit a150f2161e
11 changed files with 38 additions and 22 deletions

View File

@@ -3,6 +3,7 @@ class LocalCensusRecord < ApplicationRecord
validates :document_number, presence: true
validates :document_type, presence: true
validates :document_type, inclusion: { in: ["1", "2", "3"], allow_blank: true }
validates :date_of_birth, presence: true
validates :postal_code, presence: true
validates :document_number, uniqueness: { scope: :document_type }

View File

@@ -3,7 +3,7 @@
<div class="row">
<div class="small-12">
<%= f.text_field :document_type %>
<%= f.select :document_type, document_types, prompt: "" %>
</div>
</div>

View File

@@ -1,6 +1,6 @@
<tr id="<%= dom_id(local_census_record) %>" class="local_census_record">
<td>
<%= local_census_record.document_type %>
<%= humanize_document_type(local_census_record.document_type) %>
</td>
<td>
<%= local_census_record.document_number %>

View File

@@ -514,6 +514,10 @@ en:
invalid_date_range: must be on or after the draft start date
allegations_end_date:
invalid_date_range: must be on or after the comments start date
local_census_record:
attributes:
document_type:
inclusion: is not included in the list, allowed values are 1 for DNI, 2 for passport and 3 for residence card.
proposal:
attributes:
tag_list:

View File

@@ -516,6 +516,10 @@ es:
invalid_date_range: tiene que ser igual o posterior a la fecha de inicio del borrador
allegations_end_date:
invalid_date_range: tiene que ser igual o posterior a la fecha de inicio de los comentarios
local_census_record:
attributes:
document_type:
inclusion: no está incluido en la lista, los valores permitidos son 1 para DNI, 2 para pasaporte y 3 para tarjeta de residencia.
proposal:
attributes:
tag_list:

View File

@@ -69,8 +69,8 @@ describe "Imports" do
click_button "Save"
end
expect(page).to have_content "Errored rows (4)"
expect(page).to have_selector("#invalid-local-census-records tbody tr", count: 4)
expect(page).to have_content "Errored rows (5)"
expect(page).to have_selector("#invalid-local-census-records tbody tr", count: 5)
end
scenario "Should show error messages inside cells at errored group" do

View File

@@ -18,7 +18,7 @@ describe "Admin local census records" do
scenario "Should show existing local census records" do
visit admin_local_census_records_path
expect(page).to have_content(local_census_record.document_type)
expect(page).to have_content("DNI")
expect(page).to have_content(local_census_record.document_number)
expect(page).to have_content(local_census_record.date_of_birth)
expect(page).to have_content(local_census_record.postal_code)
@@ -85,7 +85,7 @@ describe "Admin local census records" do
scenario "Should show successful notice after create valid record" do
visit new_admin_local_census_record_path
fill_in :local_census_record_document_type, with: "DNI"
select "DNI", from: :local_census_record_document_type
fill_in :local_census_record_document_number, with: "#DOCUMENT"
select "1982", from: :local_census_record_date_of_birth_1i
select "July", from: :local_census_record_date_of_birth_2i
@@ -117,7 +117,7 @@ describe "Admin local census records" do
scenario "Should show successful notice after valid update" do
visit edit_admin_local_census_record_path(local_census_record)
fill_in :local_census_record_document_type, with: "NIE"
select "Passport", from: :local_census_record_document_type
fill_in :local_census_record_document_number, with: "#NIE_NUMBER"
select "1982", from: :local_census_record_date_of_birth_1i
select "August", from: :local_census_record_date_of_birth_2i
@@ -126,7 +126,7 @@ describe "Admin local census records" do
click_on "Save"
expect(page).to have_content "Local census record updated successfully!"
expect(page).to have_content "NIE"
expect(page).to have_content "Passport"
expect(page).to have_content "#NIE_NUMBER"
expect(page).to have_content "1982-08-08"
expect(page).to have_content "07007"

View File

@@ -1,5 +1,6 @@
"document_type","document_number","date_of_birth","postal_code"
,"44556678T","07/08/1984",7008
"DNI",,"07/08/1985",7009
"Passport","22556678T",,7010
"NIE","X11556678","07/08/1987",
"1",,"07/08/1985",7009
"2","22556678T",,7010
"3","X11556678","07/08/1987",
"DNI","Z11556678","07/08/1987",7011
1 document_type document_number date_of_birth postal_code
2 44556678T 07/08/1984 7008
3 DNI 1 07/08/1985 7009
4 Passport 2 22556678T 7010
5 NIE 3 X11556678 07/08/1987
6 DNI Z11556678 07/08/1987 7011

View File

@@ -1,5 +1,5 @@
"document_type","document_number","date_of_birth","postal_code"
"DNI","44556678T","07/08/1984",7008
"DNI","33556678T","07/08/1985",7008
"DNI","22556678T","07/08/1986",7008
"NIE","X11556678","07/08/1987",7008
"1","44556678T","07/08/1984",7008
"1","33556678T","07/08/1985",7008
"1","22556678T","07/08/1986",7008
"2","X11556678","07/08/1987",7008
1 document_type document_number date_of_birth postal_code
2 DNI 1 44556678T 07/08/1984 7008
3 DNI 1 33556678T 07/08/1985 7008
4 DNI 1 22556678T 07/08/1986 7008
5 NIE 2 X11556678 07/08/1987 7008

View File

@@ -20,6 +20,12 @@ describe LocalCensusRecord do
expect(local_census_record).not_to be_valid
end
it "is not valid when value is not included in allowed document types" do
local_census_record.document_type = "NIE"
expect(local_census_record).not_to be_valid
end
it "is not valid without date_of_birth" do
local_census_record.date_of_birth = nil
@@ -33,9 +39,9 @@ describe LocalCensusRecord do
end
it "is not valid when a record already exists with same document_number and document_type" do
create(:local_census_record, document_number: "#DOC_NUMBER", document_type: "#DOC_TYPE")
create(:local_census_record, document_number: "#DOC_NUMBER", document_type: "1")
local_census_record = build(:local_census_record, document_number: "#DOC_NUMBER",
document_type: "#DOC_TYPE")
document_type: "1")
expect(local_census_record).not_to be_valid
end

View File

@@ -49,7 +49,7 @@ describe LocalCensusRecords::Import do
local_census_record = LocalCensusRecord.find_by(document_number: "X11556678")
expect(local_census_record).not_to be_nil
expect(local_census_record.document_type).to eq("NIE")
expect(local_census_record.document_type).to eq("2")
expect(local_census_record.document_number).to eq("X11556678")
expect(local_census_record.date_of_birth).to eq(Date.parse("07/08/1987"))
expect(local_census_record.postal_code).to eq("7008")
@@ -69,11 +69,11 @@ describe LocalCensusRecords::Import do
import.save!
invalid_records_document_types = [nil, "DNI", "Passport", "NIE"]
invalid_records_document_numbers = ["44556678T", nil, "22556678T", "X11556678"]
invalid_records_document_types = [nil, "1", "2", "3", "DNI"]
invalid_records_document_numbers = ["44556678T", nil, "22556678T", "X11556678", "Z11556678"]
invalid_records_date_of_births = [Date.parse("07/08/1984"), Date.parse("07/08/1985"), nil,
Date.parse("07/08/1987")]
invalid_records_postal_codes = ["7008", "7009", "7010", nil]
Date.parse("07/08/1987"), Date.parse("07/08/1987")]
invalid_records_postal_codes = ["7008", "7009", "7010", nil, "7011"]
expect(import.invalid_records.map(&:document_type))
.to eq(invalid_records_document_types)
expect(import.invalid_records.map(&:document_number))