Module: Cistern::Client::ClassMethods

Defined in:
lib/cistern/client.rb

Instance Method Summary collapse

Instance Method Details

#collectionsObject



149
150
151
# File 'lib/cistern/client.rb', line 149

def collections
  @collections ||= []
end

#mock!Object



145
# File 'lib/cistern/client.rb', line 145

def mock!;    @mocking = true; end

#mocking?Boolean

Returns:

  • (Boolean)


146
# File 'lib/cistern/client.rb', line 146

def mocking?; @mocking; end

#modelsObject



153
154
155
# File 'lib/cistern/client.rb', line 153

def models
  @_models ||= []
end

#new(options = {}) ⇒ Object



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

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

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

#recognized_argumentsObject



157
158
159
# File 'lib/cistern/client.rb', line 157

def recognized_arguments
  @_recognized_arguments ||= []
end

#recognizes(*args) ⇒ Object



173
174
175
# File 'lib/cistern/client.rb', line 173

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

#requestsObject



165
166
167
# File 'lib/cistern/client.rb', line 165

def requests
  @_requests ||= []
end

#required_argumentsObject



161
162
163
# File 'lib/cistern/client.rb', line 161

def required_arguments
  @_required_arguments ||= []
end

#requires(*args) ⇒ Object



169
170
171
# File 'lib/cistern/client.rb', line 169

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

#reset!Object



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

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

#setupObject



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
# File 'lib/cistern/client.rb', line 193

def setup
  return true if @_setup

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

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

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

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

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

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

  @_setup = true
end

#unmock!Object



147
# File 'lib/cistern/client.rb', line 147

def unmock!;  @mocking = false; end

#validate_options(options = {}) ⇒ Object



177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/cistern/client.rb', line 177

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?
    raise "Missing required options: #{missing_required_options.inspect}"
  end

  unrecognized_options = options.keys - (required_arguments + recognized_arguments)

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