Allow to SignatureSheet parse new fields
- In the previous version, each signature was equivalent to a document and we separated them by commas. Now each signature may also need the fields birth date and postal code. So we separated each signature with a semicolon and separated each of its fields by commas. Example old version: "12345678X, 87654321Y" Example new version: "12345678X, 31/12/1980, 28001; 87654321Y, 31/12/1981, 28002" - Update translations: "Write the numbers separated by commas (,)" to "Write the numbers separated by semicolons (;)"
This commit is contained in:
@@ -21,15 +21,21 @@ class SignatureSheet < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def verify_signatures
|
def verify_signatures
|
||||||
parsed_required_fields_to_verify_groups.each do |document_number|
|
parsed_required_fields_to_verify_groups.each do |required_fields_to_verify|
|
||||||
signature = signatures.where(document_number: document_number).first_or_create
|
document_number = required_fields_to_verify[0]
|
||||||
|
date_of_birth = required_fields_to_verify[1]
|
||||||
|
postal_code = required_fields_to_verify[2]
|
||||||
|
|
||||||
|
signature = signatures.where(document_number: document_number,
|
||||||
|
date_of_birth: date_of_birth,
|
||||||
|
postal_code: postal_code).first_or_create
|
||||||
signature.verify
|
signature.verify
|
||||||
end
|
end
|
||||||
update(processed: true)
|
update(processed: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def parsed_required_fields_to_verify_groups
|
def parsed_required_fields_to_verify_groups
|
||||||
required_fields_to_verify.split(/\r\n|\n|[,]/).collect {|d| d.gsub(/\s+/, "") }
|
required_fields_to_verify.split(/[;]/).collect {|d| d.gsub(/\s+/, "") }.map { |group| group.split(/[,]/)}
|
||||||
end
|
end
|
||||||
|
|
||||||
def signable_found
|
def signable_found
|
||||||
|
|||||||
@@ -886,7 +886,7 @@ ast:
|
|||||||
new: Nueva hoja de firmas
|
new: Nueva hoja de firmas
|
||||||
new:
|
new:
|
||||||
title: Nueva hoja de firmas
|
title: Nueva hoja de firmas
|
||||||
document_numbers_note: "Introduce los números separados por comas (,)"
|
document_numbers_note: "Introduce los números separados por punto y coma (;)"
|
||||||
submit: Crear hoja de firmas
|
submit: Crear hoja de firmas
|
||||||
show:
|
show:
|
||||||
created_at: Creado
|
created_at: Creado
|
||||||
|
|||||||
@@ -862,7 +862,7 @@ ca:
|
|||||||
new: Nou full de signatures
|
new: Nou full de signatures
|
||||||
new:
|
new:
|
||||||
title: Nou full de signatures
|
title: Nou full de signatures
|
||||||
document_numbers_note: "Introdueix els números separats per comes (,)"
|
document_numbers_note: "Introdueix els números separats per punt i coma (;)"
|
||||||
submit: Crear full de signatures
|
submit: Crear full de signatures
|
||||||
show:
|
show:
|
||||||
created_at: Creat
|
created_at: Creat
|
||||||
|
|||||||
@@ -1400,7 +1400,7 @@ en:
|
|||||||
new: New signature sheets
|
new: New signature sheets
|
||||||
new:
|
new:
|
||||||
title: New signature sheets
|
title: New signature sheets
|
||||||
document_numbers_note: "Write the numbers separated by commas (,)"
|
document_numbers_note: "Write the numbers separated by semicolons (;)"
|
||||||
submit: Create signature sheet
|
submit: Create signature sheet
|
||||||
show:
|
show:
|
||||||
created_at: Created
|
created_at: Created
|
||||||
|
|||||||
@@ -992,7 +992,7 @@ es-PE:
|
|||||||
new: Nueva hoja de firmas
|
new: Nueva hoja de firmas
|
||||||
new:
|
new:
|
||||||
title: Nueva hoja de firmas
|
title: Nueva hoja de firmas
|
||||||
document_numbers_note: "Introduce los números separados por comas (,)"
|
document_numbers_note: "Introduce los números separados por punto y coma (;)"
|
||||||
submit: Crear hoja de firmas
|
submit: Crear hoja de firmas
|
||||||
show:
|
show:
|
||||||
created_at: Creado
|
created_at: Creado
|
||||||
|
|||||||
@@ -1398,7 +1398,7 @@ es:
|
|||||||
new: Nueva hoja de firmas
|
new: Nueva hoja de firmas
|
||||||
new:
|
new:
|
||||||
title: Nueva hoja de firmas
|
title: Nueva hoja de firmas
|
||||||
document_numbers_note: "Introduce los números separados por comas (,)"
|
document_numbers_note: "Introduce los números separados por punto y coma (;)"
|
||||||
submit: Crear hoja de firmas
|
submit: Crear hoja de firmas
|
||||||
show:
|
show:
|
||||||
created_at: Creado
|
created_at: Creado
|
||||||
|
|||||||
@@ -1337,7 +1337,7 @@ fr:
|
|||||||
new: Nouvelle feuilles de signature
|
new: Nouvelle feuilles de signature
|
||||||
new:
|
new:
|
||||||
title: Nouvelle feuilles de signature
|
title: Nouvelle feuilles de signature
|
||||||
document_numbers_note: "Saisir les numéros séparés par des virgules (,)"
|
document_numbers_note: "Saisir les numéros séparés par des points-virgules (;)"
|
||||||
submit: Créer la feuille de signature
|
submit: Créer la feuille de signature
|
||||||
show:
|
show:
|
||||||
created_at: Créé le
|
created_at: Créé le
|
||||||
|
|||||||
@@ -1277,7 +1277,7 @@ gl:
|
|||||||
new: Nova folla de sinaturas
|
new: Nova folla de sinaturas
|
||||||
new:
|
new:
|
||||||
title: Nova folla de sinaturas
|
title: Nova folla de sinaturas
|
||||||
document_numbers_note: "Escribe os números separados por comas (,)"
|
document_numbers_note: "Escribe os números separados por puntos y comas (;)"
|
||||||
submit: Crear folla de sinaturas
|
submit: Crear folla de sinaturas
|
||||||
show:
|
show:
|
||||||
created_at: Creado
|
created_at: Creado
|
||||||
|
|||||||
@@ -1427,7 +1427,7 @@ he:
|
|||||||
new: דף חדש לחתימות
|
new: דף חדש לחתימות
|
||||||
new:
|
new:
|
||||||
title: דף חדש לחתימות
|
title: דף חדש לחתימות
|
||||||
document_numbers_note: "נא לכתוב את המספרים מופרדים באמצעות פסיקים (,)"
|
document_numbers_note: "רשום את המספרים המופרדים בנקודות פסיק (;)"
|
||||||
submit: יצירת דף לחתימות
|
submit: יצירת דף לחתימות
|
||||||
show:
|
show:
|
||||||
created_at: נוצר ב
|
created_at: נוצר ב
|
||||||
|
|||||||
@@ -1066,7 +1066,7 @@ id:
|
|||||||
new: Baru tanda tangan lembar
|
new: Baru tanda tangan lembar
|
||||||
new:
|
new:
|
||||||
title: Baru tanda tangan lembar
|
title: Baru tanda tangan lembar
|
||||||
document_numbers_note: "Menulis angka-angka yang dipisahkan oleh tanda koma (,)"
|
document_numbers_note: "Menulis angka-angka yang dipisahkan oleh titik koma (;)"
|
||||||
submit: Membuat tanda tangan lembar
|
submit: Membuat tanda tangan lembar
|
||||||
show:
|
show:
|
||||||
created_at: Dibuat
|
created_at: Dibuat
|
||||||
|
|||||||
@@ -1179,7 +1179,7 @@ it:
|
|||||||
new: Nuovo foglio di firma
|
new: Nuovo foglio di firma
|
||||||
new:
|
new:
|
||||||
title: Nuovi fogli firma
|
title: Nuovi fogli firma
|
||||||
document_numbers_note: "Con i numeri separati da virgole (,)"
|
document_numbers_note: "Con i numeri separati da punto e virgola (;)"
|
||||||
submit: Creare foglio di firma
|
submit: Creare foglio di firma
|
||||||
show:
|
show:
|
||||||
created_at: Creato
|
created_at: Creato
|
||||||
|
|||||||
@@ -1320,7 +1320,7 @@ nl:
|
|||||||
new: New signature sheets
|
new: New signature sheets
|
||||||
new:
|
new:
|
||||||
title: Niewe handtekeninglijst
|
title: Niewe handtekeninglijst
|
||||||
document_numbers_note: "Write the numbers separated by commas (,)"
|
document_numbers_note: "Write the numbers separated by semicolons (;)"
|
||||||
submit: Create signature sheet
|
submit: Create signature sheet
|
||||||
show:
|
show:
|
||||||
created_at: Aangemaakt
|
created_at: Aangemaakt
|
||||||
|
|||||||
@@ -1315,7 +1315,7 @@ pl:
|
|||||||
new: Nowe arkusze podpisów
|
new: Nowe arkusze podpisów
|
||||||
new:
|
new:
|
||||||
title: Nowe arkusze podpisów
|
title: Nowe arkusze podpisów
|
||||||
document_numbers_note: "Napisz liczby oddzielone przecinkami (,)"
|
document_numbers_note: "Napisz liczby oddzielone średnikami (;)"
|
||||||
submit: Utwórz arkusz podpisu
|
submit: Utwórz arkusz podpisu
|
||||||
show:
|
show:
|
||||||
created_at: Stworzony
|
created_at: Stworzony
|
||||||
|
|||||||
@@ -1315,7 +1315,7 @@ ru:
|
|||||||
new: Новые подписные листы
|
new: Новые подписные листы
|
||||||
new:
|
new:
|
||||||
title: Новые подписные листы
|
title: Новые подписные листы
|
||||||
document_numbers_note: "Впишите номера, разделенные запятыми (,)"
|
document_numbers_note: "Впишите номера, разделенные точкой с запятой (;)"
|
||||||
submit: Создать подписной лист
|
submit: Создать подписной лист
|
||||||
show:
|
show:
|
||||||
created_at: Создано
|
created_at: Создано
|
||||||
|
|||||||
@@ -947,7 +947,7 @@ sl:
|
|||||||
new: Novi podpisni listi
|
new: Novi podpisni listi
|
||||||
new:
|
new:
|
||||||
title: Novi podpisni listi
|
title: Novi podpisni listi
|
||||||
document_numbers_note: "Napiši številke in jih loči z vejico (,)"
|
document_numbers_note: "Napiši številke in jih loči s podpičjem (;)"
|
||||||
submit: Ustvair podpisni list
|
submit: Ustvair podpisni list
|
||||||
show:
|
show:
|
||||||
created_at: Ustvarjen
|
created_at: Ustvarjen
|
||||||
|
|||||||
@@ -1184,7 +1184,7 @@ so:
|
|||||||
new: Warqadaha Cusub ee Saxixyada
|
new: Warqadaha Cusub ee Saxixyada
|
||||||
new:
|
new:
|
||||||
title: Warqadaha Cusub ee Saxixyada
|
title: Warqadaha Cusub ee Saxixyada
|
||||||
document_numbers_note: "Qoor Lamaradaa oo ay ka socanyihiin qooyska(,)"
|
document_numbers_note: "Qoor Lamaradaa oo ay ka socanyihiin qooyska(;)"
|
||||||
submit: Saame Warqada saxiixa
|
submit: Saame Warqada saxiixa
|
||||||
show:
|
show:
|
||||||
created_at: Abuuray
|
created_at: Abuuray
|
||||||
|
|||||||
@@ -1186,7 +1186,7 @@ sq:
|
|||||||
new: Fletë të reja nënshkrimi
|
new: Fletë të reja nënshkrimi
|
||||||
new:
|
new:
|
||||||
title: Fletë të reja nënshkrimi
|
title: Fletë të reja nënshkrimi
|
||||||
document_numbers_note: "Shkruani numrat që dëshironi të ndahen me presje (,)"
|
document_numbers_note: "Shkruani numrat që dëshironi të ndahen me pikëpresje (;)"
|
||||||
submit: Krijo Fletë nënshkrimi
|
submit: Krijo Fletë nënshkrimi
|
||||||
show:
|
show:
|
||||||
created_at: Krijuar
|
created_at: Krijuar
|
||||||
|
|||||||
@@ -1230,7 +1230,7 @@ sv:
|
|||||||
new: Ny namninsamling
|
new: Ny namninsamling
|
||||||
new:
|
new:
|
||||||
title: Ny namninsamling
|
title: Ny namninsamling
|
||||||
document_numbers_note: "Fyll i siffrorna separerade med kommatecken (,)"
|
document_numbers_note: "Fyll i siffrorna separerade av semikolon (;)"
|
||||||
submit: Skapa namninsamling
|
submit: Skapa namninsamling
|
||||||
show:
|
show:
|
||||||
created_at: Skapad
|
created_at: Skapad
|
||||||
|
|||||||
@@ -1235,7 +1235,7 @@ val:
|
|||||||
new: Nou full de signatures
|
new: Nou full de signatures
|
||||||
new:
|
new:
|
||||||
title: Nou full de signatures
|
title: Nou full de signatures
|
||||||
document_numbers_note: "Escriu els números separats per comes (,)"
|
document_numbers_note: "Escriu els números separats per punt i coma (;)"
|
||||||
submit: Crear full de signatures
|
submit: Crear full de signatures
|
||||||
show:
|
show:
|
||||||
created_at: Creat
|
created_at: Creat
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ describe "Signature sheets" do
|
|||||||
|
|
||||||
select "Citizen proposal", from: "signature_sheet_signable_type"
|
select "Citizen proposal", from: "signature_sheet_signable_type"
|
||||||
fill_in "signature_sheet_signable_id", with: proposal.id
|
fill_in "signature_sheet_signable_id", with: proposal.id
|
||||||
fill_in "signature_sheet_required_fields_to_verify", with: "12345678Z, 1234567L, 99999999Z"
|
fill_in "signature_sheet_required_fields_to_verify", with: "12345678Z; 1234567L; 99999999Z"
|
||||||
click_button "Create signature sheet"
|
click_button "Create signature sheet"
|
||||||
|
|
||||||
expect(page).to have_content "Signature sheet created successfully"
|
expect(page).to have_content "Signature sheet created successfully"
|
||||||
@@ -61,7 +61,7 @@ describe "Signature sheets" do
|
|||||||
|
|
||||||
select "Investment", from: "signature_sheet_signable_type"
|
select "Investment", from: "signature_sheet_signable_type"
|
||||||
fill_in "signature_sheet_signable_id", with: investment.id
|
fill_in "signature_sheet_signable_id", with: investment.id
|
||||||
fill_in "signature_sheet_required_fields_to_verify", with: "12345678Z, 1234567L, 99999999Z"
|
fill_in "signature_sheet_required_fields_to_verify", with: "12345678Z; 1234567L; 99999999Z"
|
||||||
click_button "Create signature sheet"
|
click_button "Create signature sheet"
|
||||||
|
|
||||||
expect(page).to have_content "Signature sheet created successfully"
|
expect(page).to have_content "Signature sheet created successfully"
|
||||||
@@ -89,14 +89,14 @@ describe "Signature sheets" do
|
|||||||
user = Administrator.first.user
|
user = Administrator.first.user
|
||||||
signature_sheet = create(:signature_sheet,
|
signature_sheet = create(:signature_sheet,
|
||||||
signable: proposal,
|
signable: proposal,
|
||||||
required_fields_to_verify: "12345678Z, 123A, 123B",
|
required_fields_to_verify: "12345678Z; 123A; 123B",
|
||||||
author: user)
|
author: user)
|
||||||
signature_sheet.verify_signatures
|
signature_sheet.verify_signatures
|
||||||
|
|
||||||
visit admin_signature_sheet_path(signature_sheet)
|
visit admin_signature_sheet_path(signature_sheet)
|
||||||
|
|
||||||
expect(page).to have_content "Citizen proposal #{proposal.id}"
|
expect(page).to have_content "Citizen proposal #{proposal.id}"
|
||||||
expect(page).to have_content "12345678Z, 123A, 123B"
|
expect(page).to have_content "12345678Z; 123A; 123B"
|
||||||
expect(page).to have_content signature_sheet.created_at.strftime("%B %d, %Y %H:%M")
|
expect(page).to have_content signature_sheet.created_at.strftime("%B %d, %Y %H:%M")
|
||||||
expect(page).to have_content user.name
|
expect(page).to have_content user.name
|
||||||
|
|
||||||
|
|||||||
@@ -57,10 +57,16 @@ describe SignatureSheet do
|
|||||||
|
|
||||||
describe "#verify_signatures" do
|
describe "#verify_signatures" do
|
||||||
it "creates signatures for each document number" do
|
it "creates signatures for each document number" do
|
||||||
signature_sheet = create(:signature_sheet, required_fields_to_verify: "123A, 456B")
|
signature_sheet = create(:signature_sheet, required_fields_to_verify: "123A; 456B")
|
||||||
signature_sheet.verify_signatures
|
signature_sheet.verify_signatures
|
||||||
|
|
||||||
expect(Signature.count).to eq(2)
|
expect(Signature.count).to eq(2)
|
||||||
|
expect(Signature.first.document_number).to eq("123A")
|
||||||
|
expect(Signature.first.date_of_birth).to eq(nil)
|
||||||
|
expect(Signature.first.postal_code).to eq(nil)
|
||||||
|
expect(Signature.last.document_number).to eq("456B")
|
||||||
|
expect(Signature.last.date_of_birth).to eq(nil)
|
||||||
|
expect(Signature.last.postal_code).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "marks signature sheet as processed" do
|
it "marks signature sheet as processed" do
|
||||||
@@ -71,17 +77,25 @@ describe SignatureSheet do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#parsed_document_numbers" do
|
describe "#parsed_required_fields_to_verify" do
|
||||||
it "returns an array after spliting document numbers by newlines or commas" do
|
it "returns an array after spliting document numbers by semicolons" do
|
||||||
signature_sheet.document_numbers = "123A\r\n456B\n789C,123B"
|
signature_sheet.required_fields_to_verify = "123A\r\n;456B;\n789C;123B"
|
||||||
|
|
||||||
expect(signature_sheet.parsed_document_numbers).to eq(["123A", "456B", "789C", "123B"])
|
expect(signature_sheet.parsed_required_fields_to_verify_groups).to eq([["123A"], ["456B"], ["789C"], ["123B"]])
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns an array after spliting all required_fields_to_verify by semicolons" do
|
||||||
|
required_fields_to_verify = "123A\r\n, 01/01/1980\r\n, 28001\r\n; 456B\n, 01/02/1980\n, 28002\n; 789C, 01/03/1980"
|
||||||
|
# signature_sheet.required_fields_to_verify = "123A\r\n456B\n789C;123B"
|
||||||
|
signature_sheet.required_fields_to_verify = required_fields_to_verify
|
||||||
|
|
||||||
|
expect(signature_sheet.parsed_required_fields_to_verify_groups).to eq([["123A", "01/01/1980", "28001"], ["456B", "01/02/1980", "28002"], ["789C", "01/03/1980"]])
|
||||||
end
|
end
|
||||||
|
|
||||||
it "strips spaces between number and letter" do
|
it "strips spaces between number and letter" do
|
||||||
signature_sheet.document_numbers = "123 A\n456 B \n 789C"
|
signature_sheet.required_fields_to_verify = "123 A, 01/01/1980, 28001;\n456 B , 01/02/1980, 28002;\n 789C ,01/03/1980, 28 003"
|
||||||
|
|
||||||
expect(signature_sheet.parsed_document_numbers).to eq(["123A", "456B", "789C"])
|
expect(signature_sheet.parsed_required_fields_to_verify_groups).to eq([["123A", "01/01/1980", "28001"], ["456B", "01/02/1980", "28002"], ["789C", "01/03/1980", "28003"]])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user