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:
taitus
2019-05-14 11:34:06 +02:00
committed by Javi Martín
parent 5d68e1a43d
commit 0bf88abcf1
21 changed files with 52 additions and 32 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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: נוצר ב

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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: Создано

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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