class LeapSalesforce::Generator::SoqlObjects
Creates SoqlObjects
and related modules
Constants
- FACTORY_FOLDER
- SOQL_OBJECT_FOLDER
Public Instance Methods
create_all()
click to toggle source
Generate soql_object and it's related modules, factories
# File lib/leap_salesforce/generator/soql_objects.rb, line 55 def create_all puts "Generating Soql objects for #{LeapSalesforce.soql_objects.count} objects" LeapSalesforce.soql_objects.each do |soql_object| # Soql object is now special class # extract_info_from_object soql_object @soql_object = soql_object @field_name_file = "#{soql_object.reference}_field_names" generate_soql_object generate_field_module generate_factory end `rubocop -A #{SOQL_OBJECT_FOLDER} --enable-pending-cops` `rubocop -A #{FACTORY_FOLDER} --enable-pending-cops` end
ensure_class_defined()
click to toggle source
Create temporary class for building API requests on
# File lib/leap_salesforce/generator/soql_objects.rb, line 19 def ensure_class_defined @soql_class = Object.const_get @soql_object.class_name rescue NameError @soql_class = Object.const_set @soql_object.class_name, Class.new(SoqlData) @soql_class.instance_variable_set(:@soql_object_name, @soql_object.backend_name) end
generate_factory()
click to toggle source
Generate factory for mass generating objects using FactoryBot
# File lib/leap_salesforce/generator/soql_objects.rb, line 47 def generate_factory @default_fields, @other_fields = filter_fields content = read_template 'factory.rb.erb', binding file = File.join(FACTORY_FOLDER, "#{@soql_object.reference}.rb") generate_file file, content, overwrite: false end
generate_field_module()
click to toggle source
Generate module with fields for Soql
Object
# File lib/leap_salesforce/generator/soql_objects.rb, line 40 def generate_field_module field_content = read_template 'soql_object_field_names.rb.erb', binding field_file = File.join(SOQL_OBJECT_FOLDER, "#{@field_name_file}.rb") generate_file field_file, field_content end
generate_soql_object()
click to toggle source
Generate Soql
object file
# File lib/leap_salesforce/generator/soql_objects.rb, line 27 def generate_soql_object ensure_class_defined desc = @soql_class.description unless desc.soql_fields? raise LeapSalesforce::SetupError, "Error producing Soql data for '#{@soql_class}', soql table " \ " '#{@soql_object.backend_name}'. Error message: '#{desc.error_message}'" end content = read_template 'soql_object.rb.erb', binding file = File.join(SOQL_OBJECT_FOLDER, "#{@soql_object.reference}.rb") generate_file file, content, overwrite: false end
Private Instance Methods
filter_fields()
click to toggle source
@return [Array] Returns Array with first list being default fields for Factory and the 2nd being
all other fields
# File lib/leap_salesforce/generator/soql_objects.rb, line 73 def filter_fields all_fields = @soql_class.fields if Default::Fields.respond_to? @soql_object.reference all_fields.partition { |field| Default::Fields.send(@soql_object.reference).include? field['name'] } else [[], all_fields] end end