Rename BlobViewer max_size to overridable_max_size and absolute_max_size to max_size

This commit is contained in:
Douwe Maan 2017-05-15 10:03:34 -05:00
parent acffc06213
commit b0a163208c
9 changed files with 50 additions and 42 deletions

View file

@ -226,7 +226,7 @@ module BlobHelper
def open_raw_blob_button(blob)
return if blob.empty?
if blob.raw_binary? || blob.stored_externally?
icon = icon('download')
title = 'Download'
@ -242,9 +242,9 @@ module BlobHelper
case viewer.render_error
when :too_large
max_size =
if viewer.absolutely_too_large?
viewer.absolute_max_size
elsif viewer.too_large?
if viewer.can_override_max_size?
viewer.overridable_max_size
else
viewer.max_size
end
"it is larger than #{number_to_human_size(max_size)}"

View file

@ -5,8 +5,8 @@ module BlobViewer
included do
self.loading_partial_name = 'loading_auxiliary'
self.type = :auxiliary
self.overridable_max_size = 100.kilobytes
self.max_size = 100.kilobytes
self.absolute_max_size = 100.kilobytes
end
end
end

View file

@ -2,7 +2,7 @@ module BlobViewer
class Base
PARTIAL_PATH_PREFIX = 'projects/blob/viewers'.freeze
class_attribute :partial_name, :loading_partial_name, :type, :extensions, :file_types, :load_async, :binary, :switcher_icon, :switcher_title, :max_size, :absolute_max_size
class_attribute :partial_name, :loading_partial_name, :type, :extensions, :file_types, :load_async, :binary, :switcher_icon, :switcher_title, :overridable_max_size, :max_size
self.loading_partial_name = 'loading'
@ -59,16 +59,24 @@ module BlobViewer
self.class.load_async? && render_error.nil?
end
def too_large?
def exceeds_overridable_max_size?
overridable_max_size && blob.raw_size > overridable_max_size
end
def exceeds_max_size?
max_size && blob.raw_size > max_size
end
def absolutely_too_large?
absolute_max_size && blob.raw_size > absolute_max_size
def can_override_max_size?
exceeds_overridable_max_size? && !exceeds_max_size?
end
def can_override_max_size?
too_large? && !absolutely_too_large?
def too_large?
if override_max_size
exceeds_max_size?
else
exceeds_overridable_max_size?
end
end
# This method is used on the server side to check whether we can attempt to
@ -83,7 +91,7 @@ module BlobViewer
# binary from `blob_raw_url` and does its own format validation and error
# rendering, especially for potentially large binary formats.
def render_error
if override_max_size ? absolutely_too_large? : too_large?
if too_large?
:too_large
end
end

View file

@ -4,8 +4,8 @@ module BlobViewer
included do
self.load_async = false
self.max_size = 10.megabytes
self.absolute_max_size = 50.megabytes
self.overridable_max_size = 10.megabytes
self.max_size = 50.megabytes
end
end
end

View file

@ -4,8 +4,8 @@ module BlobViewer
included do
self.load_async = true
self.max_size = 2.megabytes
self.absolute_max_size = 5.megabytes
self.overridable_max_size = 2.megabytes
self.max_size = 5.megabytes
end
def prepare!

View file

@ -5,7 +5,7 @@ module BlobViewer
self.partial_name = 'text'
self.binary = false
self.max_size = 1.megabyte
self.absolute_max_size = 10.megabytes
self.overridable_max_size = 1.megabyte
self.max_size = 10.megabytes
end
end

View file

@ -118,8 +118,8 @@ describe BlobHelper do
Class.new(BlobViewer::Base) do
include BlobViewer::ServerSide
self.max_size = 1.megabyte
self.absolute_max_size = 5.megabytes
self.overridable_max_size = 1.megabyte
self.max_size = 5.megabytes
self.type = :rich
end
end

View file

@ -11,8 +11,8 @@ describe BlobViewer::Base, model: true do
self.extensions = %w(pdf)
self.binary = true
self.max_size = 1.megabyte
self.absolute_max_size = 5.megabytes
self.overridable_max_size = 1.megabyte
self.max_size = 5.megabytes
end
end
@ -69,45 +69,45 @@ describe BlobViewer::Base, model: true do
end
end
describe '#too_large?' do
context 'when the blob size is larger than the max size' do
describe '#exceeds_overridable_max_size?' do
context 'when the blob size is larger than the overridable max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 2.megabytes) }
it 'returns true' do
expect(viewer.too_large?).to be_truthy
expect(viewer.exceeds_overridable_max_size?).to be_truthy
end
end
context 'when the blob size is smaller than the max size' do
context 'when the blob size is smaller than the overridable max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 10.kilobytes) }
it 'returns false' do
expect(viewer.too_large?).to be_falsey
expect(viewer.exceeds_overridable_max_size?).to be_falsey
end
end
end
describe '#absolutely_too_large?' do
context 'when the blob size is larger than the absolute max size' do
describe '#exceeds_max_size?' do
context 'when the blob size is larger than the max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 10.megabytes) }
it 'returns true' do
expect(viewer.absolutely_too_large?).to be_truthy
expect(viewer.exceeds_max_size?).to be_truthy
end
end
context 'when the blob size is smaller than the absolute max size' do
context 'when the blob size is smaller than the max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 2.megabytes) }
it 'returns false' do
expect(viewer.absolutely_too_large?).to be_falsey
expect(viewer.exceeds_max_size?).to be_falsey
end
end
end
describe '#can_override_max_size?' do
context 'when the blob size is larger than the max size' do
context 'when the blob size is larger than the absolute max size' do
context 'when the blob size is larger than the overridable max size' do
context 'when the blob size is larger than the max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 10.megabytes) }
it 'returns false' do
@ -115,7 +115,7 @@ describe BlobViewer::Base, model: true do
end
end
context 'when the blob size is smaller than the absolute max size' do
context 'when the blob size is smaller than the max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 2.megabytes) }
it 'returns true' do
@ -124,7 +124,7 @@ describe BlobViewer::Base, model: true do
end
end
context 'when the blob size is smaller than the max size' do
context 'when the blob size is smaller than the overridable max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 10.kilobytes) }
it 'returns false' do
@ -139,7 +139,7 @@ describe BlobViewer::Base, model: true do
viewer.override_max_size = true
end
context 'when the blob size is larger than the absolute max size' do
context 'when the blob size is larger than the max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 10.megabytes) }
it 'returns :too_large' do
@ -147,7 +147,7 @@ describe BlobViewer::Base, model: true do
end
end
context 'when the blob size is smaller than the absolute max size' do
context 'when the blob size is smaller than the max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 2.megabytes) }
it 'returns nil' do
@ -157,7 +157,7 @@ describe BlobViewer::Base, model: true do
end
context 'when the max size is not overridden' do
context 'when the blob size is larger than the max size' do
context 'when the blob size is larger than the overridable max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 2.megabytes) }
it 'returns :too_large' do
@ -165,7 +165,7 @@ describe BlobViewer::Base, model: true do
end
end
context 'when the blob size is smaller than the max size' do
context 'when the blob size is smaller than the overridable max size' do
let(:blob) { fake_blob(path: 'file.pdf', size: 10.kilobytes) }
it 'returns nil' do

View file

@ -10,8 +10,8 @@ describe 'projects/blob/_viewer.html.haml', :view do
include BlobViewer::Rich
self.partial_name = 'text'
self.max_size = 1.megabyte
self.absolute_max_size = 5.megabytes
self.overridable_max_size = 1.megabyte
self.max_size = 5.megabytes
self.load_async = true
end
end