Module: Cistern::Client::ClassMethods

Defined in:
lib/cistern/client.rb

Instance Method Summary collapse

Instance Method Details

#collectionsObject



225
226
227
# File 'lib/cistern/client.rb', line 225

def collections
  @collections ||= []
end

#mock!Object



213
214
215
# File 'lib/cistern/client.rb', line 213

def mock!
  @mocking = true
end

#mocking?Boolean

Returns:

  • (Boolean)


217
218
219
# File 'lib/cistern/client.rb', line 217

def mocking?
  @mocking
end

#modelsObject



229
230
231
# File 'lib/cistern/client.rb', line 229

def models
  @_models ||= []
end

#new(options = {}) ⇒ Object



307
308
309
310
311
312
# File 'lib/cistern/client.rb', line 307

def new(options = {})
  setup
  validate_options(options)

  const_get(self.mocking? ? :Mock : :Real).new(options)
end

#recognized_argumentsObject



237
238
239
# File 'lib/cistern/client.rb', line 237

def recognized_arguments
  @_recognized_arguments ||= []
end

#recognizes(*args) ⇒ Object



253
254
255
# File 'lib/cistern/client.rb', line 253

def recognizes(*args)
  recognized_arguments.concat(args)
end

#requestsObject



245
246
247
# File 'lib/cistern/client.rb', line 245

def requests
  @_requests ||= []
end

#required_argumentsObject



241
242
243
# File 'lib/cistern/client.rb', line 241

def required_arguments
  @_required_arguments ||= []
end

#requires(*args) ⇒ Object



249
250
251
# File 'lib/cistern/client.rb', line 249

def requires(*args)
  required_arguments.concat(args)
end

#reset!Object



314
315
316
# File 'lib/cistern/client.rb', line 314

def reset!
  const_get(:Mock).reset!
end

#setupObject



273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
# File 'lib/cistern/client.rb', line 273

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

#singularitiesObject



233
234
235
# File 'lib/cistern/client.rb', line 233

def singularities
  @_singularities ||= []
end

#unmock!Object



221
222
223
# File 'lib/cistern/client.rb', line 221

def unmock!
  @mocking = false
end

#validate_options(options = {}) ⇒ Object



257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
# File 'lib/cistern/client.rb', line 257

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