dossier: prepare validations to piece_justificative champs

We can't yet enable the validations, because of an issue that will
(hopefully) be solved with Rails 6.

See https://github.com/betagouv/demarches-simplifiees.fr/issues/4926
This commit is contained in:
Pierre de La Morinerie 2020-03-26 16:28:24 +00:00
parent f3c210e875
commit fe13043efd
4 changed files with 30 additions and 2 deletions

View file

@ -1,7 +1,8 @@
class Champs::PieceJustificativeChamp < Champ
PIECE_JUSTIFICATIVE_FILE_MAX_SIZE = 200.megabytes
MAX_SIZE = 200.megabytes
PIECE_JUSTIFICATIVE_FILE_ACCEPTED_FORMATS = [
ACCEPTED_FORMATS = [
"text/plain",
"application/pdf",
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
@ -16,6 +17,13 @@ class Champs::PieceJustificativeChamp < Champ
"image/jpeg"
]
# TODO: once we're running on Rails 6, re-enable this validation.
# See https://github.com/betagouv/demarches-simplifiees.fr/issues/4926
#
# validates :piece_justificative_file,
# content_type: ACCEPTED_FORMATS,
# size: { less_than: MAX_SIZE }
def main_value_name
:piece_justificative_file
end

View file

@ -0,0 +1,4 @@
fr:
errors:
messages:
content_type_invalid: nest pas dun type accepté

View file

@ -3,3 +3,4 @@ fr:
attributes:
champ:
value: La valeur du champ
piece_justificative_file: La pièce justificative

View file

@ -1,4 +1,19 @@
require 'active_storage_validations/matchers'
describe Champs::PieceJustificativeChamp do
include ActiveStorageValidations::Matchers
# TODO: once we're running on Rails 6, re-enable the PieceJustificativeChamp validator,
# and re-enable this spec.
#
# See https://github.com/betagouv/demarches-simplifiees.fr/issues/4926
describe "validations", pending: true do
subject(:champ_pj) { build(:champ_piece_justificative) }
it { is_expected.to validate_size_of(:piece_justificative_file).less_than(Champs::PieceJustificativeChamp::MAX_SIZE) }
it { is_expected.to validate_content_type_of(:piece_justificative_file).allowing(Champs::PieceJustificativeChamp::ACCEPTED_FORMATS) }
end
describe '#for_api' do
let(:champ_pj) { create(:champ_piece_justificative) }
let(:metadata) { champ_pj.piece_justificative_file.blob.metadata }