class ViewModel::TestHelpers::ARVMBuilder::Spec

def initialize(schema:, model:, viewmodel:)

def initialize(schema:, model:, viewmodel:)
  super(schema, model, viewmodel)
end

def merge(schema: nil, model: nil, viewmodel: nil)

def merge(schema: nil, model: nil, viewmodel: nil)
  this_schema    = self.schema
  this_model     = self.model
  this_viewmodel = self.viewmodel
  Spec.new(
    schema: ->(t) do
      this_schema.(t)
      schema&.(t)
    end,
    model: ->(m) do
      m.class_eval(&this_model)
      model.try { |b| m.class_eval(&b) }
    end,
    viewmodel: ->(v) do
      v.class_eval(&this_viewmodel)
      viewmodel.try { |b| v.class_eval(&b) }
    end)
end