2015-10-11 10:41:23 +01:00
require 'rails_helper'
2014-06-12 18:03:03 -04:00
describe IntegerSettingValidator do
describe '#valid_value?' do
shared_examples " for all IntegerSettingValidator opts " do
it " returns false for blank values " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( '' ) ) . to eq ( false )
expect ( validator . valid_value? ( nil ) ) . to eq ( false )
2014-06-12 18:03:03 -04:00
end
it " returns false if value is not a valid integer " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 'two' ) ) . to eq ( false )
2014-06-12 18:03:03 -04:00
end
end
context " without min and max " do
subject ( :validator ) { described_class . new }
include_examples " for all IntegerSettingValidator opts "
it " returns true if value is a valid integer " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 1 ) ) . to eq ( true )
expect ( validator . valid_value? ( - 1 ) ) . to eq ( true )
expect ( validator . valid_value? ( '1' ) ) . to eq ( true )
expect ( validator . valid_value? ( '-1' ) ) . to eq ( true )
2014-06-12 18:03:03 -04:00
end
end
context " with min " do
subject ( :validator ) { described_class . new ( min : 2 ) }
include_examples " for all IntegerSettingValidator opts "
it " returns true if value is equal to min " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 2 ) ) . to eq ( true )
expect ( validator . valid_value? ( '2' ) ) . to eq ( true )
2014-06-12 18:03:03 -04:00
end
it " returns true if value is greater than min " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 3 ) ) . to eq ( true )
expect ( validator . valid_value? ( '3' ) ) . to eq ( true )
2014-06-12 18:03:03 -04:00
end
it " returns false if value is less than min " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 1 ) ) . to eq ( false )
expect ( validator . valid_value? ( '1' ) ) . to eq ( false )
2014-06-12 18:03:03 -04:00
end
end
context " with max " do
subject ( :validator ) { described_class . new ( max : 3 ) }
include_examples " for all IntegerSettingValidator opts "
it " returns true if value is equal to max " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 3 ) ) . to eq ( true )
expect ( validator . valid_value? ( '3' ) ) . to eq ( true )
2014-06-12 18:03:03 -04:00
end
it " returns true if value is less than max " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 2 ) ) . to eq ( true )
expect ( validator . valid_value? ( '2' ) ) . to eq ( true )
2014-06-12 18:03:03 -04:00
end
it " returns false if value is greater than min " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 4 ) ) . to eq ( false )
expect ( validator . valid_value? ( '4' ) ) . to eq ( false )
2014-06-12 18:03:03 -04:00
end
end
context " with min and max " do
subject ( :validator ) { described_class . new ( min : - 1 , max : 3 ) }
include_examples " for all IntegerSettingValidator opts "
it " returns true if value is in range " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( - 1 ) ) . to eq ( true )
expect ( validator . valid_value? ( 0 ) ) . to eq ( true )
expect ( validator . valid_value? ( 3 ) ) . to eq ( true )
2014-06-12 18:03:03 -04:00
end
it " returns false if value is out of range " do
2015-01-09 13:34:37 -03:00
expect ( validator . valid_value? ( 4 ) ) . to eq ( false )
expect ( validator . valid_value? ( - 2 ) ) . to eq ( false )
2014-06-12 18:03:03 -04:00
end
end
end
end