2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-03-01 17:05:39 -05:00
require 'email'
describe Enum do
2016-01-08 16:23:52 +05:30
let ( :array_enum ) { Enum . new ( :jake , :finn , :princess_bubblegum , :peppermint_butler ) }
let ( :hash_enum ) { Enum . new ( jake : 1 , finn : 2 , princess_bubblegum : 3 , peppermint_butler : 4 ) }
2013-03-01 17:05:39 -05:00
2013-03-02 10:40:32 +03:00
describe " .[] " do
it " looks up a number by symbol " do
2016-01-08 16:23:52 +05:30
expect ( array_enum [ :princess_bubblegum ] ) . to eq ( 3 )
expect ( hash_enum [ :princess_bubblegum ] ) . to eq ( 3 )
2013-03-01 17:05:39 -05:00
end
2013-03-02 10:40:32 +03:00
it " looks up a symbol by number " do
2016-01-08 16:23:52 +05:30
expect ( array_enum [ 2 ] ) . to eq ( :finn )
expect ( hash_enum [ 2 ] ) . to eq ( :finn )
2013-03-01 17:05:39 -05:00
end
end
2013-03-02 10:40:32 +03:00
describe " .valid? " do
it " returns true if a key exists " do
2016-01-08 16:23:52 +05:30
expect ( array_enum . valid? ( :finn ) ) . to eq ( true )
expect ( hash_enum . valid? ( :finn ) ) . to eq ( true )
2013-03-01 17:05:39 -05:00
end
2013-03-02 10:40:32 +03:00
it " returns false if a key does not exist " do
2016-01-08 16:23:52 +05:30
expect ( array_enum . valid? ( :obama ) ) . to eq ( false )
expect ( hash_enum . valid? ( :obama ) ) . to eq ( false )
2013-03-01 17:05:39 -05:00
end
end
2013-03-02 10:40:32 +03:00
describe " .only " do
2013-03-01 17:05:39 -05:00
it " returns only the values we ask for " do
2016-01-08 16:23:52 +05:30
expect ( array_enum . only ( :jake , :princess_bubblegum ) ) . to eq ( { jake : 1 , princess_bubblegum : 3 } )
expect ( hash_enum . only ( :jake , :princess_bubblegum ) ) . to eq ( { jake : 1 , princess_bubblegum : 3 } )
2013-03-01 17:05:39 -05:00
end
end
2013-03-02 10:40:32 +03:00
describe " .except " do
it " returns everything but the values we ask to delete " do
2016-01-08 16:23:52 +05:30
expect ( array_enum . except ( :jake , :princess_bubblegum ) ) . to eq ( { finn : 2 , peppermint_butler : 4 } )
expect ( hash_enum . except ( :jake , :princess_bubblegum ) ) . to eq ( { finn : 2 , peppermint_butler : 4 } )
end
end
context " allows to specify number of first enum member " do
it " number of first enum member should be 0 " do
start_enum = Enum . new ( :jake , :finn , :princess_bubblegum , :peppermint_butler , start : 0 )
expect ( start_enum [ :princess_bubblegum ] ) . to eq ( 2 )
2013-03-01 17:05:39 -05:00
end
end
end