module Cistern::Client::ClassMethods

Public Instance Methods

collections() click to toggle source
# File lib/cistern/client.rb, line 227
def collections
  @collections ||= []
end
mock!() click to toggle source
# File lib/cistern/client.rb, line 215
def mock!
  @mocking = true
end
mocking?() click to toggle source
# File lib/cistern/client.rb, line 219
def mocking?
  @mocking
end
models() click to toggle source
# File lib/cistern/client.rb, line 231
def models
  @_models ||= []
end
new(options = {}) click to toggle source
# File lib/cistern/client.rb, line 309
def new(options = {})
  setup
  validate_options(options)

  const_get(self.mocking? ? :Mock : :Real).new(options)
end
recognized_arguments() click to toggle source
# File lib/cistern/client.rb, line 239
def recognized_arguments
  @_recognized_arguments ||= []
end
recognizes(*args) click to toggle source
# File lib/cistern/client.rb, line 255
def recognizes(*args)
  recognized_arguments.concat(args)
end
requests() click to toggle source
# File lib/cistern/client.rb, line 247
def requests
  @_requests ||= []
end
required_arguments() click to toggle source
# File lib/cistern/client.rb, line 243
def required_arguments
  @_required_arguments ||= []
end
requires(*args) click to toggle source
# File lib/cistern/client.rb, line 251
def requires(*args)
  required_arguments.concat(args)
end
reset!() click to toggle source
# File lib/cistern/client.rb, line 316
def reset!
  const_get(:Mock).reset!
end
setup() click to toggle source
# File lib/cistern/client.rb, line 275
def setup
  return true if @_setup

  requests.each do |klass|
    name = klass.cistern_method ||
           Cistern::String.camelize(Cistern::String.demodulize(klass.name))

    Cistern::Request.cistern_request(self, klass, name)
  end

  collections.each do |klass|
    name = klass.cistern_method ||
           Cistern::String.underscore(klass.name.gsub("#{self.name}::", '').gsub('::', ''))

    Cistern::Collection.cistern_collection(self, klass, name)
  end

  models.each do |klass|
    name = klass.cistern_method ||
           Cistern::String.underscore(klass.name.gsub("#{self.name}::", '').gsub('::', ''))

    Cistern::Model.cistern_model(self, klass, name)
  end

  singularities.each do |klass|
    name = klass.cistern_method ||
           Cistern::String.underscore(klass.name.gsub("#{self.name}::", '').gsub('::', ''))

    Cistern::Singular.cistern_singular(self, klass, name)
  end

  @_setup = true
end
singularities() click to toggle source
# File lib/cistern/client.rb, line 235
def singularities
  @_singularities ||= []
end
unmock!() click to toggle source
# File lib/cistern/client.rb, line 223
def unmock!
  @mocking = false
end
validate_options(options = {}) click to toggle source
# File lib/cistern/client.rb, line 259
def validate_options(options = {})
  required_options = Cistern::Hash.slice(options, *required_arguments)

  missing_required_options = required_arguments - required_options.keys

  unless missing_required_options.empty?
    fail "Missing required options: #{missing_required_options.inspect}"
  end

  unrecognized_options = options.keys - (required_arguments + recognized_arguments)

  unless unrecognized_options.empty?
    fail "Unrecognized options: #{unrecognized_options.inspect}"
  end
end