You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.2 KiB
71 lines
2.2 KiB
require 'spec_helper' |
|
require 'squib/args/scale_box' |
|
|
|
describe Squib::Args::ScaleBox do |
|
subject(:box) { Squib::Args::ScaleBox.new } |
|
|
|
context 'unit conversion' do |
|
it 'converts units on all args' do |
|
args = { x: ['1in', '2in'], y: 300, width: '1in', height: '1in' } |
|
box.load!(args, expand_by: 2) |
|
expect(box).to have_attributes( |
|
x: [300, 600], |
|
y: [300, 300], |
|
width: [300, 300], |
|
height: [300, 300], |
|
) |
|
end |
|
end |
|
|
|
context 'validation' do |
|
it 'replaces with deck width and height' do |
|
args = { width: :deck, height: :deck } |
|
deck = OpenStruct.new(width: 123, height: 456) |
|
box = Squib::Args::Box.new(deck) |
|
box.load!(args, expand_by: 1) |
|
expect(box).to have_attributes(width: [123], height: [456]) |
|
end |
|
|
|
it 'allows :native' do |
|
args = { width: :native, height: :native } |
|
box.load!(args, expand_by: 1) |
|
expect(box).to have_attributes(width: [:native], height: [:native]) |
|
end |
|
|
|
it 'allows native to be a string' do |
|
args = { width: 'native' } |
|
box.load!(args, expand_by: 1) |
|
expect(box).to have_attributes(width: [:native], height: [:native]) |
|
end |
|
|
|
it 'allows :scale on width if height has to_f' do |
|
args = { width: :scale, height: 75 } |
|
box.load!(args, expand_by: 1) |
|
expect(box).to have_attributes(width: [:scale], height: [75]) |
|
end |
|
|
|
it 'allows :scale on width if height has to_f' do |
|
args = { width: 75, height: :scale } |
|
box.load!(args, expand_by: 1) |
|
expect(box).to have_attributes(width: [75], height: [:scale]) |
|
end |
|
|
|
it 'disallows both :scale' do |
|
args = { width: :scale, height: :scale } |
|
expect { box.load!(args, expand_by: 1) }.to raise_error('if width is :scale, height must be a number') |
|
end |
|
|
|
it 'disallows non-to_f on width' do |
|
args = { width: :foo } |
|
expect { box.load!(args, expand_by: 1) }.to raise_error('width must be a number, :scale, :native, or :deck') |
|
end |
|
|
|
it 'disallows non-to_f on height' do |
|
args = { height: :foo } |
|
expect { box.load!(args, expand_by: 1) }.to raise_error('height must be a number, :scale, :native, or :deck') |
|
end |
|
|
|
end |
|
|
|
|
|
end
|
|
|