Module: Cistern::Client::ClassMethods

Defined in:
lib/cistern/client.rb

Instance Method Summary collapse

Instance Method Details

#collectionsObject



227
228
229
# File 'lib/cistern/client.rb', line 227

def collections
  @collections ||= []
end

#mock!Object



215
216
217
# File 'lib/cistern/client.rb', line 215

def mock!
  @mocking = true
end

#mocking?Boolean

Returns:

  • (Boolean)


219
220
221
# File 'lib/cistern/client.rb', line 219

def mocking?
  @mocking
end

#modelsObject



231
232
233
# File 'lib/cistern/client.rb', line 231

def models
  @_models ||= []
end

#new(options = {}) ⇒ Object



309
310
311
312
313
314
# File 'lib/cistern/client.rb', line 309

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

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

#recognized_argumentsObject



239
240
241
# File 'lib/cistern/client.rb', line 239

def recognized_arguments
  @_recognized_arguments ||= []
end

#recognizes(*args) ⇒ Object



255
256
257
# File 'lib/cistern/client.rb', line 255

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

#requestsObject



247
248
249
# File 'lib/cistern/client.rb', line 247

def requests
  @_requests ||= []
end

#required_argumentsObject



243
244
245
# File 'lib/cistern/client.rb', line 243

def required_arguments
  @_required_arguments ||= []
end

#requires(*args) ⇒ Object



251
252
253
# File 'lib/cistern/client.rb', line 251

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

#reset!Object



316
317
318
# File 'lib/cistern/client.rb', line 316

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

#setupObject



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
306
307
# 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

#singularitiesObject



235
236
237
# File 'lib/cistern/client.rb', line 235

def singularities
  @_singularities ||= []
end

#unmock!Object



223
224
225
# File 'lib/cistern/client.rb', line 223

def unmock!
  @mocking = false
end

#validate_options(options = {}) ⇒ Object



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
# 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