module LeapSalesforce::Default::Factory

Defaults for various objects within a Factory

Public Class Methods

set(value, use_quotes: nil) click to toggle source

@return [String] String to set Factory field to value specified

# File lib/leap_salesforce/generator/default.rb, line 9
def set(value, use_quotes: nil)
  if use_quotes
    "#{@field['label'].unused_ruby_name} { '#{value}' }"
  else
    "#{@field['label'].unused_ruby_name} { #{value} }"
  end
end
value_for(field, class_name) click to toggle source

@return [String] Default value for Factory

# File lib/leap_salesforce/generator/default.rb, line 18
def value_for(field, class_name)
  @field = field
  case field['type']
  when 'string' then set("Faker::Lorem.paragraph_by_chars(number: #{field['length']})")
  when 'id' then set('Best to not hard code this', use_quotes: true)
  when 'boolean' then set('true')
  when 'picklist' then set("#{class_name}::#{field['label'].to_class_name}.sample")
  when 'reference'
    return set(%{User.find(CreatedDate: "<#{0.days.ago}").id}) if field['name'] == 'OwnerId'

    soql_obj = LeapSalesforce.soql_objects.find { |so| so.backend_name == field['relationshipName'] }&.reference
    if soql_obj
      "association :#{@field['label'].unused_ruby_name}, factory: :#{soql_obj}"
    else
      "# Please add #{field['relationshipName']} to .leap_salesforce.yml (if it's a table) to create association for #{field['relationshipName']}"
    end
  else
    set("Content depending on #{field['type']}", use_quotes: true)
  end
end