class ReferenceBook::Setup::LockedBookSpec

Public Class Methods

new(keys_array) click to toggle source
# File lib/reference_book/setup/locked_book_spec.rb, line 4
def initialize(keys_array)
  if keys_array.any?
    @book_keys = symbolize_and_sort(keys_array)
  else
    raise ReferenceBook::LockedBookSpecError, "A LockedBookSpec must have at least one key"
  end
end

Public Instance Methods

verify_keys!(other_keys) click to toggle source
# File lib/reference_book/setup/locked_book_spec.rb, line 14
def verify_keys!(other_keys)
  if @book_keys == other_keys.sort
    true
  else
    missing    = @book_keys - other_keys
    unexpected = other_keys - @book_keys

    message = error_message_with(missing, unexpected)
    raise ReferenceBook::BookDefinitionError, message
  end
end

Private Instance Methods

error_message_with(missing, unexpected) click to toggle source
# File lib/reference_book/setup/locked_book_spec.rb, line 38
def error_message_with(missing, unexpected)
  msg = "Couldn't create Book"
  if missing.any?
    msg << ", missing keys: [#{missing.join(', ')}]"
  end

  if unexpected.any?
    msg << ", unexpected keys: [#{unexpected.join(', ')}]"
  end

  msg
end
symbolize_and_sort(keys) click to toggle source
# File lib/reference_book/setup/locked_book_spec.rb, line 32
def symbolize_and_sort(keys)
  keys.map(&:to_sym).sort
end