Module: Cistern::Client::ClassMethods

Defined in:
lib/cistern/client.rb

Instance Method Summary collapse

Instance Method Details

#collectionsObject



110
111
112
# File 'lib/cistern/client.rb', line 110

def collections
  @collections ||= []
end

#mock!Object



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

def mock!;    @mocking = true; end

#mocking?Boolean

Returns:

  • (Boolean)


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

def mocking?; @mocking; end

#modelsObject



114
115
116
# File 'lib/cistern/client.rb', line 114

def models
  @_models ||= []
end

#new(options = {}) ⇒ Object



181
182
183
184
185
186
# File 'lib/cistern/client.rb', line 181

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

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

#recognized_argumentsObject



118
119
120
# File 'lib/cistern/client.rb', line 118

def recognized_arguments
  @_recognized_arguments ||= []
end

#recognizes(*args) ⇒ Object



134
135
136
# File 'lib/cistern/client.rb', line 134

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

#requestsObject



126
127
128
# File 'lib/cistern/client.rb', line 126

def requests
  @_requests ||= []
end

#required_argumentsObject



122
123
124
# File 'lib/cistern/client.rb', line 122

def required_arguments
  @_required_arguments ||= []
end

#requires(*args) ⇒ Object



130
131
132
# File 'lib/cistern/client.rb', line 130

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

#reset!Object



188
189
190
# File 'lib/cistern/client.rb', line 188

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

#setupObject



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/cistern/client.rb', line 154

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



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

def unmock!;  @mocking = false; end

#validate_options(options = {}) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/cistern/client.rb', line 138

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