module Shoegaze::Datastore

Public Instance Methods

datastore(name, &block) click to toggle source

Defines both a TopModel-inherited class and a factory in the mock namespace

@param name [Symbol] upcased name of the datastore to create (example: :User) @param block [Block] FactoryBot factory implementation expressed in a block @return [Class] the created datastore class

example:

datastore :User do
  id 123
  name "Karlita"
end
# File lib/shoegaze/datastore.rb, line 18
def datastore(name, &block)
  klass = create_datastore_class(name)

  FactoryBot.define do
    factory klass do
      self.instance_eval(&block)
    end
  end

  klass
end

Private Instance Methods

create_datastore_class(name) click to toggle source
# File lib/shoegaze/datastore.rb, line 32
def create_datastore_class(name)
  self.const_set(name, Class.new(Shoegaze::Model))
end