class MeducationSDK::Mocker

Public Class Methods

mock!() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 3
def self.mock!
  RESOURCES.each do |resource|
    new(resource).mock!
  end
end
new(resource_name) click to toggle source
# File lib/meducation_sdk/mocker.rb, line 15
def initialize(resource_name)
  @resource_name = resource_name
end
unmock!() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 9
def self.unmock!
  RESOURCES.each do |resource|
    new(resource).unmock!
  end
end

Public Instance Methods

mock!() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 19
def mock!
  return if mock_module.const_defined?(original_class_name)

  resource = "#{mock_module_name}::#{resource_class_name}".constantize
  mock = "#{mock_module_name}::#{mock_class_name}".constantize

  mock_module.const_set(original_class_name, resource)
  mock_module.send(:remove_const, resource_class_name)
  mock_module.const_set(resource_class_name, mock)
  mock_module.send(:remove_const, mock_class_name)
end
unmock!() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 31
def unmock!
  return unless mock_module.const_defined?(original_class_name)

  original = "#{mock_module_name}::#{original_class_name}".constantize
  resource = "#{mock_module_name}::#{resource_class_name}".constantize

  mock_module.const_set(mock_class_name, resource)
  mock_module.send(:remove_const, resource_class_name)
  mock_module.const_set(resource_class_name, original)
  mock_module.send(:remove_const, original_class_name)
end

Private Instance Methods

mock_class_name() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 48
def mock_class_name
   @mock_class_name ||= "#{@resource_name}_mock".camelize.split("::").last
end
mock_module() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 56
def mock_module
  @mock_module ||= mock_module_name.constantize
end
mock_module_name() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 60
def mock_module_name
  @mock_module_name ||= begin
    parts = @resource_name.camelize.split("::")
    if parts.size == 1
      "MeducationSDK"
    else
      parts.pop
      "MeducationSDK::#{parts.join("::")}"
    end
  end
end
original_class_name() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 52
def original_class_name
  @original_class_name ||= "#{@resource_name}_original".camelize.split("::").last
end
resource_class_name() click to toggle source
# File lib/meducation_sdk/mocker.rb, line 44
def resource_class_name
  @resource_class_name ||= @resource_name.camelize.split("::").last
end