From 02a5234bde78b259353883c87f48e222a1dbe44f Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Mon, 29 Jul 2019 12:18:02 +0200 Subject: [PATCH] lib: remove FileSizeValidator It was only used by the PieceJustificative model. --- app/lib/file_size_validator.rb | 94 ---------------------------- spec/lib/file_size_validator_spec.rb | 48 -------------- 2 files changed, 142 deletions(-) delete mode 100644 app/lib/file_size_validator.rb delete mode 100644 spec/lib/file_size_validator_spec.rb diff --git a/app/lib/file_size_validator.rb b/app/lib/file_size_validator.rb deleted file mode 100644 index 83fc09774..000000000 --- a/app/lib/file_size_validator.rb +++ /dev/null @@ -1,94 +0,0 @@ -# Source: https://github.com/gitlabhq/gitlabhq/blob/master/lib/file_size_validator.rb -class FileSizeValidator < ActiveModel::EachValidator - MESSAGES = { is: :wrong_size, minimum: :size_too_small, maximum: :size_too_big }.freeze - CHECKS = { is: :==, minimum: :>=, maximum: :<= }.freeze - - DEFAULT_TOKENIZER = lambda { |value| value.split(//) } - RESERVED_OPTIONS = [:minimum, :maximum, :within, :is, :tokenizer, :too_short, :too_long] - - def initialize(options) - range = options.delete(:in) || options.delete(:within) - - if range.present? - if !range.is_a?(Range) - raise ArgumentError, ":in and :within must be a Range" - end - - options[:minimum], options[:maximum] = range.begin, range.end - - if range.exclude_end? - options[:maximum] -= 1 - end - end - - super - end - - def check_validity! - keys = CHECKS.keys & options.keys - - if keys.empty? - raise ArgumentError, 'Range unspecified. Specify the :within, :maximum, :minimum, or :is option.' - end - - keys.each do |key| - value = options[key] - - if !(value.is_a?(Integer) && value >= 0) && !value.is_a?(Symbol) - raise ArgumentError, ":#{key} must be a nonnegative Integer or symbol" - end - end - end - - def validate_each(record, attribute, value) - if !value.is_a?(CarrierWave::Uploader::Base) - raise(ArgumentError, "A CarrierWave::Uploader::Base object was expected") - end - - if value.is_a?(String) - value = (options[:tokenizer] || DEFAULT_TOKENIZER).call(value) - end - - CHECKS.each do |key, validity_check| - if !check_value = options[key] - next - end - - check_value = - case check_value - when Integer - check_value - when Symbol - record.send(check_value) - end - - if key == :maximum - value ||= [] - end - - value_size = value.size - if value_size.send(validity_check, check_value) - next - end - - errors_options = options.except(*RESERVED_OPTIONS) - errors_options[:file_size] = help.number_to_human_size check_value - - default_message = options[MESSAGES[key]] - if default_message - errors_options[:message] ||= default_message - end - - record.errors.add(attribute, MESSAGES[key], errors_options) - end - end - - def help - Helper.instance - end - - class Helper - include Singleton - include ActionView::Helpers::NumberHelper - end -end diff --git a/spec/lib/file_size_validator_spec.rb b/spec/lib/file_size_validator_spec.rb deleted file mode 100644 index a28b6393c..000000000 --- a/spec/lib/file_size_validator_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'spec_helper' - -describe FileSizeValidator, lib: true do - let(:validator) { FileSizeValidator.new(options) } - let(:attachment) { PieceJustificativeUploader.new } - let(:note) { create(:piece_justificative, :contrat) } - - describe 'options uses an integer' do - let(:options) { { maximum: 10, attributes: { content: attachment } } } - - it 'attachment exceeds maximum limit' do - allow(attachment).to receive(:size) { 100 } - validator.validate_each(note, :content, attachment) - expect(note.errors).to have_key(:content) - end - - it 'attachment under maximum limit' do - allow(attachment).to receive(:size) { 1 } - validator.validate_each(note, :content, attachment) - expect(note.errors).not_to have_key(:content) - end - end - - describe 'options uses a symbol' do - let(:options) do - { - maximum: :test, - attributes: { content: attachment } - } - end - - before do - allow(note).to receive(:test) { 10 } - end - - it 'attachment exceeds maximum limit' do - allow(attachment).to receive(:size) { 100 } - validator.validate_each(note, :content, attachment) - expect(note.errors).to have_key(:content) - end - - it 'attachment under maximum limit' do - allow(attachment).to receive(:size) { 1 } - validator.validate_each(note, :content, attachment) - expect(note.errors).not_to have_key(:content) - end - end -end